合理的使用浏览器缓存,对我们服务器会减轻不少压力。一个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缓存
原创文章,作者:carmelaweatherly,如若转载,请注明出处:https://blog.ytso.com/251629.html