From 6ee0dc8c7df5486fd7c130a1f70712cfdd813bc4 Mon Sep 17 00:00:00 2001 From: tobi <31960611+tsmethurst@users.noreply.github.com> Date: Thu, 16 Feb 2023 14:18:53 +0100 Subject: [bugfix] Set cache-control max-age dynamically for s3 (#1510) * [bugfix] set cache-control max-age dynamically for s3 * woops * double whoops * time until, thank you linter, bless you, you're the best, no matter what kim says * aa --- internal/api/fileserver/servefile.go | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'internal/api/fileserver') diff --git a/internal/api/fileserver/servefile.go b/internal/api/fileserver/servefile.go index df3c83fe7..ec70ef9ae 100644 --- a/internal/api/fileserver/servefile.go +++ b/internal/api/fileserver/servefile.go @@ -24,6 +24,7 @@ import ( "net/http" "strconv" "strings" + "time" "codeberg.org/gruf/go-fastcopy" "github.com/gin-gonic/gin" @@ -89,6 +90,10 @@ func (m *Module) ServeFile(c *gin.Context) { if content.URL != nil { // This is a non-local, non-proxied S3 file we're redirecting to. + // Derive the max-age value from how long the link has left until + // it expires. + maxAge := int(time.Until(content.URL.Expiry).Seconds()) + c.Header("Cache-Control", "private,max-age="+strconv.Itoa(maxAge)) c.Redirect(http.StatusFound, content.URL.String()) return } -- cgit v1.2.3