合理的使用浏览器缓存,对我们服务器会减轻不少压力。一个 web 程序设计的好不好,缓存也是很重要的一部分。本文主要讲解 Etag 缓存和 If-None-Match 缓存。
更多精彩内容请看 web 前端中文站
http://www.lisa33xiaoq.net 可按 Ctrl + D 进行收藏
缓存的分类,网上众说纷纭,但是大致有以下几:浏览器缓存,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,可以使用缓存的资源,文件没有被改动.具体如下:
【注:本文源自网络文章资源,由站长整理发布】