文件缓存,虽然有的时候我们不想让文件进行缓存,因为我们修改完文件后不能及时的让文件更新,存在缓存的问题,但是使用缓存可以减少网络的请求,提高页面的加载速度。这里只介绍利用缓存进行对页面加载的优化,方法有很多,以后在更新
Html文件的Head中的缓存设置
<meta http-equiv="pragma" content="no-cache" />
<meta http-equiv="Cache-Control" content="no-cache" />
<meta http-equiv="expires" content="Wed, 26 Feb 1997 08:21:57 GMT" />
浏览器中关于Cache的3属性:
Cache-Control
:设置相对过期时间, max-age
指明以秒为单位的缓存时间. 若对静态资源只缓存一次, 可以设置max-
age
的值为315360000000 (一万年).
Http协议的cache-control的常见取值及其组合释义:
no-cache
: 数据内容不能被缓存, 每次请求都重新访问服务器, 若有max-age
, 则缓存期间不访问服务器. no-store
:
不仅不能缓存, 连暂存也不可以(即: 临时文件夹中不能暂存该资源) private
(默认): 只能在浏览器中缓存, 只有在第一次请求的时候才访问服务器,
若有max-age
, 则缓存期间不访问服务器. public
: 可以被任何缓存区缓存, 如: 浏览器、服务器、代理服务器等 max-age
:
相对过期时间, 即以秒为单位的缓存时间. no-cache, private
: 打开新窗口时候重新访问服务器, 若设置max-age
,
则缓存期间不访问服务器. private
, 正数的max-age
: 后退时候不会访问服务器 no-cache
, 正数的max-age
:
后退时会访问服务器 点击刷新: 无论如何都会访问服务器. Expires
:设置以分钟为单位的绝对过期时间, 优先级比Cache-Control
低,
同时设置Expires
和Cache-Control
则后者生效. Last-Modified
:该资源的最后修改时间, 在浏览器下一次请求资源时,
浏览器将先发送一个请求到服务器上, 并附上If-Unmodified-Since头来说明浏览器所缓存资源的最后修改时间, 如果服务器发现没有修改,
则直接返回304(Not Modified)回应信息给浏览器(内容很少), 如果服务器对比时间发现修改了, 则照常返回所请求的资源. 注意:
Last-Modified属性通常和Expires或Cache-Control属性配合使用, 因为即使浏览器设置缓存, 当用户点击”刷新”按钮时,
浏览器会忽略缓存继续向服务器发送请求, 这时Last-Modified将能够很好的减小回应开销. ETag将返回给浏览器一个资源ID,
如果有了新版本则正常发送并附上新ID, 否则返回304, 但是在服务器集群情况下, 每个服务器将返回不同的ID, 因此不建议使用ETag.
以上描述的客户端浏览器缓存是指存储位置在客户端浏览器, 但是对客户端浏览器缓存的实际设置工作是在服务器上的资源中完成的.
虽然刚才我们介绍了有关于客户端浏览器缓存的属性, 但是实际上对这些属性的设置工作都需要在服务器的资源中做设置. 我们有两种操作手段对浏览器缓存进行设置,
一个是通过页面指令声明来设置, 另外一个是通过编程方式来设置.