透明多级缓存技术-客户端/前端缓存技术

透明多级缓存技术-客户端/前端缓存技术

强制缓存

Expires

HTTP 1.1之前使用该Header控制资源有效时间

  • 作用
    服务器承诺在指定的时间之前特定资源不会过期或者更新
    示例如下:
HTTP/1.1 200 OK
Expires: Wed, 8 Apr 2020 07:28:00 GMT
  • 使用场景
    某些更新频率较慢的资源可以使用该Header来控制其过期时间

    • 图书信息接口-特定图书的信息在后端不会频繁更新
    • 特定商品的SKU信息接口-出某些活动大促期间,商品的SKU信息更新频率较慢
  • 缺陷

    • 若恶意修改客户端本地时间会导致超期持有或者提前过期的问题
    • 资源的私有性无法控制
    • 未定义"不缓存"相关语法

Cache-Control

Cache-Control是HTTP/1.1协议中的强制缓存Header,语义比Expires更为丰富,并且若Cache-Control与Expires都有定义时,以Cache-Control的定义为准。

max-ages
  • 作用
    max-age后面跟随一个以秒为单位相对时间(相对与请求时间),在请求时间-请求时间+max-age时间段内缓存有效,该时间段内客户端无需重新从服务器中获取资源。
    示例如下:
HTTP/1.1 200 OK
Cache-Control: max-age=600
s-maxage

s即share的意思,即共享缓存的过期时间控制

  • 作用
    作用与max-age类似,只不过该字段控制的对象是CDN\代理等节点的缓存行为
public
  • 作用
    public用于指示该资源可以被CDN,代理节点所缓存
private
  • 作用
    private用于指示该资源不可被CDN,代理节点所缓存
no-store

禁止浏览器、CDN、代理节点持久化相关资源

  • 作用
    保护部分私密资源,如临时用户信息
no-cache

指示浏览器不需缓存相关资源,每次请求都重服务器获取最新的资源

  • 作用
    对于更新频率较快的资源,需要每次从服务器请求最新的资源
no-transform

指示中间链路节点无需对资源进行gzip或者编码、解码、加密、解密等操作

must-revalidate

用于指示资源过期后(超出max-age时间后),浏览器必须从服务器获取资源

proxy-revalidate

用于指示资源过期后(超出max-age时间后),CND\代理节点必须从服务器获取资源。

协商缓存

强制缓存是基于时效性的,但无论是人还是服务器,其实多数情况下并没100%把握去承诺某项资源固定时间内不会发生变化。另外一种基于变化检测的缓存机制,在一致性上会有比强制缓存更好的表现,但需要一次变化检测的交互开销,性能上就会略差一些,这种基于检测的缓存机制,通常被称为“协商缓存”

Last-Modified

该Header是服务端返回的特定资源的最后修改时间

HTTP/1.1 304 Not Modified
Cache-Control: public, max-age=600
Last-Modified: Wed, 8 Apr 2020 15:31:30 GMT

If-Modified-Since

该Header是客户端在Header中添加的,即将上一次收到的Last-Modified时间填入,服务器收到该Header后,如果发现资源在这个时间之后没有改动,则直接发送304/Not Modified的响应,无须附带消息体,实现省流的效果.
否则有改动则需发送最新的资源给客户端,如下

HTTP/1.1 200 OK
Cache-Control: public, max-age=600
Last-Modified: Wed, 8 Apr 2020 15:31:30 GMT

Response Content

Etag(…)

ETag是服务端的响应Header,用于告诉客户端这个资源的唯一标识
举例:Apache服务端的ETag值默认是对文件的索引节点(INode)、大小和最后修改时间进行哈希计算后得到

  • 作用

  • 使用场景
    对于数据一致性要求强的场景,如高级别的身份认证系统就需基于ETAG来保证每个身份的实时可靠性。

  • 缺陷

    • 该Header对性能有一定的影响,无论是生成hash还是hash对比都需要消耗一定的时间
  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值