http缓存相关
2017-07-25 本文已影响9人
放风筝的小小马
重点推荐 浏览器缓存知识小结及应用
第一步:HTTP缓存实现的原理]
浏览器缓存机制:
缓存有多种,有浏览器缓存,服务器缓存,CDN缓存等;浏览器缓存作为性能优化里面静态资源相关的一大利器;
浏览器缓存基本知识
浏览器缓存分为强缓存和协商缓存
- 当要发送一个请求时,浏览器从请求的header中判断是否命中强缓存,如果命中,浏览器则从缓存中获取页面数据,不再往服务器发送请求了;强缓存命中主要是根据:
Cache-Control
和Expires
来判断是否命中缓存; - 如果没有命中强缓存,浏览器就发送请求到服务器验证是否命中协商缓存,浏览器会在request header中添加
If-Modified-Since
或If-None-Match
,并与服务器中的Last-Modified
或ETag
比较,如果缓存有效,则返回304请求,浏览器接收到请求后,就从缓存中获取数据;如果无效,则直接返回最新的页面数据,浏览器接收到后,更新到缓存中 - 强缓存与协商缓存的共同点是:如果命中,都是从客户端缓存中加载资源,而不是从服务器加载资源数据;区别是:强缓存不发请求到服务器,协商缓存会发请求到服务器。
- 当协商缓存没有命中,浏览器直接从服务器加载数据
缓存管理
协商缓存跟强缓存不一样,强缓存不发请求到服务器,所以有时候资源更新了浏览器还不知道,但是协商缓存会发请求到服务器,所以资源是否更新,服务器肯定知道。大部分web服务器都默认开启协商缓存,而且是同时启用【Last-Modified,If-Modified-Since】和【ETag、If-None-Match】,比如apache