为什么发送ETag头不足以使特定资源的浏览器缓存无效?为什么每个人都建议实际上更改资源的URL/文件名,以迫使浏览器重新下载文件?如果浏览器已经用特定的ETag缓存了文件,并且在服务器上修改了ETag,这还不够吗?
我发现以下几页很有帮助:
MDN的ETag页面中的这一行分享了关键点(重点是添加的):
如果服务器确定客户机的ETag值(在if-none-match
请求头中)是当前的,那么它将使用304
(未修改)HTTP状态代码和空正文进行响应,这表明客户机可以使用缓存的条目。否则,服务器将使用200
HTTP状态代码和新的响应正文进行响应。
其他资源:
日期:1998年10月30日星期五格林尼治时间13:19:41 服务器:Apache/1.3.3(Unix) 缓存控制:max-age=3600,必须重新验证 有效期:1998年10月30日星期五格林尼治时间14:19:41 最后修改:1998年6月29日星期一02:28:12格林尼治时间 ETAG:“3E86-410-3596FBBC”
我了解到,使用服务工作者进行脱机缓存与浏览器缓存类似。如果是这样的话,那么为什么您希望使用服务工作者进行此缓存?浏览器缓存将检查文件是否被修改,然后从缓存中提供服务,通过服务工作者,我们将从代码中处理相同的事情。默认情况下,浏览器具有该功能,那么为什么更喜欢服务人员呢?
推荐: http://www.cnblogs.com/skynet/archive/2012/11/28/2792503.html 304 Not Modified
本文向大家介绍HTML5的应用程序缓存与浏览器缓存有什么不同?相关面试题,主要包含被问及HTML5的应用程序缓存与浏览器缓存有什么不同?时的应答技巧和注意事项,需要的朋友参考一下 应用程序缓存是 HTML5 的重要特性之一,提供了离线使用的功能,让应用程序可以获取本地的网站内容,例如 HTML、CSS、图片以及 JavaScript。这个特性可以提高网站性能,它的实现借助于 manifest 文件
我有一个使用assetic的Symfony2应用程序。一切都很好,只是在localhost中,浏览器不会缓存我的资产。 任何想法,为什么以下资产没有得到缓存响应304和毫秒,而是与200响应,需要大约15秒... 响应头 Accep-Ranges bytes Cache-Control max-age=604800 Connection Keve-Alive Content-Encode gzip
gRPC基于HTTP/2,浏览器广泛支持HTTP/2(假设)。因此,我觉得从浏览器使用gRPC应该没有问题。 然而,很明显有一个问题。协议grpc web是不同的,因为“由于浏览器限制”而存在。还有许多博客文章描述了为让gRPC从浏览器工作而部署的复杂技术堆栈。 我忽略了实际的问题——为什么gRPC不只是在浏览器上工作?