尽管缓存控件尚未过期,客户端仍在请求资产事件

问题描述 投票:1回答:1

我有一个简单的Node服务器,它将Cache-Control max-age设置为1200秒,并且客户端请求图像。即使没有经过1200秒,如果我从服务器更改图像并刷新页面,图像也会再次下载(即使经过1200秒也没有)。它应该从缓存中读取直到过期。

这里是响应头:

enter image description here

为什么会这样?

node.js http-caching max-age
1个回答
1
投票

[当您告诉浏览器进行缓存时,响应头包含一个称为Last-Modified的验证器。当重新加载浏览器时,对于GET或HEAD请求,可以将其包含在If-Modified-Since请求中的服务器请求中。如果该项没有更改,这将导致服务器返回304

所以听起来好像事情正在按预期进行。您更改文件的事实导致服务器说“是的,此文件已更改,因此不应使用缓存。这是最新的文件”,因为Last-Modified值不匹配。

[如果要避免这种情况并且即使文件发生更改也要依靠高速缓存超时,则可以更改服务器以确保这些文件的ETagLast-Modified值永不更改。但是我建议让它以这种方式运行,并允许新文件更改在缓存中代替。

请参见this tutorial以获取更多详细信息。

© www.soinside.com 2019 - 2024. All rights reserved.