在NGINX `location`指令中`expires -1`是什么意思?

uplii1fm  于 2023-05-28  发布在  Nginx
关注(0)|答案(3)|浏览(953)

在下面的示例location中,-1对于expires意味着什么?这是否意味着“永不过期”或“永不缓存”?

# cache.appcache, your document html and data
location ~* \.(?:manifest|appcache|html?|xml|json)$ {
  expires -1;
  access_log logs/static.log;
}

https://github.com/h5bp/server-configs-nginx/blob/b935688c2b/h5bp/location/expires.conf

anhgbhbe

anhgbhbe1#

根据nginx手册,该指令将ExpiresCache-Control HTTP头添加到响应中。
-1表示这些头被设置为:
Expires: * 当前时间减1秒 *
Cache-Control: no-cache
因此,总的来说,它指示浏览器不要缓存文档。

lf3rwulv

lf3rwulv2#

如果使用expires -1,则意味着这些页面永远不会被缓存。expire指令指示浏览器在一段时间后(或在某个时间)使文件缓存过期。如果给定负值,则不缓存。

whhtz7ly

whhtz7ly3#

现有的两个答案都不是严格正确的。设置expires: -1;确实会让nginx添加Cache-Control: no-cache HTTP头。但这并没有禁用缓存。相反,这使得任何缓存的版本立即“过期”,要求客户端(浏览器)每次重新验证缓存(如果有的话)。
例如,如果客户端已经缓存了资源的版本,则有义务通过向服务器进行请求来进行验证,该请求可以包括If-None-Match和/或If-Modified-Since报头,在这种情况下,如果缓存的资源仍然是最新的,则服务器可以用304 Not Modified进行回复。

相关问题