缓存与目的
重用已获取的资源能够有效的提升网站与应用的性能。Web 缓存能够减少延迟与网络阻塞,进而减少显示某个资源所用的时间。借助 HTTP 缓存,Web 站点变得更具有响应性。
缓存作为加快页面加载速度的方法,可以说是必不可少的一个方法,如何能更好地运用缓存来服务客户,首先我们就得了解清楚缓存;
缓存流程图
先上一张从SegmentFault搬运来的缓存过程图
从图中能很清楚的看出来,缓存是怎样的一个运行流程,接下来我们将一一介绍几种缓存机制;
强制缓存
对于强制缓存来说,http头部中会有两个字段来标明失效规则(Expires/Cache-Control)
- Expires:
HTTP/1.0的缓存机制,Expires的值是服务器返回的过期时间,在过期之前浏览器都可以直接在缓存里读取相应的文件,但Expires存在一个BUG,这个BUG就是,Expires对比的时间是客户端的时间,也就是说,我们只要设置自己电脑的时间超过Expires的值就会被判定为相应的资源已经过期需要重新请求,所以可能会导致差错;优点是Expires的设置非常的简洁明了就是一个时间,示例:Expires: Thu, 01 Dec 1994 16:00:00 GMT
- Cache-Control:
Cache-Control是HTTP/1.1的产物,在request header与response header中都支持这个属性,值得注意的是,缓存指令是单向的, 这意味着在请求设置的指令,在响应中不一定包含相同的指令。
接下来来看一看Cache-Control的命令有哪些,作用都是什么:
- 请求指令与响应指令
Cache-Control: max-age=<seconds>
Cache-Control: max-stale[=<seconds>]
Cache-Control: