HTTP缓存是通过在客户端(如浏览器)和服务器之间缓存资源来提高性能的机制。它通过避免重新获取已经访问过的资源,从而减少了网络传输的数据量和延迟。HTTP缓存有两种:
-
浏览器缓存:浏览器缓存是指浏览器在本地内存或磁盘上存储资源的策略。当浏览器请求一个网页时,会先检查本地缓存是否已经存在该网页的相关资源(如图片、CSS、JS等),如果已存在,则直接使用本地缓存中的资源,否则会重新下载。
-
代理缓存:代理缓存是指代理服务器(如CDN)在缓存资源的策略。当用户访问一个网页时,请求会先到代理服务器,如果代理服务器已经缓存了该资源,则直接返回缓存的资源,否则代理服务器向源服务器请求资源,并将资源缓存起来,下次请求时直接返回缓存的资源。
HTTP缓存机制通过一些HTTP头信息来控制缓存的行为,最常用的几个头信息包括:
-
Cache-Control: 控制缓存的具体行为,如是否缓存、缓存时间等。
-
Expires: 缓存过期时间,用于告知浏览器或代理服务器何时需要重新获取资源。
-
Last-Modified/If-Modified-Since: 用于检查资源是否有更新,若没有则直接使用缓存中的资源。
-
ETag/If-None-Match: 与Last-Modified/If-Modified-Since类似,用于检查资源是否有更新,但更加精确。
-
Vary: 控制缓存的键,如根据不同的User-Agent来缓存不同的资源。