http缓存:强缓存、协商缓存

为什么要设置缓存?前端代码打包之后的生成的静态资源就要发布到静态服务器上,考虑到网站的性能和用户体验,设置缓存是必不可少的。

缓存分为强缓存 与协商缓存:

强缓存expires和cache-control 这两个字段,expires这是http1.0时的规范。主要介绍cache-control。cache-control 这是http1.1时出现的header信息。设置强缓存就是服务端在respone header 的cache-control,常见的设置是max-age public private no-cache no-store

  • max-age=xxx,public:客户端在x秒的有效期内,客户端和代理服务器都可以缓存该资源; 

  • max-age=xxx,private:客户端在x秒的有效期内,只让客户端缓存;代理服务器不缓存

  • max-age=xxxx,immutable: 如果有请求该资源的需求的话就直接读取缓存,即使用户做了刷新操作,也不向服务器发起http请求

  • no-cache: 跳过设置强缓存,但是不妨碍设置协商缓存; 。

  • no-store: 客户端、服务器都不缓存,也就没有所谓的强缓存、协商缓存了。

注:如果cache-control与expires同时存在的话,cache-control的优先级高于expires

协商缓存如何设置使用?

1.首先每次请求response header都会携带 etag和 last-modified;在下次请求时request header会带上这两个值(If-None-Match ,If-Modified-Since 见备注);

(注)协商缓存有两组报文:1.Last-Modified和If-Modified-Since   2.ETag和If-None-Match

2.其次服务端对这两个值进行对比,判断资源是否更改,如果更改就直接返回新的资源,和更新对应的response header的标识etag、last-modified。

3如果资源没有变,那就不变etag、last-modified,这时候对客户端来说,每次请求都是要进行协商缓存。

注:Last-Modified与ETag是可以一起使用的,服务器会优先验证ETag,一致的情况下,才会继续比对Last-Modified,最后才决定是否返回304。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值