来源:本站日期:2026/9/28
网站缓存优化是提升网站性能、降低服务器负载和改善用户体验的重要手段,主要涉及浏览器缓存与服务器缓存两个层面。以下从两者的作用、实现方法及配置示例展开说明。
网站缓存优化是提升网站性能、降低服务器负载和改善用户体验的重要手段,主要涉及浏览器缓存与服务器缓存两个层面。以下从两者的作用、实现方法及配置示例展开说明。
浏览器缓存是客户端(浏览器)将服务器返回的资源(如 HTML、CSS、JS、图片等)临时存储在本地的机制。当用户再次访问同一页面时,浏览器可优先从本地加载资源,减少网络请求,加快页面加载速度。
浏览器缓存主要通过 HTTP 响应头中的字段控制,核心逻辑是“在有效期内重复使用本地资源”。关键配置包括:
通过 HTTP 响应头设置缓存规则,常见配置如下:
`Cache-Control` 是 HTTP/1.1 标准,替代了旧的 `Expires`,用于指定缓存的行为。常用指令:
配置示例(以 Nginx 为例):
在 Nginx 配置文件中为静态资源添加 `Cache-Control`:
`Expires` 指定资源过期的绝对时间(GMT 格式),需与 `Cache-Control` 配合使用(`Cache-Control` 优先级更高)。
示例:
当缓存过期后,浏览器会向服务器发送请求验证资源是否更新,通过以下字段判断:
配置示例(Nginx 默认支持 `ETag`,无需额外配置):
服务器缓存是在服务端存储常用数据或页面,减少对数据库、后端服务的重复请求,降低延迟并提升响应速度。常见类型包括页面缓存、数据缓存、对象缓存等。
根据应用场景不同,服务器缓存可分为以下几类:
将动态页面或页面片段(如导航栏、热门列表)的渲染结果缓存,后续请求直接返回缓存内容。
- 雪崩:大量缓存同时过期,可通过随机化过期时间缓解(如 `max-age` 加随机值)。
- 击穿:热点数据过期瞬间大量请求穿透缓存,可通过互斥锁(如 Redis 分布式锁)或“永不过期+异步更新”策略解决。
两者结合可最大化性能优化效果:
1. 静态资源:浏览器缓存为主(长 `max-age`),服务器无需重复处理。
2. 动态内容:服务器缓存减少后端压力,浏览器缓存(如 `no-cache` 结合 `ETag`)减少重复请求。
3. 边缘缓存:通过 CDN(内容分发网络)缓存,同时为浏览器和服务器分担压力(CDN 本质是“分布式服务器缓存”)。
一、浏览器缓存
核心机制
实现方法
1. Cache-Control(推荐)
# 缓存静态资源(如图片、CSS、JS)1年
location ~* \.(jpg|png|css|js)$ {
add_header Cache-Control "public, max-age=31536000, immutable";
}
# HTML 文件设置为不缓存(或短时间缓存)
location ~* \.html$ {
add_header Cache-Control "no-cache";
}
2. Expires(HTTP/1.0 兼容)
add_header Expires "Sun, 1 Jan 2027 00:00:00 GMT";
3. ETag 与 Last-Modified(缓存验证)
# 开启 ETag(默认开启,可显式声明)
etag on;
缓存命中率优化技巧
二、服务器缓存
核心目标
实现方法
1. 页面/片段缓存(Page/Fragment Caching)
缓存策略优化
三、浏览器缓存与服务器缓存的协同
总结