课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
对于程序员来说,缓存机制用的好能够让用户的上网体验更加舒适,而今天我们就一起来了解一下,http缓存机制都有哪些类型。
HTTP缓存机制:
强制缓存:
浏览器判定本地缓存可用,就直接使用,不会发起http请求。
只考虑是否过期,但是没有考虑服务端数据是否更新,导致可能得到的不是新数据。
协商缓存:
向服务端发送http请求确定缓存是否有效,有效返回304,则使用缓存,不可用,则返回200和数据,将新数据缓存并使用新数据。
强制缓存不可用时,才用?
使用缓存的策略:
频繁变动的资源:cache-control:no-cache;etag/last-modified
不常变动的资源:cache-control:max-age=很大的数,在文件名中加入动态字符(hash/版本号),更新时更新动态字符,导致之前的强制缓存失效(只是不用了)
HTTP1.0:
强制缓存:
expires:相对时间,对应服务端的时间。
例子:Expires:Fri,30Oct199814:19:41
协商缓存:
if-modified-sice:请求头。
last-modified:响应头。在服务器端设置的文件后修改事件。
HTTP1.1:
强制缓存:
cache-control:
public:响应可被客户端和代理服务器缓存。
private:响应只可被客户端缓存。
max-age=30:30s后缓存过期,需重新发送请求。
s-maxage=30:30s后缓存过期,在代理服务器中覆盖max-age。
no-store:不缓存
no-cache:不使用cache-control来控制缓存。
max-stale=30:过期30s内仍可用。
min-fresh=30:30s内获取新响应。
max-age中保存的是绝对时间,时间由浏览器计算。
比http1.0的进步:时间是对于浏览器而言的,如果浏览器和服务器时间不一致也没用关系。
协商缓存:
if-none-match:请求头。
etag:响应头。是文件的特殊标识(一般都是hash生成的)
比http1.0的进步:
last-modified:小单位是s;负载均衡的服务器,各个服务器生成的时间可能不一致;文件内容不变但是修改日期变了会导致缓存失效。
etag:精度高;性能差一点(需要计算hash值);优先级更高。
用户的不同操作使用的缓存:
打开网页:查找硬盘中是否有。
普通刷新(F5):tab未关闭,内存可用,没有采取硬盘找。
强制刷新(ctrl+F5):不适用缓存。
【免责声明】本文系本网编辑部分转载,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与管理员联系,我们会予以更改或删除相关文章,以保证您的权益!