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.conf2.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 -t3.2 重新加载 Nginx
如果没有错误,可以重新加载 Nginx 使配置生效:
sudo systemctl reload nginx4. 验证缓存
使用 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指令的值。 - 使用场景:适用于需要控制缓存时间的动态内容或静态内容。
- 调试:在调试过程中,确保清除浏览器缓存或使用无缓存模式。