
Web缓存介绍与策略总结
HTTP的缓存机制简化流程如下:浏览器会根据进来的请求保存输出内容的副本,当下一个相同的URL请求来到时,缓存会根据缓存机制决定是直接使用副本响应访问请求,还是向源服务器再次发送请求。
Web缓存的好处包括但不限于:
1. 减少网络延迟,提高页面加载速度。
2. 减少网络带宽消耗。
3. 降低服务器压力。
HTTP缓存的两个阶段:
浏览器缓存一般分为两类:强缓存(也称本地缓存)和协商缓存(也称弱缓存)。
本地缓存阶段:浏览器发送请求前,会先去缓存里查看是否命中强缓存,如果命中,则直接从缓存中读取资源,不会发送请求到服务器。否则,进入下一步。
协商缓存阶段:当强缓存没有命中时,浏览器一定会向服务器发起请求。服务器会根据Request Header中的一些字段来判断是否命中协商缓存。如果命中,服务器会返回304响应,但是不会携带任何响应实体,只是告诉浏览器可以直接从浏览器缓存中获取这个资源。如果本地缓存和协商缓存都没有命中,则从直接从服务器加载资源。
启用&关闭缓存:
使用HTML Meta标签:在HTML页面的head节点中加入相应的标签可以控制页面的缓存。但这种方法有其局限性,比如只有IE能识别这段meta标签的含义,其他主流浏览器仅识别“Cache-Control: no-store”的meta标签。
使用缓存有关的HTTP消息报头:在HTTP请求和响应的消息报头中,有与缓存有关的消息报头,如Cache-Control、Expires、Last-Modified、ETag等。了解这些报头的含义和关系,可以帮助我们更好地控制缓存。
优先级:Cache-Control优先级高于Expires,为了兼容,通常两个头部同时设置。浏览器默认行为是,即使Response Header中没有设置Cache-Control和Expires,浏览器仍然会缓存某些资源,这是为了提升性能进行的优化。
其他Web缓存策略:
1. IndexDB:一种浏览器提供的本地数据库,能够存储大量结构化数据,并使用索引进行高性能检索。
2. Service Worker:一种浏览器提供的脚本,可以在浏览器后台运行,用于拦截和管理网络请求,可以用于离线缓存、消息推送等。
3. LocalStorage和SessionStorage:两种Web Storage API,用于在客户端存储数据。
定义最优缓存策略的建议:
1. 使用一致的网址。
2. 确定中继缓存可以缓存哪些资源。
3. 确定每个资源的最优缓存周期。
4. 确定网站的最佳缓存层级。
5. 更新最小化。
6. 确保服务器配置或移除ETag。
7. 善用HTML5的缓存机制和其他存储技术。
8. 结合Native的存储能力,打造极致体验。
了解各种浏览器缓存机制和存储能力的特点,结合业务制定合适的缓存策略,是提高Web性能的重要手段。合理的缓存策略可以大大提高网页的加载速度,减少网络带宽的消耗,提升用户体验。
