File size: 787 Bytes
4bbfe8b
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
import { LOCALE_HEADER } from "../lib/language"

const statsPageCacheControl = "public, max-age=60, s-maxage=300, stale-while-revalidate=86400"

export function setStatsPageCacheHeaders(headers: Headers | undefined) {
  if (!headers) return

  headers.set("Cache-Control", statsPageCacheControl)
  appendVary(headers, "Accept-Language", "Cookie", LOCALE_HEADER)
}

function appendVary(headers: Headers, ...values: string[]) {
  const existing = headers
    .get("vary")
    ?.split(",")
    .map((value) => value.trim())
    .filter(Boolean)

  headers.set(
    "vary",
    values
      .reduce(
        (result, value) =>
          result.some((item) => item.toLowerCase() === value.toLowerCase()) ? result : [...result, value],
        existing ?? [],
      )
      .join(", "),
  )
}