Cache Revalidate
Maxim Dounin
mdounin at mdounin.ru
Thu Nov 28 09:19:09 UTC 2013
Hello!
On Wed, Nov 27, 2013 at 04:21:37PM -0500, S.A.N wrote:
> > use case и о происхождении требования о недопустимости кеширования
> > даже на 1 секунду. Возможно, это позволило бы пересмотреть
> > существующее поведение при max-age=0, благо в Cache-Control есть и
> > другие способы запрета кеширования.
>
> use case продиктован нашей бизнес логикой, мы кешируем все даже страницы для
> залогиненых пользователей (персонал данные подтягиваются через ajax с
> использованием клиентского кэширования браузера), в этом есть смысл, цифры я
> уже писал, разница скорости в генерации страницы и в ревалидации отличается
> в десятки раз, в пользу ревалидации.
>
> Есть сайт с хорошей посещаемостью, залогиненые пользователи имеют
> возможность общатся, создавать свой контент, редактировать, удалять, есть
> так же платные сервисы.
>
> Наши клиенты не хотят и не должны ждать, даже если это одна секунда, ну
> например, клиент написал комментарий на сайте, POST ушел на сервер, если у
> нас кеширования на 1 секунду, мы клиенту не можем сразуже показать новую
> страницу, должны сделать задержку на 1 сек потом обновить его страницу или
> как на Хабре все комментарии видны с задержкой и люди это терпят.
Т.е. задача - показать клиенту, добавившему комментарий с помощью
POST'а, страницу с его комментарием непосредственно после
перенаправления, отдаваемого на POST, правильно?
Спасибо, так констуркция понятна, хотя и несколько странна.
Just in case, альтернативные решения на вскидку:
- Добавлять комментарий без перезагрузки страницы javascript'ом,
отправлять на сервер - через ajax. Так, насколько я понимаю,
сейчас делают чуть менее, чем все, в том числе упоминаемый вами же
facebook.
- Добавлять комментарий, после чего возвращать перенаправление на
специальный адрес (e.g. со случайным числом в аргументе) для
прохода кешей. Такой подход позволяет не зависеть от реализуемых
по пути алгоритмов кеширования, и в то же время обеспечить
нормальное кеширование страниц (и беспроблемную навигацию по
истории). Кеши страниц на nginx'е при этом можно склеить с
помощью грамотного указания ключа кеширования и использования
proxy_cache_bypass. Так делали раньше чуть менее, чем все.
[...]
--
Maxim Dounin
http://nginx.org/en/donation.html
Подробная информация о списке рассылки nginx-ru