详解浏览器Cache-Control缓存策略

JAVA herman 743浏览 0评论
公告:“业余草”微信公众号提供免费CSDN下载服务(只下Java资源),关注业余草微信公众号,添加作者微信:xttblog,发送下载链接帮助你免费下载!
本博客日IP超过1800,PV 2600 左右,急需赞助商。
极客时间所有课程通过我的二维码购买后返现24元微信红包,请加博主新的微信号:xttblog,之前的微信号好友位已满,备注:返现
所有面试题(java、前端、数据库、springboot等)一网打尽,请关注文末小程序
视频教程免费领

原来用的是Expires策略,浏览器可以直接从浏览器缓存读取数据,而无需再次请求,它的值对应一个GMT,来告诉浏览器资源缓存过期时间,如果还没过该时间点则不发请求。

例如下面的例子,这是京东的首页里找的一个,时间都干到2027年了,现在的时间是2017年7月20,肯定还没到失效时间,so是304,使用本地缓存,也就是说在失效时间之内,一直使用缓存,除非把缓存删了。

Expires 缓存策略

但是这是http1.0的东西,现在使用的是http1.1的,这个可以忽略了因为这个是获取的本地的时间,我们改动的话,会出现问题,现在都用Cache-control了。

cache-control策略有的地方也叫新鲜度限值。

这个和上面说的expires效果是一样的,最大时间,用来控制浏览器是否直接从浏览器缓存取数据还是重新发请求到服务器取数据。

只不过Cache-Control的选择更多,设置更细致,如果同时设置的话,其优先级高于Expires。

Cache-Control可拥有如下值:

  • Public:指定响应会被缓存,并且在多用户间共享。
  • Private:响应只作为私有的缓存(见下图),不能在用户间共享。如果要求HTTP认证,响应会自动设置为private。。缓存只开放给某些特定的用户,比如服务器的用户,其他用户则不能缓存这些数据。
  • no-cache:指定不缓存响应,表明资源不进行缓存。
  • no-store:用于防止重要的信息被无意的发布。在请求消息中发送将使得请求和响应消息都不使用缓存,完全不存下來。
  • max-age:指示客户端该端时间内缓存都是最新的。单位为秒,就是在这个时间内,不会请求数据了,一直用的就是缓存。比如:Cache-Control:max-age=3600 表示60分钟之后过期,在这60分钟期间不会更新。
  • min-fresh :指示客户端希望获取一个在小于指定的时间内被更新过的资源,单位为秒:例如:Cache-Control:min-fresh =120 。向服务器获取2分钟内被更新过的资源。
  • max-stale:指示客户端可以接收超出超时期间的响应消息。例如:Cache-Control:max-stale =3600 ,向服务器获取超过缓存时间2分钟的资源。

业余草公众号

最后,欢迎关注我的个人微信公众号:业余草(yyucao)!可加QQ1群:135430763(2000人群已满),QQ2群:454796847(已满),QQ3群:187424846(已满)。QQ群进群密码:xttblog,想加微信群的朋友,之前的微信号好友已满,请加博主新的微信号:xttblog,备注:“xttblog”,添加博主微信拉你进群。备注错误不会同意好友申请。再次感谢您的关注!后续有精彩内容会第一时间发给您!原创文章投稿请发送至532009913@qq.com邮箱。商务合作可添加助理微信进行沟通!

本文原文出处:业余草: » 详解浏览器Cache-Control缓存策略