Кто-нибудь знает какие-либо проблемы с использованием строки запроса в файле CSS? - PullRequest
16 голосов
/ 28 октября 2011

Мы вносим изменения в наш основной спрайт, и я обсуждаю преимущества либо полного изменения его имени, либо добавления строки запроса в конец.

Есть логика сохранения старой версии для поддержки Googlecache, archive.com и т. д., но в нашей системе было бы намного чище, если бы я просто отредактировал файл и добавил строку запроса к вызову изображения CSS:

#element-id { background-image: url('my-sprite.png?version1'); }

Мой вопросКто-нибудь знает какие-либо проблемы браузера с использованием Buster кеш строки запроса в файле CSS?

Я подозреваю, что браузеры обрабатывают запросы изображений CSS одинаково, будь то из файлов CSS или через HTML, поэтому, пока мой сервер правильно отображает информацию заголовка, у меня все будет в порядке.

Ответы [ 3 ]

20 голосов
/ 03 апреля 2013

tl; dr Использование параметров запроса не является 100% решением.

При использовании конвейера ресурсов существуют в основном две проблемы:

  1. Убедитесь, что ваши ресурсы кэшируются, когда выхотите, чтобы они
  2. делали недействительной кеш при редактировании файла.

Параметры строки запроса иногда приводят к тому, что сети или браузеры вообще не кэшируют ваш ресурс.Более того, как указывает г-н Ириш, «подход с использованием строки запроса ненадежен для клиентов, использующих прокси-сервер Squid», поэтому он может быть ненадежным и для очистки кеша.По сути, вам не нужно полагаться на конфигурацию других людей.

Несколько ссылок:

  • Руководства по Rails: конвейер активов -Rails Asset Pipeline построен на Sprockets - проекте, который был сосредоточен на решении подобных проблем уже несколько лет.Они особо отмечают жирным шрифтом не менее, что «Не все кэши будут надежно кэшировать контент, если имя файла отличается только параметрами запроса».

  • Статья Стива Соулдерса о возобновляемых ресурсах - Стив Соудерс - гуру веб-производительности, и автор книги О'Рейли «Высокопроизводительные веб-сайты» написал эту статью, на которую ссылаются в руководствах по Rails, в которой предлагается использовать изменение имени файла, чтобы избежать проблем с людьми за прокси-серверами.1028 *

  • Предложение HTML5 Boilerplate - Проект HTML5 Boilerplate, поддерживаемый почтенным Полом Айришем и Николасом Галлахером, использует .htaccess, чтобы по существу создать фильтр для изменения имени файла.Они специально предлагают использовать изменение имени файла вместо версий строки запроса.

1 голос
/ 28 октября 2011

Если браузер серьезно не сломан, не должно быть ничего плохого.Предположим, вы хотите использовать динамический файл, например url('/layout.php?section=1') или что-то в этом роде.Строки запроса там вроде как требуются, поэтому, если браузер не будет работать, он будет очень сильно сломан.

0 голосов
/ 28 октября 2011

Единственная проблема, с которой вы можете столкнуться, это css файлы, как правило, кешируются больше, чем вы, вероятно, хотели бы. Если вывод my-sprite.png?version1 будет часто меняться, его лучше разместить на самой странице.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...