Push cache推送缓存/启发式缓存

Push Cache(推送缓存)是针对HTTP/2标准下的推送资源设定的 ,是浏览器缓存的最后一道缓存机制,是在设置了Last-Modifed但没有设置Cache-Control或者Expires时触发,也就是只拿到最后更新时间,但没有设置过期时间,这种情况下浏览器会有一个默认的缓存策略push cache,自动设置过期时间:(Date - Last-Modified)*0.1,也就是当前时间减去最后更新时间后再乘10%。

这种策略只在会话session中存在,会话结束就被释放了。

这种策略也有个弊端,假设session存在的时间够长,如果该资源是在一个月前更新的,那么它再次更新的话用户只能在3天后才能拿到新资源。

推送缓存是session级别的,如果用户的session结束则资源被释放;即使URL相同但处于不同的session中也不会发生匹配。推送缓存的存储时间较短,Chromium浏览器中只有5分钟左右,同时它也并非严格执行HTTP头中的缓存指令

Jake Archibald有一篇很有意思的文章HTTP/2 push is tougher than I thought描述了他对HTTP/2推送缓存的一些测试,有一些结论可以放上来以供参考,有一些也和我们上面的结论是一致的

  • 几乎所有的资源都能被推送,并且能够被缓存。测试过程是作者在推送资源之后尝试用fetch()、XMLHttpRequest、<link rel="stylesheet" href="…">、<script src="…">、<iframe src="…">获取推送的资源。Edge和Safari浏览器支持相对比较差

  • no-cache和no-store资源也能被推送

  • 多个页面可以使用同一个HTTP/2的连接,也就可以使用同一个Push Cache。这主要还是依赖浏览器的实现而定,出于对性能的考虑有的浏览器会对相同域名但不同的tab标签使用同一个HTTP连接。

  • 一旦Push Cache中的资源被使用即被移除

  • 如果Push Cache或者HTTP Cache已经存在被推送的资源,则有可能浏览器拒绝推送

  • 你可以为其他域名推送资源

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值