X-Accel-Expires
是一种 HTTP 头,允许您在 Nginx 中精确控制静态文件的缓存时间。通过设置该头,您可以方便地管理缓存并提高网站的性能。
1. 基础概念
- Nginx 缓存:Nginx 可以缓存静态内容、反向代理的内容等,以减少后端服务器的压力并提高响应速度。
X-Accel-Expires
:这个头部用于指定缓存的过期时间。它的值可以是一个绝对时间(如Wed, 21 Oct 2023 07:28:00 GMT
)或一个相对时间(如10s
、1m
)。
2. 配置 Nginx
以下是如何在 Nginx 中使用 X-Accel-Expires
控制缓存时间的步骤。
2.1 编辑 Nginx 配置文件
打开您的 Nginx 配置文件,通常位于 /etc/nginx/nginx.conf
或某个特定的站点配置文件中。
sudo nano /etc/nginx/nginx.conf
2.2 设置 X-Accel-Expires
头
在适当的 server
或 location
块中添加 add_header
指令,例如:
server {
listen 80;
server_name example.com;
location /static/ {
alias /var/www/html/static/;
add_header X-Accel-Expires "10m"; # 设置缓存时间为10分钟
expires 10m; # 也可以设置 expires 头
}
}
2.3 使用 X-Accel-Expires
进行动态内容缓存
如果您希望对动态内容进行缓存,可以在您的后端应用程序中设置 X-Accel-Expires
头。例如,如果您的应用程序是用 PHP 编写的,可以这样设置:
header("X-Accel-Expires: 1h"); // 设置缓存时间为1小时
3. 测试配置
3.1 检查 Nginx 配置语法
在保存配置文件后,使用以下命令检查 Nginx 配置的语法是否正确:
sudo nginx -t
3.2 重新加载 Nginx
如果没有错误,可以重新加载 Nginx 使配置生效:
sudo systemctl reload nginx
4. 验证缓存
使用 curl
命令检查响应头,确保 X-Accel-Expires
头已正确设置:
curl -I http://example.com/static/yourfile.jpg
您应该会看到类似如下的输出:
HTTP/1.1 200 OK
X-Accel-Expires: 10m
...
5. 注意事项
- 优先级:
X-Accel-Expires
的值将覆盖expires
指令的值。 - 使用场景:适用于需要控制缓存时间的动态内容或静态内容。
- 调试:在调试过程中,确保清除浏览器缓存或使用无缓存模式。