浏览器Cache 梳理

http://www.bujiaban.net/wordpress/?p=333

 

 

浏览器(静态文件)cache

资源验证

    Last-Modified/ If-Modified-Since/ 304 Not-Modified
      基于最后修改时间
      内容不变,最后更新时间改变了
      负载均衡下,同一份内容可能每个服务器上的最后修改时间会存在不一样
      SSI情况下,服务器需要做相应配置(如Apache需要开启XBitHack)
    Etag/ If-None-Match
      基于文件内容

保鲜期

    Expires
      服务器时间
      绝对时间
      保鲜期=Expires头域的值-响应的Date域的值
    Cache-Control
      相对时间
      浏览器本地时间
      保鲜期=Cache-Control头域里max-age的值
      Cache-Control优先于Expires
      请求中通过Cache-Control:max-age=0 强制任何中间的缓存去源服务器验证缓存副本
      请求中通过Cache-Control:no-cache 强制任何中间的缓存去源服务器获得最新的副本
      响应中通过Cache-Control:no-cache 强制所有缓存必须到源服务器验证才能响应后续的请求
    永不过期?其实HTTP1.1的服务器不会发送超过一年的过期时间


请求方式的不同

    F5
      刷新,向服务器请求所有页面资源,保鲜期(Cache-Control和Expires)不能使用,但资源验证方式(Last-Modified和Etag)可以使用,即是不允许直接使用本地缓存,但可以使用缓存协商,
    Ctrl+F5
      强制刷新,向服务器请求所有页面资源,不使用缓存协商,不允许使用本地缓存,取回的资源都是最新的
    链接/跳转
      保鲜期内允许直接使用本地缓存,允许使用缓存协商

缓存协商组合策略

 

 

posted @ 2012-09-02 08:39  toxot  阅读(169)  评论(0编辑  收藏  举报