浏览器会使用不同的ETag缓存页面吗?

时间:2012-02-22 23:25:40

标签: html http caching nginx http-headers

我不太了解缓存如何工作,或者对托管服务器的nginx服务器有很多控制权。但是,我确实有一个我需要进行更改的实时网站,所以非常感谢您的建议。

目前我有以下三个文件:

index.html
my.js
my.css

正在使用以下标题提供所有文件(在我的浏览器上):

Date:Wed, 22 Feb 2012 23:17:49 GMT
ETag:"b2c84d1-7551-4b995b0c89c0"
Last-Modified:Wed, 22 Feb 2012 23:14:34 GMT
Server:nginx

没有任何其他与缓存相关的标头。鉴于上述情况,如果我只是用新版本替换文件,我可以假设用户'浏览器会知道不使用缓存版本吗? (我假设如果我替换文件,ETag将会改变。)

我希望避免的情况是,用户的浏览器会下载index.html的新版本,但会继续引用my.js的缓存版本,因为该&{1}} #39;可能会破坏事物。我还想知道我是否可以依赖用户查看该网站的较新版本,或者某些用户是否会继续看到缓存版本。

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

浏览器会发送If-Modified-Since:和(如果您有最近的浏览器)If-None-Match:标头,第一个引用Last-Modified:标头,后者包含ETag标头}。如果修改日期比Last-Modified标头更新,则服务器将发送新文件。 ETag如何更改将取决于您的服务器,但在大多数情况下,这将是文件内容的散列。

因此,请确保文件内容的更改和修改日期都是最新的(例如touch /var/www/your-file.js)。