Re: Добавить переменую $cache status
Maxim Dounin
mdounin at mdounin.ru
Mon Nov 18 13:57:47 UTC 2013
Hello!
On Fri, Nov 15, 2013 at 01:46:24PM -0500, S.A.N wrote:
> Отличия ETag от Last-Modified, в формате значений, в ETag произвольный
> формат и многие разработчики это используют для передачи хеш состояний
> ответа, некоторые даже используют значения ETag для передачи серелизированой
> строки в которой хранится состояния ответа.
> Это удобный и гибкий способ, конечно дефакто в Last-Modified можно назначить
> любое значения, браузеры не анализируют значения как дату они просто, в
> следущем запросе возвращают это значения в неизменяемом виде назад серверу,
> но так делать не надо, поисковики будут не восторге.
> Многие используют ETag для передачи своих хешей и не захотят этот хеш
> передавать в Last-Modified, в их алгоритмах ревалидации обязательно
> получения от клиента хеша состояния, дата не может быть хешем.
Если бекенд свой - то можно банально получить время последней
модификации, и использовать его.
Понятно, что ETag имеет произвольный синтаксис и за счёт этого
немного удобней. Столь же понятно, что Last-Modified - это
гораздо шире поддерживаемая сущность, ибо это единственный
доступный механизм в HTTP/1.0 (и в добавок - ложится на файловую
систему, что позволяет его использовать всяким инструментам вроде
curl).
Принципиальной разницы, как я уже говорил, нет. Есть вопрос
выбора.
> Возможно, есть способ как-то передать это в значения переменой
> $upstream_http_etag?
> Тогда выйдет все просто.
Как я уже писал, для этого придётся менять заголовки кеш-файлов.
Что в свою очередь потребует вводить их версионирование, ибо его
сейчас нет. Задача выполнимая, но не "всё просто".
--
Maxim Dounin
http://nginx.org/en/donation.html
Подробная информация о списке рассылки nginx-ru