immutable

`immutable` 指令设置静态资源的缓存行为,启用 `immutable` 缓存控制属性以提升性能。

语法immutable on | off;
默认值off
上下文http, server, location
参数flag

说明

immutable 指令在 NGINX 中用于增强静态资源的缓存策略,尤其适用于通过版本化 URL 实现缓存失效(cache-busting)的方法的 Web 框架。当启用此指令时,服务器对静态资源的请求会返回包含 Cache-Control 指令并设置为 immutable 的 HTTP 头,以及一个远期的 Expires 头。这告诉浏览器和中间缓存该资源不会改变,因此可以有效地缓存,而无需在每次请求时重新验证该资源。

immutable 指令可用于多个上下文,包括 httpserverlocation,并接受一个用于启用或禁用指令的单一参数标志。通过设置 immutable on;,NGINX 会将响应配置为同时包含 max-age 指令(设置为 1 年)和 immutable 属性,从而更好地利用缓存内容。该指令还确保 Expires 头仅在 HTTP/1.0 请求中传输,因为较新的 HTTP 版本通过使用 Cache-Control 更高效地处理缓存。

将资源标记为 immutable 后,NGINX 允许浏览器无限期地缓存这些资源,从而优化静态内容的交付性能。对于像单页应用和那些频繁更新资源但不改变其 URL 的框架来说,这一点尤为有用。此外,可以将 stale-while-revalidatestale-if-error 值附加到 Cache-Control 头上,以在特定浏览器条件下减轻缓存未命中的影响,从而使缓存机制更为稳健。

配置示例

http {
    server {
        location /static/ {
            immutable on;
        }
    }
}

确保底层静态资源确实不会更改,因为将它们标记为 immutable 如果在不更改 URL 的情况下更新,可能导致提供过时的内容。还应验证浏览器对 immutable 指令的支持,因为不同浏览器的行为可能有所不同。请注意,旧版浏览器可能不识别 immutable 指令,从而导致回退行为。

如果与其他缓存指令一起使用,确保它们与 immutable 不冲突,以避免意外的缓存问题。

← 返回所有指令