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