HTTP-кеширование: зачем использовать ETag вместо Cache-Control и / или Expires? - PullRequest
4 голосов
/ 06 декабря 2011

Я читал о кэшировании в браузере HTTP и играл с ним на своем собственном сайте, когда заметил, что библиотека с поддержкой Media Temple ProCDN от jQuery : http://code.jquery.com/jquery-1.7.1.min.js не работаетНе следуйте рекомендациям по кэшированию по данным Google.

Практически (я думаю), существует два типа кэширования на стороне браузера:

  1. Expires and Cache-Control: max-age.

    Они считаются «сильными заголовками кэширования», которые применяются безоговорочно, то есть после того, как они установлены и ресурс загружен, браузер не выдастлюбые GET-запросы на ресурс до истечения срока действия или максимального срока действия. "

  2. Last-Modified и ETag

    Они оба предлагают своего рода кэширование, но Last-Modified следует эвристике, специфичной для браузера, и ETag требует большего количества HTTP-запросов, хотя они могут быть легковесными, когда возвращается 304 Not-Modified.В любом случае, оба могут включать больше запросов GET.

Статическая версия jQuery не должна никогда меняться.Так что я думаю, что он должен быть подан с заголовком Expires далекого будущего.Более того, подобный актив, который можно использовать на многих сайтах, в идеале не требует нового запроса GET (даже если он мал для проверки правильности ETags).

Кажется, что используется только ETag и нет кэша-Контроль или истекает заголовок:

Status: HTTP/1.1 200 OK
Accept-Ranges:  bytes   
Content-Type:   application/x-javascript; charset=utf-8 
Date:   Mon, 05 Dec 2011 19:45:57 GMT   
ETag:   "9e69008-16eac-5177b900"    
Last-Modified:  Tue, 22 Nov 2011 02:11:16 GMT   
Server: ECS (fra/D59E)  
Vary:   Accept-Encoding 
X-Cache:    HIT 
Content-Length: 93868   
Connection: close

от: http://web -sniffer.net /? Url = http% 3A% 2F% 2Fcode.jquery.com% 2Fjquery-1.7.1.min.js

Так есть ли причина не устанавливать заголовок Expires на далекое будущее или использовать Cache-Control для такой ситуации?Я что-то здесь не так понял?Или это неверная конфигурация людей из jQuery?

1 Ответ

2 голосов
/ 06 декабря 2011

ehc, я коснусь этой проблемы, но с уважением отмечу, что это может быть не лучшим местом для озвучивания таких проблем, поскольку это на самом деле не ТАК вопрос? (может быть? но whatevs)

На самом деле, мы не используем proCDN прямо сейчас - мы находимся на старом, который не позволяет нам ничего настраивать: / Но! Хорошие новости! Они связывают нас с некоторыми новыми вещами, procdn (который также имеет некоторую статистику / трекинг, который будет немного опрятен) и некоторыми более быстрыми коробками, поэтому мы сможем улучшить наше кэширование - потому что вы правы, это не так здорово сейчас. Кроме того, мы не можем делать какие-либо пользовательские заголовки или типы или что-либо еще, что иногда приятно делать.

Звучит так, будто вы провели много исследований в этой области - зайдите когда-нибудь в # jquery-dev (для меня то же имя пользователя), если вы хотите предложить свою помощь, чтобы исправить некоторые из этих настроек и ничего, так как вы казаться знающим и заинтересованным, чтобы помочь :)

...