http缓存

http缓存相关请求响应头

  • Cache-Control

请求/响应头,缓存控制字段,可以说是控制http缓存的最高指令,要不要缓存也是它说了算。
它有以下常用值
no-store:所有内容都不缓存
no-cache:缓存,但是浏览器使用缓存前,都会请求服务器判断缓存资源是否是最新,它只用不过期的缓存。
max-age=x(单位秒) 请求缓存后的X秒不再发起请求,属于http1.1属性,与下方Expires(http1.0属性)类似,但优先级要比Expires高。
s-maxage=x(单位秒) 代理服务器请求源站缓存后的X秒不再发起请求,只对CDN缓存有效
public 客户端和代理服务器(CDN)都可缓存
private 只有客户端可以缓存

  • Expires

响应头,代表资源过期时间,由服务器返回提供,GMT格式日期,是http1.0的属性,在与max-age(http1.1)共存的情况下,优先级要低

  • Last-Modified

响应头,资源最新修改时间,由服务器告诉浏览器。

  • if-Modified-Since

请求头,资源最新修改时间,由浏览器告诉服务器(其实就是上次服务器给的Last-Modified,请求又还给服务器对比),和Last-Modified是一对,它两会进行对比。

  • Etag

响应头,资源标识,由服务器告诉浏览器。

  • if-None-Match

请求头,缓存资源标识,由浏览器告诉服务器(其实就是上次服务器给的Etag),和Etag是一对,它两会进行对比。

使用http缓存过程
Expires不稳定,通常用max-age来加以代替(cache-control其中一个值)。

1.让服务器与浏览器约定一个文件过期时间——max-age

时间没过,不发起请求,直接使用本地缓存。(强缓存
时间过期,发起请求。

2.服务器与浏览器在约定文件过期时间的基础上,再加一个文件最新修改时间的对比——Last-Modifiedif-Modified-Since

if-Modified-SinceLast-Modified不相等,服务器查找了最新的文件,同时再次返回Expires与全新的Last-Modified
if-Modified-SinceLast-Modified相等,服务器返回了状态码304,文件没修改过,你还是用你的本地缓存。(协商缓存)

3.服务器与浏览器在过期时间Expires+Last-Modified的基础上,再增加一个文件内容唯一对比标记——EtagIf-None-Match,

Last-Modified只能精确到秒,假设文件是在1s内发生变动,Last-Modified无法感知到变化

如果想强制使用协商缓存,就把cach-control设为no-cach

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值