HTTP缓存初识

参考:

http://muchstudy.com/2016/08/18/HTTP%E7%BC%93%E5%AD%98%E8%AF%A6%E8%A7%A3/

https://aotu.io/notes/2016/09/22/http-caching/

http://www.cnblogs.com/chenqf/p/6386163.html

一、HTTP缓存

  • 强制缓存
  • 协商缓存(对比缓存)

1、强制缓存

名称说明
Expires响应失效的日期和时间。类似于:Expires:Sat, 20 Aug 2016 01:40:57 GMT,绝对值,告诉客户端在这个时间点之后资源过期,需要重新从服务器取。
Cache-Control类似于:Cache-Control:max-age=315360000,相对值,在多久后过期

通过上面两种方式,当资源的缓存还在有效期时,浏览器直接从本地缓存中取资源,而不是发起HTTP请求从源服务器取。由于客户端与服务器端存在时间差,Expires并不是那么的靠谱,所以建议使用max-age。

2、协商缓存

名称说明
If-Modified-Since \ Last-Modified告诉服务器只要服务器在这个时间之后又对资源做了修改则发送该资源
If-None-Match 与 ETag根据资源内容是否变更来判断是否继续使用本地缓存。第一次请求资源时,服务器在response头信息中设置ETag,当资源过期后再次向服务器请求时用If-None-Match:ETag去验证资源是否变更
静态资源
  • JS

  • CSS

  • 图片

  • 二进制文件

    在文件或者路径中嵌入指纹,避免使用查询字符串。确保生成的URL长度超过8个不通的字符。

    使用这些HTTP响应头:

    1. Cache-Control: public, max- age=31536000
    2. Expires: (一年后的今天)
    3. ETag: (基于内容生成)
    4. Last-Modified: (过去某个时间)
    5. Vary: Accept-Encoding
动态资源

使用如下响应头:

  1. Cache-Control: public, max-age=0
  2. Expires: (当前时间)
  3. ETag: (基于内容生成)
  4. Last-Modified: (过去某个时间)
  5. Vary: Accept-Encoding

二、总结

  • 对于强制缓存,服务器通知浏览器一个缓存时间,在缓存时间内,下次请求,直接用缓存,不在时间内,执行比较缓存策略。

  • 对于比较缓存,将缓存信息中的EtagLast-Modified通过请求发送给服务器,由服务器校验,返回304状态码时,浏览器直接使用缓存。

浏览器第一次请求:

enter image description here

浏览器再次请求时:

enter image description here

转载于:https://www.cnblogs.com/russellyoung/p/http-huan-cun-chu-shi.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值