返回

HTTP 缓存之首部字段洞悉

前端


SEO 文章

HTTP 缓存是一个至关重要的技术,它通过存储静态资源的本地副本以减少对服务器的请求,从而提高网站的性能和用户体验。在 HTTP 缓存中,有几个首部字段发挥着至关重要的作用,包括 Expires、Cache-Control、If-Modified-Since、Etag 和 Last-Modified。


**一、Expires:简单却有时效**

Expires 是一个响应头字段,它直接告诉浏览器该资源的过期时间。当浏览器收到一个带有 Expires 首部字段的响应时,它会将该资源缓存起来,并在 Expires 指定的时间之前使用缓存的版本。如果请求的资源已经过期,浏览器将向服务器发送一个新的请求。

二、Cache-Control:精细化控制

Cache-Control 是一个请求/响应头字段,它允许客户端和服务器对缓存行为进行更精细化的控制。Cache-Control 有多种指令,包括:

  • public:允许任何缓存(浏览器缓存、代理服务器缓存等)缓存该资源。
  • private:仅允许浏览器缓存该资源,代理服务器等中间设备不能缓存该资源。
  • no-cache:告诉浏览器在使用缓存的版本之前,必须先向服务器发送一个验证请求。
  • max-age:指定资源的缓存时间,单位为秒。

三、If-Modified-Since:有条件的请求

If-Modified-Since 是一个请求头字段,它告诉服务器,如果资源自上次请求后未被修改,则返回一个 304 Not Modified 响应。否则,服务器将返回该资源的最新版本。

四、Etag:资源的唯一标识符

Etag 是一个实体标签,它是一个由服务器生成的唯一标识符,用于标识资源的版本。当浏览器向服务器发送一个带有 If-None-Match 请求头字段的请求时,服务器会比较请求头字段中的 Etag 值与服务器上存储的 Etag 值。如果两个 Etag 值相同,则服务器将返回一个 304 Not Modified 响应。否则,服务器将返回该资源的最新版本。

五、Last-Modified:资源最后修改时间

Last-Modified 是一个响应头字段,它包含资源最后一次被修改的时间。当浏览器收到一个带有 Last-Modified 首部字段的响应时,它会将该时间与本地缓存的资源的最后修改时间进行比较。如果本地缓存的资源的最后修改时间早于响应头字段中的时间,则浏览器将从服务器下载该资源的最新版本。

HTTP 缓存首部字段是提高网站性能和用户体验的关键技术。通过合理使用这些首部字段,可以有效地减少对服务器的请求数量,提高网站的吞吐量和响应速度。