外贸站Nginx缓存过期时间优化海外访问
外贸站Nginx缓存过期时间优化:海外访问速度提升实操指南
外贸站面向海外用户,页面加载速度直接影响转化率。
很多站长配置了Nginx却没有仔细调过缓存过期时间,导致静态资源反复回源拉取,延迟大增。
本文用最简单的方式讲清楚如何通过Nginx expires指令设定合理的缓存过期时间,让海外节点和浏览器更好地缓存你的资源,从而明显提升访问速度。
准备条件
- 一台已安装Nginx的服务器(Linux系统,如Ubuntu、CentOS)
- 有SSH登录权限(可用宝塔面板WebSSH或直接终端)
- 你外贸站的Nginx配置文件路径(常见为
/etc/nginx/sites-enabled/或/usr/local/nginx/conf/vhost/,宝塔用户路径为/www/server/panel/vhost/nginx/) - 基本的文本编辑技能(如
vi、nano,宝塔用户可直接在面板编辑)
第一步:找到站点配置文件
首先登录服务器,切换到Nginx配置目录。
例如使用宝塔:
cd /www/server/panel/vhost/nginx/
ls
你会看到域名命名的.conf文件,比如example.com.conf。
用nano打开它:
nano example.com.conf
第二步:添加缓存过期时间规则
在server块内部,通常是在location /附近,添加针对静态资源的缓存规则。
以下是一个标准示例:
# 针对图片、CSS、JS等静态资源缓存30天
location ~* \.(jpg|jpeg|png|gif|ico|css|js|svg|woff2?|ttf|eot)$ {
expires 30d;
add_header Cache-Control "public, immutable";
}
# 针对HTML页面缓存1小时(适合不频繁更新的页面)
location ~* \.html$
expires 1h;
add_header Cache-Control "public, must-revalidate";
}
关键点说明:
expires 30d:告诉浏览器和中间缓存(如CDN)这个资源30天内有效,期间不需要再向服务器请求。add_header Cache-Control:可选,进一步控制缓存行为。immutable表示资源永远不变,适合带hash的静态文件。- 不要给动态接口或后台管理页面加缓存,否则会导致数据延迟展示。
如果你的外贸站有AJAX请求的JSON、API接口,单独用location /api/排除缓存:
location /api/ {
expires off;
add_header Cache-Control "no-cache, no-store";
}
第三步:测试配置并重载Nginx
修改完成后,先检查语法:
nginx -t
如果输出 successful,重载Nginx使配置生效:
nginx -s reload
宝塔用户可以在面板“服务”里重启Nginx,效果一样。
避坑指南
- 过期时间别太长:图片、CSS可以设为30天,但主页HTML建议不超过1小时,否则用户端更新内容无法立即看到。
- 区分静态资源与动态内容:外贸站的产品详情页若由PHP生成,绝不能设
expires,否则所有用户看到的都是同一个过期版本的页面。正确做法是只缓存CSS、JS、图片。 - 注意CDN叠加:如果你用了Cloudflare或阿里云CDN,Nginx的expires会作为CDN源站缓存时间的参考,但在CDN控制台要单独设置缓存规则,两者配合效果更好。
- 验证前清浏览器缓存:测试时按Ctrl+F5强制刷新,或用无痕窗口,否则旧缓存会干扰验证。
验证缓存是否生效
最简单的方法是用curl查看响应头:
curl -I https://你的域名/wp-content/uploads/2025/01/logo.png
输出中应包含类似:
Cache-Control: public, immutable, max-age=2592000
Expires: Thu, 28 Jan 2026 12:00:00 GMT
max-age=2592000就是30天(30×24×60×60)。
如果看到no-cache或max-age=0,说明配置未生效,检查location匹配规则是否正确。
你也可以用浏览器开发者工具(F12)→ Network → 点一个静态资源,查看Response Headers中的Cache-Control。
对于海外访问速度的直观感受,可以用工具如speedtest.net测一下服务器响应,或者用Pingdom网站速度测试选美国/欧洲节点,查看首屏时间和请求数量。
常见问题解答
Q:我改了配置文件,但海外用户打开还是慢?
A:先确认配置已重载,并且curl验证返回了正确的Cache-Control。如果还慢,检查服务器网络出口是否优化过(建议用CN2或BGP线路),或者启用CDN分担流量,Nginx缓存只是第一层。
Q:我的资源都带版本号(如style.css?v=2),缓存时间设多久合适?
A:如果每次更新版本号,可以设一年。因为版本号变了,浏览器会当作全新资源请求。推荐使用文件名哈希方式(如style.a1b2c3.css),配合immutable指令效果最佳。
Q:外贸站用了WordPress/WooCommerce,缓存会破坏购物车功能吗?
A:只要遵守“只缓存CSS/JS/图片,不缓存HTML和AJAX接口”的原则,就不会影响。建议在Nginx中通过location ~ \.php$排除动态请求,或者使用WordPress缓存插件(如W3 Total Cache)配合Nginx配置。
总结
调整Nginx缓存过期时间是外贸站加速海外访问“成本最低、效果明显”的一步。
你只需要找到配置文件,给静态资源加上expires 30d,动态内容保持不缓存,就能减少海外用户到源服务器的请求数,打开速度立竿见影。
遇到异常时优先回看上面的避坑部分,用curl验证确保配置正确。
如果你还想进一步优化,可以继续学习Nginx Gzip压缩、HTTP/2开启、甚至部署CDN——但今天这一步,值得你立刻动手试一下。