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