常识指南
霓虹主题四 · 更硬核的阅读氛围

cache-control怎么设置(进阶教程)

发布时间:2025-12-11 02:38:11 阅读:72 次

你有没有遇到过网页加载特别慢,或者明明更新了内容却还是看到旧页面的情况?这可能跟缓存有关。而控制缓存的关键之一,就是 Cache-Control 这个 HTTP 响应头。它告诉浏览器和中间代理服务器,这个资源该怎么缓存、能缓存多久。

常见的 Cache-Control 指令

Cache-Control 的值是一组指令,用逗号分隔。最常用的几个包括:

  • max-age:资源最多可以缓存多少秒。比如 max-age=3600 就是缓存1小时。
  • no-cache:每次使用前都要向服务器验证资源是否更新,不能直接用本地缓存。
  • no-store:禁止缓存,每次都要从服务器重新下载,适合敏感信息。
  • public:响应可以被任何地方缓存(浏览器、CDN等)。
  • private:只能被用户自己的浏览器缓存,不能被 CDN 或代理服务器缓存,适合用户私有数据。

实际设置方法

在服务器端设置 Cache-Control 是最常见的做法。比如你在用 Nginx,可以在配置文件里加上:

location /static/ {
    expires 1y;
    add_header Cache-Control "public, immutable";
}

这段配置会让静态资源(比如图片、JS、CSS)缓存一年,并标记为可公开缓存且内容不变。

如果是 Apache 服务器,可以在 .htaccess 文件里写:

<IfModule mod_expires.c>
    ExpiresActive On
    ExpiresByType text/css "access plus 1 year"
    Header set Cache-Control "public"
</IfModule>

对于开发前端的同学,有时候你想让某个 AJAX 请求不走缓存,可以直接在请求头里设置:

fetch('/api/data', {
    headers: {
        'Cache-Control': 'no-cache'
    }
});

不过要注意,no-cache 并不是“不缓存”,而是“先验证再用”。真正完全禁止缓存得用 no-store

还有一种常见场景:你发了个新版本网站,但用户打开还是旧的 JS 文件。这时候可以在构建时给文件名加哈希,比如 app.a1b2c3.js,然后配合 max-age=31536000 长缓存,既能提升速度,又能避免更新问题。

简单来说,Cache-Control 设置得好,能让网站更快更省流量;设得不好,轻则用户看不到更新,重则泄露隐私数据。根据资源类型合理选择缓存策略,才是关键。