Re: Добавить переменую $cache status
Maxim Dounin
mdounin at mdounin.ru
Tue Nov 19 02:30:51 UTC 2013
Hello!
On Mon, Nov 18, 2013 at 02:46:31PM -0500, S.A.N wrote:
> Если в нашей дискуссии есть практический смысл (реализация Etag в ближайших
> версия).
> Я могу много рассказать про невозможность использовать Last-Modified для
> ревалидации.
>
> Реальный пример из жизни, у нас есть страница товара, ниже выводим
> комментарии пользователей, хедер страницы Last-Modified – это дата
> создания/редактирования товара, это необходимо для поисковиков RSS клиентов
> и т.д. При добавления нового комментария мы не можешь изменить Last-Modified
> всей страницы, мы можем изменить только её ETag, и самая большая проблема
Если вы не меняете Last-Modified документа при его изменении - у
вас проблема, как справедливо заметил Гена. Вне зависимости от
того, кто выступает клиентом. Но это, опять же, не рассказ о том,
почему не годится Last-Modified, а рассказ о том, как много всего
можно напрограммировать криво.
> Last-Modified это точность до секунды, к сожаления два комментария могут
> прийти в одну секунду, но в кеше появится только первый комментарий, второй
> комментарий просто не сможет сбросить кеш потому что у него такой же
> Last-Modified.
Проблема subsecond resulution - имеет чуть менее, чем бесконечное
множество решений, начиная от совсем простого "подождать секунду"
и до выдачи "умных" значений Expires / Cache-Control: max-age.
> Но главная особенность, Etag он может хранить серелизованые значения или
> хеши которые являются ключами в NoSQL, в них хранится расширенная мета
> информацию для использования её в бекенде при ревалидации, с Last-Modified
> этого сделать невозможно.
Я уже в этом треде отвечал на попытку рассказать про такие
"преимущества" ETag'а. То, что ETag допускает подобное
использование не по назначению - это, наоборот, недостаток
технологии, а не её достоинство.
> Etag не просто удобней использовать, он даёт новые возможности которые не
> может дать Last-Modified, по этому поддержка Etag это стратегический вопрос
> а не тактический.
На самом деле, основное практическое преимущество ETag'ов перед
перед Last-Modified: без них не работает докачка в IE9+. Именно
для этого, кстати, поддержка ETag'ов вообще появилась в nginx'е.
> Не понимаю зачем менять версию кеш файла, для передачи Etag в бекенд?
> Нам для полного счастья нужна одна мелочь HTTP_IF_NONE_MATCH, серверу нужно
> её заполнить значениям из файла кеша и передать на бекенд, все больше сервер
> ничего делать не должен, бекенд ответит статусом 304 или 200.
> Зачем ждать светлого будущего, если можно создать светлое настоящие для
> Nginx уже сегодня, осталось мелочь реализовать Etag в ревалидации
В код вы, судя по всему, заглядывать не пытались. Тогда
рекомендую просто поверить на слово тому, что уже было сказано -
не верить и переспрашивать ещё раз бессмысленно, т.к. на выходе
будет та же проблема - поверить или переспросить ещё раз.
http://lurkmore.to/Рекурсия
--
Maxim Dounin
http://nginx.org/en/donation.html
Подробная информация о списке рассылки nginx-ru