浏览器缓存机制
我们都知道当我们在浏览器中打开一个页面时,浏览器会根据你输入的URL到对应的服务器上请求你想要的数据资源。但这个过程中可能页面可能需要等待一段时间(白屏时间)才能渲染到你的页面中。
当你想要提高用户体验时,那就不得不提各种缓存技术了,例如:DNS缓存、CDN缓存。浏览器缓存、页面本地缓存等等,有一个良好的缓存策略可以减低重复资源的请求,降低服务器的开销,提高用户页面的加载速度。
而这一篇文章将聊聊什么的HTTP
强缓存和协商缓存
基本原理
在浏览器加载资源的时候,首先会根据请求头的expires
和cache-control
判断是否命中强缓存策略,判断是否向远程服务器请求资源还是去本地获取缓存资源。
强缓存
在浏览器中,强缓存分为Expires
(http1.0规范)、cache-control
(http1.1规范)两种。
Expires
Expires
是http1.0
的规范,用于表示资源的过期时间的请求头字段,值是一个绝对时间,是由服务器端返回的。
在浏览器第一个请求资源时,服务器端的响应头会附上Expires
这个响应字段,当浏览器在下一次请求这个资源时会根据上次的expires
字段是否使用缓存资源(当请求时间小于服务端返回的到期时间,直接使用缓存数据)
expires是根据本地时间来判断的,假设客户端和服务器时间不同,会导致缓存命中误差
Cache-control
上面我们提到了Expires
有个缺点,当客户端本地时间和服务器时间不一致时会产生误差,浏览器会直接向服务器请求新的资源,为了解决这个问题,在http1.1
规范中,提出了cache-control
字段,且这个字段优先级高于上面提到的Expires
,值是相对时间。
在cache-control
中有常见的几个响应属性值,它们分别是
属性值 |
---|