PHP + Nginx + X-Accel-Redirect缓存问题

时间:2012-03-04 07:59:43

标签: php caching nginx

我使用的是nginx 1.0.12并且设置如下:

        location /protected/ {
            expires 30d;
            log_not_found off;
            internal;
            alias /var/www/files/uploads/;
    }

并且正在请求这样的用户文件:

header('X-Accel-Redirect: http://example.com/adetwiler/files/example.png');
header('Content-type: image/png');

一切都很好,直到用户可以旋转图像。一旦他们旋转图像,我无法弄清楚如何获得文件的“新”版本,它仍然显示图像的旧版本,除非在浏览器上点击“刷新”。

我试图设置Cache-control:no-cache,Expires:Expires:Sat,26 Jul 1997 05:00:00 GMT,没有运气。

我尝试添加修改日期,如下所示:

header('X-Accel-Redirect: http://example.com/adetwiler/files/example.png?123456789');

每次尝试时都会导致图像加载。

我尝试将其添加到nginx配置中:

add_header Pragma public;
add_header Cache-Control "public, must-revalidate";

此时我感到茫然,我已经尝试了所有我能想到的东西。

所以我的问题是,有一种方法可以使用我当前的设置或类似于我的设置,在图像更新后使用较新版本的图像吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

看起来设置X-Accel-Buffering: no作为标题告诉nginx根本不缓存响应。

https://www.nginx.com/resources/wiki/start/topics/examples/x-accel/