zoukankan      html  css  js  c++  java
  • 浏览器缓存

    1.Cache-control: 

      用户每一次访问www.google.com,浏览器查看缓存文件夹,发现不存在缓存文件,于是发送http请求。
      server端返回http头中包含 cache-control=max-age=60。
      5秒钟后,用户刷新该页面,浏览器发现缓存文件夹中有该页面的缓存,也在存活期内,则直接把缓存文件作为响应。
      

    2.Last-Modified

      60秒钟后用户继续刷新该页面,此时max-age已经过期,但缓存文件夹中还有此文件,浏览器读取到该文件的Last-Modified,并将Last-Modified的值
      作为If-Modified-Since的值发送给server端,server端查看该文件的最后修改日期,如果If-Modified-Since比服务器上的最后修改日期要小,就明客户端
      的文件已经低一个版本了,于是返回http 200。反之则返回http 304(不返回包体)。(server端如果没有找到该文件,说明这是请求动态页面的请求,例如:.php .jsp .action)

    3.ETag

      server端在返回Last-Modified的同时,还返回另外一个包头信息ETag。
      在发送IF-Modified-Since的同时,还发送If-None-Match,它的值就是ETag的值。
      server端如果IF-Modified-Since和Etag两者都匹配则返回http 304。

    ps:

      IE6 在资源有gzip压缩同时有ETag头时,cache后再次发请求不会带If-None-Match头

      IE6 下如果出现重复的URL请求,会直接拿缓存中的数据,不会发送http请求

      Pragma、expires 这两个http1.0 头信息可以忽略不写,现在几乎100%都使用http1.1

      浏览器强制刷新的本质就是发送http请求时不包含If-None-Match、IF-Modified-Since,这样server端会重新返回包体。  

  • 相关阅读:
    Powerdesigner数据库建模--概念模型--ER图【转】
    oralce闪回
    DBA
    linux socket使用经验总结
    寒假学习笔记1:结构化程序设计
    寒假作业2:简化电梯设计elevator
    鹤发银丝映日月,丹心热血沃新花——忆三位良师
    走廊泼水节
    种树
    P2938 [USACO09FEB]股票市场Stock Market
  • 原文地址:https://www.cnblogs.com/BigIdiot/p/3095381.html
Copyright © 2011-2022 走看看