在宝塔面板中开启 Nginx 缓存加速静态资源,主要通过修改网站配置文件添加 expires 规则或安装 Nginx 缓存插件实现。适用静态资源较多的站点,风险在于更新文件后用户可能无法立即看到最新内容。
先说结论:配置浏览器缓存策略是最直接手段,无需额外插件即可生效。
- 先定位:确认站点静态文件类型(图片、CSS、JS)。
- 先做:在网站配置文件中添加 location 缓存规则。
- 再验证:检查响应头 Cache-Control 是否包含 max-age。
命令速用版
将以下配置片段添加到宝塔网站配置文件的 server 块中,针对常见静态资源设置 30 天缓存:
location ~* \.(gif|jpg|jpeg|png|bmp|swf|css|js|ico)$ {
expires 30d;
access_log off;
}若需更精细控制,可添加 Cache-Control 头:
add_header Cache-Control "public, max-age=2592000";为什么会这样
Nginx 缓存通过减少服务器磁盘 I/O 和带宽消耗来提升加载速度。浏览器缓存静态资源后,再次访问时无需向服务器发起请求,直接读取本地文件,从而降低服务器负载并缩短页面加载时间。
分步处理
第一步,登录宝塔面板,点击左侧【网站】,找到目标站点点击【设置】。
第二步,进入【配置文件】选项卡,在 server { ... } 块内部查找或新增 location 规则。
第三步,粘贴上述静态资源缓存配置,确保正则表达式覆盖所需文件扩展名。
第四步,点击【保存】,宝塔会自动重载 Nginx 配置,无需手动重启服务。
第五步,若使用宝塔 Nginx 缓存插件,需在【软件商店】安装后启用,并设置缓存目录和清理规则。
怎么验证是否生效
使用 curl 命令检查响应头,确认是否存在 Cache-Control 或 Expires 字段:
curl -I https://yourdomain.com/static/style.css观察返回头中是否包含 expires 或 cache-control: max-age=...。也可在浏览器开发者工具【Network】面板查看资源状态码,第二次请求若显示 200 OK (from cache) 或 304 Not Modified,则缓存生效。
常见坑
动态页面被误缓存:不要对 PHP 动态脚本文件设置强缓存,否则用户可能看到旧页面内容。
文件更新不生效:修改静态文件后,浏览器可能仍使用旧缓存,需通过文件名版本控制(如 style.v2.css)强制更新。
磁盘空间占用:若使用 Nginx 代理缓存(proxy_cache),需监控缓存目录大小,避免占满磁盘。
常见问题
如何强制清除客户端缓存?
无法直接清除用户浏览器缓存,需修改文件名或在 URL 后添加版本参数。
HTTPS 站点配置是否相同?
相同,Nginx 缓存配置与协议无关,HTTP 和 HTTPS 共用同一套 location 规则。
缓存时间设置多久合适?
静态资源建议 7 天至 30 天,频繁更新的文件建议缩短时间或配合版本控制。
参考来源
- Nginx Official Documentation, "Module ngx_http_headers_module", https://nginx.org/en/docs/http/ngx_http_headers_module.html
- Nginx Official Documentation, "Module ngx_http_proxy_module", https://nginx.org/en/docs/http/ngx_http_proxy_module.html