缓存
Deno DeployEA 内置了一个 CDN,可以缓存您应用程序的响应。这提升了以下内容的性能:
- 静态资源(图片、CSS、JavaScript 文件)
- 不频繁变化的 API 响应和服务器渲染页面
缓存默认对所有应用启用,但只有带有合适缓存头的响应才会被实际缓存。
Deno DeployEA 与 Next.js 等流行框架集成,自动优化像增量静态再生(ISR)这样的功能的缓存。
CDN 缓存与版本和上下文绑定。当您部署新版本时,缓存会自动失效,确保用户始终看到最新版本的应用。注意,如果 Cache-Control 头允许,浏览器缓存仍可能提供较旧内容。
缓存资源 Jump to heading
要缓存资源,请在响应中设置 Cache-Control 头。此标准 HTTP 头指示浏览器和 CDN 如何缓存您的内容。
支持的缓存指令 Jump to heading
Deno DeployEA 支持以下缓存指令:
| 指令 | 描述 |
|---|---|
max-age |
响应被 CDN 和浏览器认为是新鲜的最大时间(秒)。过期后,响应被视为陈旧,需要与服务器重新验证。 |
s-maxage |
响应被共享缓存(仅限 CDN,不包括浏览器)认为是新鲜的最大时间(秒)。过期后,响应需要与服务器重新验证。 |
stale-while-revalidate |
在获取新鲜响应的后台过程中,可以提供陈旧响应的最大时间(秒)。 |
stale-if-error |
当服务器返回错误时,可以提供陈旧响应的最大时间(秒)。 |
immutable |
表示响应永远不会改变,允许无限期缓存。适用于内容哈希的静态资源。 |
no-store |
禁止缓存响应。适用于绝不应缓存的动态内容。 |
no-cache |
在从缓存提供响应前需重新向服务器进行验证。适用于频繁变化但可利用条件请求的内容。 |
其他缓存头 Jump to heading
-
Vary:指定哪些请求头应当包含在缓存键中,基于这些请求头创建独立缓存版本。 -
Expires:为响应设置绝对过期时间(作为max-age的替代)。适用于不会变化的文件,如图片或 CSS 文件。 -
no-store:响应不应被缓存。适用于不应缓存的动态响应,如 API 响应或服务器渲染的页面。 -
no-cache:响应在从缓存提供前应向服务器重新验证。适用于可能经常变化的动态响应。
Vary 头可用来指定哪些请求头应作为请求的缓存键的一部分。
Expires 头可用来指定响应的绝对过期时间。这是 max-age 指令的另一种选择。