nginx 1.3.12 SPDY add_headers bug
Maxim Dounin
mdounin at mdounin.ru
Tue Feb 12 01:49:32 UTC 2013
Hello!
On Mon, Feb 11, 2013 at 08:05:25PM +0000, Anatoly Mikhailov wrote:
> Добрый день,
>
> Обновившись до Nginx 1.3.12 с версии 1.3.5 заметил, что Chrome перестал
> брать из своего кэша (304) статику, которую отдаю таким образом:
>
> location ~ ^/(assets|images|javascripts|stylesheets|swfs|system)/ {
> gzip_static on;
> expires max;
> add_header Cache-Control public;
> add_header Last-Modified "";
> add_header ETag "";
> }
>
> У нас SWF файлы размером более 1 мегабайта, которые подгружались один раз,
> после чего браузерный кэш был очень кстати, поэтому мы отключали все лишние заголовки.
> Под Firefox 18 закэшированная статика по-прежнему отдается из браузерного кэша.
> Не уверен, но возможно что-то связано с обновлением SPDY.
У вас отключены оба возможных cache validator'а (Last-Modified,
ETag), так что 304 с таким конфигом невозможно получить в
принципе. Chrome штатно пишет "(from cache)" вместо размера, если
таки берёт ответ из кеша, именно туда и надо смотреть (ну или в
логи nginx'а, чтобы уж совсем наверняка).
Погонял немного Chrome с подобным конфигом со spdy и просто по
https - не вижу каких-либо проблем, равно как и существенных
отличий в том, какие ответы берутся из кеша. Отличия есть между
http и https, но это выглядит как отличие в поведении браузера в
зависимости от протокола (и как бы намекает, что не надо
использовать https, даже со spdy, если хватает http).
Что до отключения "лишних заголовков" как о мере оптимизации - то
это выглядит как странное заблуждение. Заголовки позволяют
браузеру проверить, что ресурс на сервере совпадает с тем, что у
него в кеше, и соответственно ответ из кеша можно использовать.
Без Last-Modified/ETag - браузеру в аналогичных ситуациях придётся
просто загружать ответ заново, целиком.
--
Maxim Dounin
http://nginx.com/support.html
Подробная информация о списке рассылки nginx-ru