Nginx 缓存如何设置?
美国、香港服务器
Nginx 缓存如何设置?
10-26 来源:
## 案一:宝塔面板一键开启静态缓存
网站 → 找到你的域名 → 设置 → **Nginx 静态缓存**
1. 缓存后缀:`jpg,jpeg,png,gif,bmp,ico,svg,css,js,woff,woff2,ttf,eot`
2. 缓存时间:
- 图片、字体:`30d`(30 天)
- css/js:`7d`
3. 不缓存:php、动态页面、`/cart /checkout /my-account /wp-admin`
4. 保存,**重载 Nginx**
优点:简单;❌缺点:精细控制弱,电商站建议手动配置
## 方案二:手动 Nginx 配置(WooCommerce 外贸独立站模板,直接复制)
打开站点配置文件(宝塔网站设置→配置文件),分 2 种:
- `fastcgi_cache`:PHP 程序缓存(WP/Woo)
- `静态资源缓存`:图片、css/js(最稳,推荐先用这个)
只缓存静态资源(新手首选,不容易踩坑)
放到 `server {}` 里面:
# 静态资源缓存
location ~* \.(jpg|jpeg|png|gif|ico|svg|css|js|woff|woff2|ttf)$ {
expires 30d;
add_header Cache-Control "public, no-transform";
add_header X-Cache "STATIC";
}
# 不缓存php、动态页面
location ~* \.php$ {
expires -1;
}
# WooCommerce 禁止缓存这些路径
location ~* ^/(cart|checkout|my-account|wp-admin|wp-login|wc-ajax) {
expires -1;
}
执行校验重载:
nginx -t
nginx -s reload
进阶:fastcgi_cache 整页缓存(适合 B2B 展示站,Woo 要谨慎)
放到配置文件最顶部(http 块内,不是 server 里!)**
fastcgi_cache_path /www/server/nginx/cache/fcgi levels=1:2 keys_zone=WP_CACHE:100m inactive=7d max_size=5g;
fastcgi_cache_key "$scheme$request_method$host$request_uri";
然后在 server {} 里添加:
set $skip_cache 0;
# 后台、登录、购物车、结账、我的账户,跳过缓存
if ($request_uri ~* "/wp-admin/|/wp-login|/cart/|/checkout/|/my-account/|/wc-ajax") {
set $skip_cache 1;
}
# 有登录cookie,跳过缓存
if ($http_cookie ~* "wordpress_logged_in|woocommerce_items_in_cart|wp_woocommerce_session_") {
set $skip_cache 1;
}
# 带参数搜索,跳过缓存
if ($query_string != "") {
set $skip_cache 1;
}
location ~ \.php$ {
fastcgi_pass unix:/tmp/php-cgi-81.sock; #改成你PHP版本,宝塔可直接复制原有
fastcgi_index index.php;
include fastcgi_params;
fastcgi_cache WP_CACHE;
fastcgi_cache_valid 200 301 302 10m;
fastcgi_cache_valid 404 1m;
fastcgi_cache_bypass $skip_cache;
fastcgi_no_cache $skip_cache;
add_header X-Cache $upstream_cache_status; #看命中状态HIT/MISS
}
和 Cloudflare 搭配重点(非常关键,你现在的架构)
CF 是外层 CDN,Nginx 是源站,两层缓存要分工,避免冲突
1. CF:缓存静态资源、HTML 页面(B2B 展示站);WooCommerce 在 CF 规则里排除 `/cart /checkout /my-account`
2. Nginx 源站:**不要再重复缓存 CF 已经缓存的内容**,Nginx 静态缓存只兜底
3. 开启 CF 的`Cache Rules`,设置`Cache Everything`,排除电商动态路径
验证缓存是否生效
看响应头:`X-Cache: HIT` = 命中;`MISS`= 未命中
可以浏览器 F12 网络面板,看资源响应头。
外贸 WooCommerce 避坑
1. **购物车、结账、账户页绝对不能缓存**,会出现别人的购物车、支付异常
2. 改完网站产品 / 文章后,需要清缓存:宝塔清 Nginx 缓存 + CF 后台清除缓存
3. 不要设置太长 HTML 页面缓存(页面缓存建议 5~10 分钟,静态文件 30 天)
4. 搭配你之前配置的`CF-Connecting-IP`,缓存不要依赖访客 IP,缓存 key 不要带上访客真实 IP
清理缓存命令(宝塔 Linux)
#清理fastcgi缓存
rm -rf /www/server/nginx/cache/fcgi/*
三二互联专业提供香港VPS,美国VPS主机,香港云服务器租用等业务香港美国到大陆CN2 GIA速度最快