博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
浏览器缓存
阅读量:6192 次
发布时间:2019-06-21

本文共 940 字,大约阅读时间需要 3 分钟。

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端会重新返回包体。  

 

转载于:https://www.cnblogs.com/BigIdiot/archive/2013/05/23/3095381.html

你可能感兴趣的文章
C语言初学者代码中的常见错误与瑕疵(14)
查看>>
已知ip地址和其子网掩码如何求网络号子网号主机号
查看>>
asp.net 导出excel的一种方法
查看>>
html块状元素、内联元素
查看>>
WCF服务端与客户端时间匹配问题
查看>>
ruby之各种概念
查看>>
array_column php 函数 自定义版本 php_version<5.5
查看>>
关于大型网站技术演进的思考(十八)--网站静态化处理—反向代理(10)
查看>>
RHCS集群理论暨最佳实践
查看>>
第3章 Java语言基础----声明常量
查看>>
iPhone取消软件更新上边的1
查看>>
多表连接的三种方式详解 hash join、merge join、 nested loop
查看>>
SQL Server 自定义函数(1)把某一列多行的值拼接成一个字符串
查看>>
矩阵键盘 数码管
查看>>
何谓集群
查看>>
hive建表没使用LZO存储格式,可是数据是LZO格式时遇到的问题
查看>>
Elasticsearch教程(九) elasticsearch 查询数据 | 分页查询
查看>>
magento megatron主题加入中文
查看>>
前端性能优化之优化图片 && 优化显示图片
查看>>
select标签中option内容加链接
查看>>