返回

强缓存 VS 协商缓存

前端

缓存:加速你的网站,提升用户体验

缓存简介

缓存是一种存储技术,它将常用数据暂时存储在离客户端或用户更近的位置。当用户请求数据时,系统首先会检查缓存中是否有该数据。如果缓存中有,则直接从缓存中返回数据,从而减少向原始数据源请求数据的时间,提升网站性能。

强缓存和协商缓存:针对不同需求的缓存策略

根据缓存策略,缓存分为强缓存和协商缓存。

强缓存

强缓存策略告诉浏览器在特定时间内不要向源服务器发送请求,即使源服务器上的资源已发生变化。强缓存通常用于静态资源,如图像、CSS 和 JavaScript 文件。强缓存策略包含以下字段:

  • Expires: 指定资源的过期时间。当浏览器收到资源时,会将其与当前时间进行比较。若过期,则请求新资源。
  • Cache-Control: 指定缓存时间、允许缓存类型等信息。

代码示例:

Cache-Control: public, max-age=3600

协商缓存

协商缓存策略让浏览器在向源服务器发送请求前,先检查本地缓存中的资源是否最新。协商缓存常用于动态资源,如 HTML 页面和 API 请求。协商缓存策略包含以下字段:

  • Last-Modified: 指定资源的最后修改时间。浏览器将其与本地缓存中的资源进行比较,若本地资源较旧,则请求新资源。
  • ETag: 指定资源的唯一标识符。浏览器将其与本地缓存中的资源进行比较,若不同,则请求新资源。

代码示例:

Cache-Control: public, max-age=0
Last-Modified: Wed, 22 Jun 2023 10:00:00 GMT
ETag: "123456789"

强缓存与协商缓存的对比

特性 强缓存 协商缓存
绕过源服务器
使用场景 静态资源 动态资源
Expires 字段
Cache-Control 字段
Last-Modified 字段
ETag 字段

CDN 与缓存

CDN(内容分发网络)是一种分布式系统,将内容缓存到多个位置,让用户能从最近的位置访问。CDN 可与缓存结合使用,进一步提升网站性能。当浏览器请求资源时,CDN 会先检查本地缓存。若有,则直接返回。若无,则请求源服务器,并将获取到的资源缓存到本地,再返回给浏览器。

缓存的优势

  • 提升网站性能: 减少向源服务器请求数据的次数,加快页面加载速度。
  • 减轻源服务器负载: 缓存静态资源,减少对源服务器的请求,提升其处理能力。
  • 节省带宽: 缓存数据可重复使用,避免重复下载,节省带宽。
  • 提升用户体验: 页面加载更快,用户体验更佳。

最佳实践

  • 使用强缓存策略缓存静态资源。
  • 使用协商缓存策略缓存动态资源。
  • 设置合适的缓存过期时间,避免缓存内容过时或无效。
  • 利用 CDN 与缓存结合,进一步提升性能。

常见问题解答

1. 缓存可以缓存所有类型的数据吗?

不,缓存通常只适用于静态数据或变化不频繁的数据。

2. 缓存数据会永久存储吗?

否,缓存数据通常具有过期时间,达到过期时间后会被清除。

3. 缓存策略应该如何设置?

缓存策略的设置应根据具体需求和资源类型而定。

4. CDN 如何与缓存协同工作?

CDN 缓存资源到多个位置,而缓存策略决定何时使用 CDN 缓存的数据。

5. 缓存对网站安全性有影响吗?

缓存策略设置不当可能会导致安全问题,例如缓存敏感数据。