Доброе утро.
Почему в nginx нету поддержки примитива etags?
Его хорошо было бы иметь для закэшированного контента, что позволило бы снизить трафик.
Вы наверняка скажете про «If-Modified-Since», но для динамического контента «Last-Modified» будет меняться, когда md5 или sha1 от того же динамического контента не будет зависеть от времени создания кэша.
Опишу пример:
1. пользователь запрашивает динамическую страницу, которая кэшируется nginx-ом (GET /some.xml)
фронтенд отправляет запрос на один из бэкэндов, получает ответ, сохраняет его в кэше и отдает ответ пользователю с заголовком «Last-Modified: Tue, 24 Apr 2012 06:29:47 GMT»
2. пользователь повторно запрашивает документ, указав «If-Modified-Since» равным «Tue, 24 Apr 2012 06:29:47 GMT», в ответ получает ответ с кодом 304
3. спустя время, выходящее за expire документа, пользователь опять запрашивает документ, указав старую дату изменения.
В ответ он получает полностью весь документ и новую дату Last-Modified
Если бы при этом использовался ETAG, который бы считался исходя из содержимого ответа то клиент при повторном запросе бы получил ответ с кодом 304
насколько плохо использовать etags с ключом полученным с помощью хэширования ответа, и если такой вариант приемлем, почему он до сих пор не реализован?
--
With best wishes
Nikita Kuznetsov (Unix Developer)
Site: http://daedalus.ru
GSM: +79262068831
Skype: infantmessenger,
Jabber/GTalk: kalloc@me.com