Проблема с кэшированием в PHP + Nginx + X-Accel-Redirect - PullRequest
2 голосов
/ 04 марта 2012

Я использую 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');

Все отлично работает до тех пор, пока пользователь не сможет повернуть свое изображение. Как только они повернут свое изображение, я не могу понять, как получить «новую» версию файла, он по-прежнему показывает более старую версию изображения, если в браузере не нажата кнопка «Обновить».

Я попытался установить контроль кеша: no-cache, срок действия истекает: истекает: сб, 26 июля 1997 г., 05:00:00 по Гринвичу, не повезло с ними.

Я попытался добавить дату изменения следующим образом:

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 голосов
/ 23 октября 2015

Это похоже на установку X-Accel-Buffering: no, поскольку заголовок говорит nginx вообще не кэшировать ответ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...