在我的网站www.johnshammas.com上,它可以在所有浏览器中完美运行。除了......在Chrome上浏览过以前版本的任何人都会使用该版本,直到他们清空缓存为止。什么会导致网站返回“未修改”的标题,而实际上它已被大量修改?
答案 0 :(得分:2)
如果返回304 Not Modified
响应,那是因为之前服务器发送的回复带有ETag
或Last-Modified
标题。
稍后,浏览器将此值作为ETag
或If-Modified-Since
标头发送。服务器识别ETag或日期,以便自浏览器上次请求资源以来资源没有改变。
所以它返回了304
。
如果您不熟悉这些或其他缓存标头,我建议您对它们进行一些研究。关于这些是什么以及如何使用它们有很多很棒的教程。
答案 1 :(得分:0)
一些可能的解决方案就是这样......
否1(永久)
No 2(半永久性)
No 3(一次性)
No 4(一次性)
答案 2 :(得分:0)
问题是Chrome需要在Cache-Control`标头中有must-revalidate
才能重新检查文件以查看是否需要重新获取文件。
推荐以下响应标题:
Cache-Control: must-validate
这告诉Chrome检查服务器,看看是否有更新的文件。如果有更新的文件,它将在响应中收到。如果没有,它将收到304响应,并确保缓存中的那个是最新的。
如果您没有设置此标头,那么在没有任何其他设置使文件无效的情况下,Chrome将从不检查服务器以查看是否有更新的版本。
这是一个blog post,可以进一步讨论这个问题。