本文目录导读:

- 如果你是普通用户:调整浏览器缓存规则(用于清理或禁用)
- 如果你是网站开发者 / 运维:在服务器端设置缓存规则
- 如果你使用代理工具(如 Fiddler、Charles、Whistle)或浏览器扩展
- 常见问题与优化建议
- 一句话规则
浏览器的缓存策略主要通过 HTTP 协议头中的 Cache-Control、Expires、Last-Modified 和 ETag 等字段控制,这些规则由网站服务器端设定,但作为用户或开发者,你可以在浏览器设置、开发者工具或代理工具中手动干预。
根据你的身份(普通用户 vs. 开发者),以下是三种主要场景的设置方法:
如果你是普通用户:调整浏览器缓存规则(用于清理或禁用)
通常是关闭/开启缓存或调整缓存空间。
Chrome / Edge 浏览器
- 打开设置:地址栏输入
chrome://settings(Edge 输入edge://settings)。 - 清除缓存:
- 搜索“清除浏览数据”。
- 勾选“缓存的图片和文件”,选择时间范围(如“所有时间”),点击清除。
- 临时禁用缓存(开发者调试用):
- 按
F12打开开发者工具。 - 转到 Network(网络) 面板。
- 勾选顶部的 Disable cache(停用缓存),关闭开发者工具后自动恢复。
- 按
Firefox 浏览器
- 清除缓存:设置 -> 隐私与安全 -> 缓存的网页内容 -> 清除。
- 修改缓存大小:在
about:config中搜索browser.cache.disk.capacity(默认为 256000 KB),可改为更小值。
缓存位置与强制刷新
- 硬性刷新:按
Ctrl + Shift + R(Mac:Cmd + Shift + R)。- 效果:忽略本机缓存,强制从服务器请求最新资源。
- 清空并硬性重新加载:在开发者工具 Network 面板右键点击刷新按钮。
如果你是网站开发者 / 运维:在服务器端设置缓存规则
这是控制浏览器缓存的最根本方式,常见场景及配置如下:
强缓存控制(不询问服务器,直接使用本地副本)
Cache-Control: max-age=秒(HTTP/1.1 标准)max-age=3600:缓存 1 小时。max-age=31536000:缓存 1 年(常用于图片、字体、CSS/JS)。
Expires: 绝对时间(HTTP/1.0 兼容)Expires: Thu, 01 Dec 2025 16:00:00 GMT
示例(Nginx 配置静态资源强缓存 30 天):
location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {
expires 30d;
add_header Cache-Control "public, immutable"; # immutable 告知浏览器不可变
}
协商缓存控制(需要向服务器验证文件是否修改)
Last-Modified+If-Modified-Since- 服务器返回
Last-Modified: Wed, 21 Oct 2023 07:28:00 GMT - 浏览器下次请求携带
If-Modified-Since,若文件没变,服务器返回304 Not Modified。
- 服务器返回
ETag+If-None-Match更精确的版本号(哈希值)。
/禁止缓存
location /api/ {
add_header Cache-Control "no-store, no-cache, must-revalidate";
# no-store: 完全禁止缓存
# no-cache: 允许缓存但必须每次询问服务器
}
推荐策略:文件指纹 + 强缓存。app.8f3c7a.js(哈希值改变 = 新文件),直接设置 max-age=31536000。
如果你使用代理工具(如 Fiddler、Charles、Whistle)或浏览器扩展
这些工具可以拦截并篡改浏览器请求,覆盖服务器返回的缓存规则。
全局禁用缓存
- Charles:
Proxy -> Cache Settings -> 取消勾选 “Enable cache”。
- Whistle(常用):
- `
whistle pattern ```` (例如www.example.com的规则中写入cache)**,但更常用的是临时禁用:直接在配置面板中勾选Disable cache`。
- `
自定义强制缓存时间
- 使用浏览器扩展如 Cache Killer(Chrome扩展),可一键强制绕过所有缓存。
- 使用 Requestly 或类似工具,修改 Response Header 中的
Cache-Control。
常见问题与优化建议
| 问题 | 原因 | 解决方案 |
|---|---|---|
| 更新后浏览器还是旧页面 | 浏览器使用了强缓存,未请求服务器 | 给静态资源加版本号/时间戳(如 style.css?v=2.0)服务器设置 Cache-Control: no-cache(用于 HTML) |
| 频繁请求导致服务器压力大 | 缓存策略太激进(无缓存或 no-cache) |
对不常变的资源(图片、代码包)设置max-age=7d或更长。 |
| 开发时改代码不生效 | 浏览器缓存了旧文件 | 打开 DevTools -> Network -> 勾选 Disable cache。 |
一句话规则
- 对于资源文件(JS/CSS/图片/字体):使用文件名哈希或版本号,配合
Cache-Control: max-age=31536000(一年)。 - 对于 HTML 页面:使用
Cache-Control: no-cache(每次都询问服务器是否更新)或no-store(完全禁止缓存)。 - 作为前端调试:打开 F12 勾选
Disable cache或者快捷键Ctrl+Shift+R。 - 作为普通用户:手动清除浏览器缓存(一般解决页面加载错乱问题)。
如果你是开发者并遇到缓存问题,建议优先排查服务器返回的 Response Headers 中的 Cache-Control 字段。
标签: 网页缓存规则
版权声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。