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