在 SvelteKit 中设置静态资源缓存 TTL

Mik*_*maa 10 svelte vite sveltekit

/static使用默认的 SvelteKit 应用程序模板提供字体和 CSS 文件。我正在使用 SvelteKit Node.js 适配器。

文件的默认缓存生存时间 (TTL) 似乎为 4 小时/static。我不确定这是否是由 SvelteKit/Vite 本身设置的,或者像 CloudFlare 这样的中间件是否会做出这样的假设。

我如何在 SvelteKit 中覆盖它?我认为这需要在 Vite 中以某种方式进行配置,以便/static文件是具有正确 HTTP 缓存标头的服务器。由于字体文件不会更改,我想将它们设置为不可变,并避免用户网络浏览器再次重新下载文件。

在此输入图像描述

Mik*_*maa 2

标头设置硬编码在@sveltejs/adapter-node中。

但是,最新@sveltejs/adapter-node@next版本包含带有cache-control.

/tmp # wget -S "http://localhost:3000/fonts.css"

--2021-12-31 00:35:00--  http://localhost:3000/fonts.css
Resolving localhost (localhost)... 127.0.0.1
Connecting to localhost (localhost)|127.0.0.1|:3000... connected.
HTTP request sent, awaiting response...
  HTTP/1.1 200 OK
  Vary: Accept-Encoding
  Content-Length: 2249
  Content-Type: text/css
  Last-Modified: Thu, 30 Dec 2021 23:34:41 GMT
  ETag: W/"2249-1640907281407"
  Cache-Control: public,max-age=31536000,immutable
  Date: Thu, 30 Dec 2021 23:35:00 GMT
  Connection: keep-alive
  Keep-Alive: timeout=5
Length: 2249 (2.2K) [text/css]
Run Code Online (Sandbox Code Playgroud)