use*_*428 19 caching google-chrome http if-modified-since
我有一个包含许多小图像(图标)的页面.与chrome一起使用时,每次重新加载页面时,chrome都会使用if-modified-since标头从服务器请求每个图标.
所有图标都配有expires和max-age标头.Firefox从其缓存中加载图像.
为什么Chrome会这样做,我该如何预防?
谢谢
Pet*_*rta 14
你检查过请求标题了吗?
"'Cache-Control'总是设置为'max-age = 0',无论你按Enter,f5还是ctrl + f5.除非你启动Chrome并输入网址并按回车键."
http://techblog.tilllate.com/2008/11/14/clientside-cache-control/
Rya*_*ohr 13
使用chrome,无论您是刷新页面还是仅仅访问它,都很重要.
刷新时,chrome将为每个文件ping服务器,无论它们是否已被缓存.如果文件尚未修改,您应该看到304 Not Modified响应.如果文件已被修改,您将看到200 OK响应.
如果不刷新,缓存的文件将具有200 OK状态,但如果您查看网络面板的大小/内容列,您将看到(来自缓存).
使用Chrome检查器的快速实验表明,这仅在重新加载页面时发生,而不是在正常加载页面时发生.Chrome只是试图刷新其缓存.想想看-如果你设置Expires和Max-Age几十年如一日,你问的浏览器缓存该资源和永不检查,看它是否被更新?它尽可能地缓存资源,但是当需要刷新页面时,它希望确保整个页面被刷新.其他浏览器肯定也会这样做(尽管有些人可以选择等待刷新前的小时数).
借助现代浏览器和服务器,刷新大量图标的速度不会像您想象的那么慢 - 请求通过流水线操作来消除多个往返延迟,并且If-Modified-Since标头的整个目的是允许服务器比较时间戳和返回"未修改"状态代码.这将发生在页面需要的每个资源上,但浏览器将能够立即发出所有请求并验证它们都没有更改.
也就是说,您可以采取一些措施来简化这一过程:
在Chrome的检查器中,使用资源选项卡查看它们的加载方式.如果没有请求标头,则直接从缓存加载资源.如果您看到304 Not Modified,资源已刷新,但不需要再次下载.如果你看到200 OK,它再次被下载.
在Chrome的检查器中,使用"审核"选项卡查看其对资源可缓存性的看法,以防某些缓存标头不是最佳.
所有这些If-Modified-Since请求和304响应都可以相加,即使它们只包含标题.将您的图像组合成精灵以减少请求数量.
| 归档时间: | 
 | 
| 查看次数: | 14853 次 | 
| 最近记录: |