17 апр. 2011 г.

Ошибка кеширования Nginx

Проблема

Есть index.php, который кэшируется или не кэшируется в зависимости от cookie. Есть exit.php, который снимает cookie для того чтобы начал отдаваться кэшированный вариант. При переходе index.php (без кэша) –> exit.php –> index.php (теперь должен вернуться из кэша) nginx не выводил в поток HTTP-заголовки, а слал сразу тело документа.

Для исключения запросов из кэша использовал proxy_cache_bypass

Решение

Вместе с proxy_cache_bypass прописать proxy_no_cache с тем же самым значением. В качестве дополнительного эффекта получилась оптимизация, что теперь кэш для запросов, которые не должны кэшироваться сохраняться не будет, что в общем-то правильно, но то что это делается двумя разными директивами было не очевидно.

Было:

proxy_cache_bypass $cookie_cuid$cookie_cups;
Стало:

proxy_cache_bypass $cookie_cuid$cookie_cups;
proxy_no_cache $cookie_cuid$cookie_cups;

Комментариев нет:

Отправить комментарий