Skip to content

Commit

Permalink
fix(gateway): Cache-Control header for UnixFS directories
Browse files Browse the repository at this point in the history
  • Loading branch information
acejam committed Jul 26, 2024
1 parent 2816b71 commit 0383467
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 2 deletions.
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ The following emojis are used to highlight certain changes:

- `bitswap/server` minor memory use and performance improvements
- `bitswap` unify logger names to use uniform format bitswap/path/pkgname
- `gateway` now always returns meaningful cache-control headers for generated HTML listings of UnixFS directories

### Removed

Expand Down
9 changes: 7 additions & 2 deletions gateway/handler_unixfs_dir.go
Original file line number Diff line number Diff line change
Expand Up @@ -136,9 +136,14 @@ func (i *handler) serveDirectory(ctx context.Context, w http.ResponseWriter, r *
dirEtag := getDirListingEtag(resolvedPath.RootCid())
w.Header().Set("Etag", dirEtag)

// Add TTL if known.
// Set Cache-Control
if rq.ttl > 0 {
w.Header().Set("Cache-Control", fmt.Sprintf("public, max-age=%d", int(rq.ttl.Seconds())))
// Use known TTL from IPNS Record or DNSLink TXT Record
w.Header().Set("Cache-Control", fmt.Sprintf("public, max-age=%d, stale-while-revalidate=2678400", int(rq.ttl.Seconds())))
} else {
// Cache for 1 week, serve stale cache for up to a month
// (style of generated HTML may change, should not be cached forever)
w.Header().Set("Cache-Control", "public, max-age=604800, stale-while-revalidate=2678400")
}

if r.Method == http.MethodHead {
Expand Down

0 comments on commit 0383467

Please sign in to comment.