Кто-нибудь знает какие-либо проблемы, используя запрос в файле CSS?
Мы вносим изменения в наш главный спрайт, и я обсуждаю преимущества либо полного изменения имени, либо добавления строки запроса в конец.
Существует логика сохранения старой версии для поддержки кеша Google, archive.com и т.д., но она также была бы намного более чистой в нашей системе, если бы я просто редактировал файл и добавлял строку запроса к изображению CSS звоните:
#element-id { background-image: url('my-sprite.png?version1'); }
Мой вопрос: кто-нибудь знает какие-либо проблемы с браузером с использованием кеша строки запроса в файле CSS?
Мое подозрение заключается в том, что браузеры обрабатывают запросы изображения css одинаково, независимо от того, являются ли они из файлов CSS или через HTML, поэтому, пока мой сервер правильно выражает информацию заголовка, я должен быть в порядке.
Ответы
Ответ 1
Если браузер не будет серьезно нарушен, не должно быть ничего плохого. Предположим, вы хотели использовать динамический файл, например url('/layout.php?section=1')
или что-то еще. Строки запроса требуются там, поэтому, если браузер не работает, это будет сильно нарушено.
Ответ 2
tl; dr Использование параметров запроса не является 100% -ным решением.
При использовании конвейера активов существуют две проблемы:
- Убедитесь, что ваши ресурсы кэшируются, когда вы хотите, чтобы они
- Нарушение кэша при просмотре файла.
Параметр строки запроса иногда приводит к тому, что сети или браузеры не кэшируют ваш ресурс вообще. Что еще, как отмечает г-н Ирланд, "подход строки запроса не является надежным для клиентов, стоящих за Squid Proxy Server", поэтому он может оказаться ненадежным для перебора кеша. В принципе, вы не хотите полагаться на конфигурацию других людей.
Несколько ссылок:
-
Rails Guides: Asset Pipeline - Rails Asset Pipeline построен на Sprockets проект, который был сосредоточен на решении этих проблем в течение нескольких лет. Они конкретно выделяют жирным шрифтом не менее: "Не все кеши будут надежно кэшировать контент, где имя файла отличается только параметрами запроса".
-
Стив Сулдерс Статья об обновлении активов - Стив Судерс - это что-то вроде гуру веб-производительности и автора книги О'Рейли "Высокопроизводительные веб-сайты" написали эту статью, на которую ссылаются в руководствах Rails, которые предлагают использовать обновление имен файлов, чтобы избежать проблем с людьми за прокси-серверами.
-
Предложение HTML-Boilerplate - Проект Boilerplate HTML5, поддерживаемый почтенным Полом Ирландцем и Николасом Галлахером, использует .htaccess для создания по существу фильтр, чтобы сделать filename revving. Они специально предлагают использовать возобновление имени файла вместо версий строки запроса.
Ответ 3
Единственная проблема, с которой вы можете столкнуться, - файлы css, как правило, кэшируются больше, чем вы, вероятно, захотите. Если вывод my-sprite.png?version1
будет меняться часто, его лучше разместить на самой странице.