http的缓存分为强制缓存和对比缓存,两者的区别在于,强制缓存只要设置的时间不过期,就可以直接拿去用,而不用向服务器再一次发送请求。而对比缓存不管缓存是否有效,都需要向服务器发送请求。

  其过程如下:

                

  1.  浏览器会先查询Cache-Control来判断内容是否过期,如果没有过期,直接读取浏览器缓存文件。(强制缓存)

  2.  在浏览器上判断上次文件返回头中是否含有ETag,如果有则连同If-None-Match一起向服务器发送请求,服务器判断ETag是否失效,有效返回304读取缓存数据(对比缓                      存)。失效返回200。ETag是有服务器生成的当前资源的唯一标识,如果资源发生改变,服务器会发送一个新的Etag。

  3.  在浏览器端判断上次文件返回头中是否含有Last-Modified,有则连同If-Modified-Since一起想服务器发送请求,服务器判断Last-Modefied是有失效,有效返回304读取缓                     存数据(对比缓存),失效返回200。

  4.  如果ETag和Last-Modefied都没有,则直接向服务器发送请求内容。

最新文章

  1. 【ORACLE】IN 后跟&参数字符串的处理方法
  2. ubuntu安装配置elasticSearch(vagrant)
  3. GTD
  4. request.getHeader所想到的
  5. 诺基亚XL中Intent.ACTION_VIEW无效的问题
  6. yii框架便利类CVarDumper使用
  7. Spring学习笔记之Constructor-based or setter-based DI?
  8. EDIUS和VEGAS哪个更好用
  9. PHP笔记-PHP中Web Service.
  10. Google面试题:计算从1到n的正数中1出现的次数
  11. STM32F051关于printf函数在串口打印中的使用
  12. 【C/C++多线程编程之九】pthread读写锁
  13. phpstorm+wamp+xdebug配置php调试环境
  14. 【洛谷P5018】对称二叉树
  15. 2017/2/10:Manven简介与项目管理(入门)
  16. Hadoop中ssh+IP、ssh+别名免秘钥登录配置
  17. 2018.06.29 NOIP模拟 Minimum(最小生成树)
  18. tomcat启动(六)Catalina分析-StandardServer.start()
  19. vi命令文件编辑
  20. Android开发13——内容提供者ContentProvider的基本使用

热门文章

  1. Sqoop的安装配置及使用
  2. 一种简单实用的双向电平转换电路3.3V-5V
  3. Django-Content-type用法
  4. OrCAD生成网表
  5. spring boot 连接mysql 错误The server time zone value 'Öйú±ê׼ʱ¼ä' is unrecognized or represents more than one
  6. 自动化测试(一)-get和post的简单应用
  7. fiddler之弱网测试
  8. redux使用过程中遇到的两个致命的关键点
  9. 辨析ADK&JVM&JRE&JDK&ADT
  10. lintcode-63-搜索旋转排序数组 II