前言
HTTP缓存机制是优化web性能的重要手段,也是优化用户体验的重要一环。了解和熟悉HTTP缓存机制也成为了前端工作者必不可少的技能。
HTTP缓存是用于临时存储网页资源(如HTML页面、图像等),以减少服务器延迟的一种技术。HTTP缓存系统会保存下通过这套系统的文档的副本;如果满足某些条件,则可以由缓存满足后续请求。HTTP缓存系统既可以指设备,也可以指计算机程序。
一、HTTP缓存的类别
HTTP缓存可分为强制缓存和协商缓存。
强制缓存:直接使用客户端缓存,不从服务器拉取新资源,也不验证缓存资源是否过期。返回的状态码为200(OK)。
协商缓存:通过服务器验证资源有效性,资源有效则返回304(Not Modified),资源失效则返回最新的资源文件。
HTTP主流的有三个版本:HTTP/1.0、HTTP/1.1、HTTP/2.0。其中HTTP/1.0和HTTP/1.1的应用最为广泛。HTTP/2.0因对缓存机制的改动有别于HTTP/1.0和HTTP/1.1,因此HTTP/2.0相关内容会在文末总结部分进行介绍。HTTP/1.0与HTTP/1.1可根据缓存类别区分如下:
HTTP版本 | 强制缓存 | 协商缓存 |
---|---|---|
HTTP/1.0 | Expires | Last-Modified |
HTTP/1.1 | Cache-Control | ETag |
二、主流的HTTP缓存参数
2.1 强制缓存
2.1.1 HTTP/1.0 - Expires
Expires
的值为服务端返回的到期时间,是一个GMT
(格林尼治标准时间)绝对时间,如:Tue, 17 Jan 2023 03:48:45 GMT
。下一次请求时,客户端判断当前系统GMT
时间是否小于缓存携带的GMT
时间。若小于,直接使用缓存数据,否则从服务器请求新的文件。