Являются ли запросы параметризованной версии для css/js излишними, когда сервер отправляет etags?
Это параметризованные версии запросов, такие как style.css?v=1234
, для css/js лишнее, когда etags отправляются сервером?
1 ответ
(Этот вопрос занял в Google очень высокий рейтинг, поэтому я решил добавить запоздалый ответ всем, кто еще ищет.)
Ты прав. Добавление номеров версий в качестве строки запроса является последним средством для управления версиями ресурса, поскольку некоторые прокси-службы (в частности, Squid 3 и более ранние версии) не кэшируют файлы со строкой запроса или игнорируют строку запроса.
Считается, что некоторые старые браузеры не могут обрабатывать ресурсы кэширования с помощью строк запросов, но я еще не видел этот городской миф, подтвержденный.
Если вы не можете настроить заголовки сервера, лучше всего добавить номер версии в само имя файла, поэтому не делайте этого:
css.css?v=2.0
Но сделайте это вместо этого:
css-2.0.css
Конечно, если вы можете изменить заголовки, используйте их! Etag
поддерживается с 90-х годов, так что это хорошая ставка для управления версиями ресурсов. Есть также Expires
, Cache-Control
а также Last-Modified
, Вы должны использовать комбинацию (но не все) этих заголовков с учетом потребностей вашего приложения.
Для хороших практических примеров я советую прочитать больше о заголовках HTTP и кэшировании в Google Developers и Yahoo! Сеть разработчиков. Они должны знать, в конце концов.