Web缓存基础:术语、HTTP报头和缓存策略

Web缓存是提高网站性能的重要组成部分。本文将介绍Web缓存的基础知识,包括缓存术语、HTTP报头以及缓存策略,并提供一些示例代码,帮助您更好地理解。

缓存术语

在了解Web缓存之前,我们需要先了解一些与缓存相关的术语。

缓存

缓存是指将数据存储在离目标使用者更近的位置,以提高读取速度和减少网络传输成本。在Web开发中,缓存通常指将静态资源(例如CSS文件、JavaScript文件和图片)存储在客户端或代理服务器上,而不是每次请求时都从源服务器获取。

缓存命中率

缓存命中率是指从缓存中获得数据的比例。如果大多数请求都可以从缓存中获得数据,那么缓存命中率就很高。

过期时间

过期时间是指缓存中的数据可以保留多长时间。在过期时间到期后,数据将被视为无效,并且必须重新从源服务器请求。

有效时间

有效时间是指缓存中的数据可以被认为是有效的时间段。在有效时间内,即使已经过期,客户端仍可以使用缓存中的数据。

HTTP报头

HTTP报头是控制缓存行为的关键组件。以下是一些常用的HTTP报头。

Cache-Control

Cache-Control指定了请求/响应链上所有缓存都必须遵循的指令。以下是一些常用的指令:

  • max-age:指定资源在缓存中的最长时间(秒)
  • no-cache:强制缓存服务器在返回响应之前验证缓存条目
  • no-store:禁止缓存服务器存储任何与请求/响应相关的内容

Expires

Expires指定了缓存的过期时间,以GMT格式表示。

Last-Modified和If-Modified-Since

Last-Modified指定了缓存的最后修改日期和时间,而If-Modified-Since则是一个条件式请求报头,在发送请求时,它会将上次获取资源的Last-Modified值包含在内。如果资源未更改,则服务器将返回一个304 Not Modified响应,从而减少网络流量。

ETag和If-None-Match

ETag是一个唯一的字符串标识缓存中的资源版本。If-None-Match则是一个条件式请求报头,用于检查资源是否已更改。如果资源未更改,则服务器将返回一个304 Not Modified响应。

缓存策略

缓存策略是指规定缓存如何处理请求和响应的规则集合。以下是一些常用的缓存策略。

强制缓存

强制缓存是指浏览器/代理服务器从缓存中获取数据,而不是向源服务器发出请求。可以使用Cache-Control和Expires报头来实现强制缓存。例如:

-------------- ------------
-------- ---- -- --- ---- -------- ---

这将强制浏览器在1小时内从缓存中获取数据,并在1970年之前使缓存无效。

协商缓存

协商缓存是指浏览器/代理服务器使用If-Modified-Since、If-None-Match等条件式请求报头检查资源是否已更改。如果资源未更改,则返回304 Not Modified响应,否则返回新的数据。可以使用Last-Modified和ETag报头来实现协

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/446