Не понимаю, как работает обратный прокси с кешированием.
Предположим, что кеш пуст.
User1 загружает index.php (динамический контент). Кеша нет, поэтому Nginx запрашивает файл php. Сервер говорит: «Добро пожаловать, пользователь1». Nginx сохраняет веб-страницу, используя контрольную сумму md5.
User2 загружает index.php. В кеше хранится страница, поэтому мы возвращаем эту страницу пользователю. Там написано «Добро пожаловать, пользователь1», но если бы мы вызвали скрипт php, он бы вернул «Добро пожаловать, пользователь2».
Как Nginx может узнать, нужно ли снова вызывать php-скрипт? Мой обратный прокси-сервер с кешированием отлично работает, возвращая динамический контент, но я полагаю, что это не просто «волшебство».
Это PHP-скрипт, который возвращает заголовок, говорящий Nginx не кэшировать?
Кэширование ответов контролируется HTTP Cache-Control
заголовок ответа.
Если установлено значение no-cache
или private
, то ваш обратный прокси-сервер не будет кэшировать документ. Обычно private
используется для страниц, отправленных авторизованным пользователям; это означает, что прокси-серверы не должны кэшировать документ, но это нормально для веб-браузера.
Вы можете увидеть полную информацию на Cache-Control
в RFC 2616 раздел 14.9 et seq.