我发现我们可以使用http头文件,如下所示:
Cache-Control: no-cache, max-age=86400
Etag: "asdfasdfasdfa"确保资源被缓存,并且如果服务器上的文件没有更改,则不会再次从服务器获取资源。如果文件没有改变,服务器发送304响应,如果文件改变,服务器发送200作为响应。
这就是为什么建议在其文件名中嵌入文件的指纹或版本号,例如style.x234dff.css,以确保如果服务器上的资源发生某些更改,则会提供最新的文件
发布于 2015-01-28 20:00:15
它提供了一个很好的模式,以便在需要时检索最新的文件时实现最大的效率。例如,让我们举一个例子。

因此,对于样式表/style.3da37df.css,中间缓存和浏览器将收到如下响应
200 OK
Content-Length: 1024
Cache-Control: max-age=31536000
Etag: x234dff因此,缓存/浏览器将响应解释为相同的URL,从现在开始,它们可以使用本地副本一年。因此,对于相同的URL,他们甚至不需要请求来查看etag是否已更改。
例如,在上面的交换中,服务器返回1024字节的响应,指示客户端将其缓存长达1年,并提供验证令牌(“x234dff”),该令牌可在响应过期之后使用,以检查资源是否已被修改。
因此,当响应过期时使用etag。因此,在接下来的一年里,他们可以安全地使用本地副本,而不需要任何检查。但是,可能需要强制中间缓存和浏览器强制再次获取样式。这可以通过在文件名中添加指纹来完成,因为每当URL发生更改(由于名称更改而更改)时,都会再次获取资源。因为主页显示Cachec-control: no-cache,即不缓存主页,所以HTML源代码中的这些URL更改总是被浏览器检测到。
那么,我们如何才能两全其美:客户端缓存和快速更新?简单地说,我们可以更改资源的URL,并在其内容发生更改时强制用户下载新的响应。通常,这是通过在文件名中嵌入文件的指纹或版本号来实现的,例如style.x234dff.css。
ETag、缓存控制和唯一URL的组合允许我们提供所有领域中最好的东西:长生命周期的过期时间、对可以缓存响应的位置的控制以及按需更新。
https://stackoverflow.com/questions/28165590
复制相似问题