Etag缓存和If-None-Match缓存

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

合理的使用浏览器缓存,对我们服务器会减轻不少压力。一个web程序设计的好不好,缓存也是很重要的一部分。本文主要讲解Etag缓存和If-None-Match缓存。

缓存的分类,网上众说纷纭,但是大致有以下几:浏览器缓存,CDN缓存,数据库缓存,代理服务器缓存;但本文说的是浏览器缓存。

我们有时候有个明显的感觉就是,打开某个网站的时候,第一次会感觉慢和卡,第二次会快得多;当然,没有感觉到的话,也可能是网速比较好,感觉到了就是缓存再起作用,第一次请求的时候,下载的数据比较多,第二次往后有缓存(本地副本),就会节约响应时间。关于这两次请求,发生的过程,分别用下面两张处理流程的说明。

浏览器无缓存的请求

下面是浏览器读取缓存的处理流程。

浏览器处理带缓存的网页

上面两张图可以形象的说明,使用缓存和不使用缓存的区别。下面我们来学习《Etag缓存和If-None-Match缓存》。

Etag和If-None-Match,是在缓存时间已经失效的情况下,即Cache-Control:mac-age = 0 的情况下,会判断Etag和If-None-Match两者是否相等,ETag是根据实体内容生成的hash字符串,具体是对文件的索引节(INode),大小(Size)和最后修改时间(MTime)进行Hash后得到的,

如果If-None-Match返回的和Etag相等的话,就返回304,可以使用缓存的资源,文件没有被改动.具体如下:Etag缓存和If-None-Match缓存的使用

业余草公众号

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

本文原文出处:业余草: » Etag缓存和If-None-Match缓存