Являются ли запросы параметризованной версии для 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! Сеть разработчиков. Они должны знать, в конце концов.

Другие вопросы по тегам