Karp 的技术博客

X-Accel-Expires 是一种 HTTP 头,允许您在 Nginx 中精确控制静态文件的缓存时间。通过设置该头,您可以方便地管理缓存并提高网站的性能。

1. 基础概念

  • Nginx 缓存:Nginx 可以缓存静态内容、反向代理的内容等,以减少后端服务器的压力并提高响应速度。
  • X-Accel-Expires:这个头部用于指定缓存的过期时间。它的值可以是一个绝对时间(如 Wed, 21 Oct 2023 07:28:00 GMT)或一个相对时间(如 10s1m)。

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

在适当的 serverlocation 块中添加 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 指令的值。
  • 使用场景:适用于需要控制缓存时间的动态内容或静态内容。
  • 调试:在调试过程中,确保清除浏览器缓存或使用无缓存模式。

版权属于:karp
作品采用:本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。
更新于: 2024年10月21日 03:37
0

目录

来自 《使用 `X-Accel-Expires` 控制 Nginx 缓存时间》
774 文章数
0 评论量
9 分类数
779 页面数
已在风雨中度过 9年277天3小时47分