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