`
xly_971223
  • 浏览: 1276897 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

关于Cache-Contro缓存

阅读更多
浏览器缓存一直是web开发人员比较重视的优化点
这要有这个几个http header来控制:
Cache-Control中的max-age
expires
Last-Modified
ETag

其中max-age 和 expires可分在一组
Last-Modified 和 ETag分在一组
下面讲一下两组的区别
max-age 和 expires
当浏览器再次请求一个资源时会检查缓存响应中的max-age,如果没有过期则直接使用缓存中的数据,‘刷新’浏览器例外;
expires的作用跟max-age一样,区别在于同时存在时max-age会覆盖expires
max-age可用在image css js等不常变化的资源

Last-Modified 和 ETag
这个两个头跟上面的区别在于必须发送请求到服务器,服务器来判断是否发送响应体
Last-Modified必须与If-Modified-Since配合使用
工作过程如下:
1 服务器发送带有Last-Modified头的响应给浏览器,浏览器缓存之
2 再次请求改页面时,浏览器会把上次Last-Modified的时间用If-Modified-Since头发送给服务器
3 服务器检查If-Modified-Since时间是否过期,如果过期发送新数据;否则发送304告诉浏览器缓存数据时有效的

Etag的原理跟Last-Modified基本上是一样的

上述两种缓存方式都可降低对服务器的压力, 节约了网络带宽 提高了服务器的处理能力

另外gzip也是比较简单且有效的节约带宽方式

=============================================
刚才用etherreal抓包
max-age=604800 时,浏览器不发送任何请求
刷新浏览器则发送http get /images/aaa.gif 返回的是304状态
0
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics