Cache Revalidate
S.A.N
nginx-forum at nginx.us
Wed Nov 27 21:21:37 UTC 2013
> use case и о происхождении требования о недопустимости кеширования
> даже на 1 секунду. Возможно, это позволило бы пересмотреть
> существующее поведение при max-age=0, благо в Cache-Control есть и
> другие способы запрета кеширования.
use case продиктован нашей бизнес логикой, мы кешируем все даже страницы для
залогиненых пользователей (персонал данные подтягиваются через ajax с
использованием клиентского кэширования браузера), в этом есть смысл, цифры я
уже писал, разница скорости в генерации страницы и в ревалидации отличается
в десятки раз, в пользу ревалидации.
Есть сайт с хорошей посещаемостью, залогиненые пользователи имеют
возможность общатся, создавать свой контент, редактировать, удалять, есть
так же платные сервисы.
Наши клиенты не хотят и не должны ждать, даже если это одна секунда, ну
например, клиент написал комментарий на сайте, POST ушел на сервер, если у
нас кеширования на 1 секунду, мы клиенту не можем сразуже показать новую
страницу, должны сделать задержку на 1 сек потом обновить его страницу или
как на Хабре все комментарии видны с задержкой и люди это терпят.
Конечно мы тоже можем так сделать, но зачем, если скорость ревалидации нам
позволяет убрать необходимость в задержках и клиент будет доволен и
работать все будет стабильно, главное это сделать совсем не сложно.
Сейчас мы это делаем на уровне кеше браузера, с применением ETag, но если
Nginx сделает возможность в постоянной ревалидации по ETag, тогда этот
алгоритм кеширования который проверен и отлично работает на клиенском кеше
браузера мы сможем перенести на кеш Nginx, что во многом увеличит повторное
использования кеша, особенно для незалогиненых юзеров.
Нам не интересно делать задержки в кеше, представте если бы Facebook делал
задержки в отображении, даже если бы на этом форуме были задержки в
отображении написанных постов, все бы конечно смерились но это совсем не
круто.
Есть другой вариант обычно так и делают, не кешируют страницы которые
критичны к задержкам и часто обновляются, но это тоже не круто, такие
запросы будут нагружать бекенд, время отклика будет падать, очередь запросов
к FastCGI будет расти, так до таймаутов осталось не долго.
В общем, мы знаем как можно обойтись без постоянной ревалидации, но так же
мы знаем как все будет круто, если реализовать постоянную ревалидацию.
Почему бы и нет?
Posted at Nginx Forum: http://forum.nginx.org/read.php?21,244991,245024#msg-245024
Подробная информация о списке рассылки nginx-ru