HTTP 缓存机制是一种用于减少网络传输和提高网站性能的技术,它通过在客户端和服务器之间缓存已经获取的资源来实现。HTTP 缓存主要分为两种类型:客户端缓存和服务器端缓存。
客户端缓存
-
强缓存(Expires 和 Cache-Control): 服务器返回的响应头中包含了过期时间,浏览器在此过期时间内不会发送请求,直接使用本地缓存。常见的字段包括:
Expires
:指定了资源的过期时间,由服务器返回,并且是一个绝对时间,即时区无关。Cache-Control
:指定了缓存策略,常见的值包括max-age
(资源的有效时间,单位为秒)、no-cache
(需要重新验证缓存)、no-store
(不缓存)、public
(允许所有缓存)、private
(只允许特定用户缓存)等。
-
协商缓存(Last-Modified 和 ETag): 当资源过期或者需要重新验证时,浏览器会发送一个请求到服务器,服务器会根据资源的最后修改时间或者唯一标识符来判断是否需要返回新的资源。常见的字段包括:
Last-Modified
:指定了资源的最后修改时间,由服务器返回。ETag
:指定了资源的唯一标识符,由服务器返回。
服务器端缓存
-
代理缓存: 代理服务器(例如 CDN)可以缓存经过它的请求和响应,当其他用户请求相同的资源时,代理服务器可以直接返回缓存的响应,减少了对源服务器的访问。
-
反向代理缓存: 源服务器前面放置了一个反向代理服务器,反向代理服务器可以缓存并且处理用户的请求,将请求转发到源服务器或者直接返回缓存的响应。
HTTP 缓存机制通过在客户端和服务器之间存储资源的副本,可以减少网络传输量,提高网站性能,降低服务器负载,同时也可以提升用户体验。