URL с запросом отключает кеширование?

12

Влияет ли строка запроса, прикрепленная к URL, браузеры никогда не кэшируют ее? Например, мой сайт делает что-то вроде этого:

/radar-picture.png?v=sep2013

И кажется, что FireFox никогда не кэширует эту картинку; он загружается при каждом запросе.

Я бы хотел, чтобы FireFox кешировал его столько, сколько захочет. Я хочу заставить его загружать только после изменения v=параметра.

Мистер Смит
источник
1
Я думаю, вы могли бы сделать это, если вы просто измените имя файла вместо запроса. Так что теперь имя файла будет таким, radar-picture-sep2013.pngи когда оно изменится в какой-то момент в будущем, оно будет radar-picture-jan2014.png. Вы можете настроить максимальный возраст PNG на год, поэтому, если имя файла не изменится, браузер может загружать кэшированное изображение в течение длительного времени.
ВСТМ

Ответы:

3

Добавление пары ключ / значение строки запроса к статическому ресурсу (такому как изображение, CSS или JavaScript) может вызвать проблемы с кэшированием .

В частности, поскольку вы упомянули Firefox , ваша проблема может быть связана с «коллизией кэша», где:

Хэш-функции дискового кэша Firefox могут генерировать коллизии для URL, которые отличаются незначительно, а именно только на 8-символьных границах. Когда ресурсы хэшируются к одному и тому же ключу, только один из ресурсов сохраняется в кеше диска; остальные ресурсы с тем же ключом должны быть повторно получены при перезапуске браузера. Таким образом, если вы используете дактилоскопию или иным образом программно генерируете URL-адреса файлов, чтобы максимизировать частоту обращений к кешу, избегайте проблемы коллизий хеша в Firefox, гарантируя, что ваше приложение генерирует URL-адреса, которые отличаются на границах более 8 символов.

[Источник: https://developers.google.com/speed/docs/best-practices/caching ]

Майк Хадсон
источник
7
Что такое «8-символьная граница» и КАК я могу избежать этого столкновения? Как должны выглядеть мои URL?
Андрей
2

В этом ответе на stackoverflow утверждается, что некоторые браузеры по-разному реагируют на нажатие клавиши ввода в адресной строке по сравнению с нажатием на ссылку, когда в URL-адресе есть строка запроса: https://stackoverflow.com/a/85386/1145388

Когда вы тестируете, убедитесь, что вы нажимаете на ссылки, а не обновляете или нажимаете ввод в строке URL.

Стивен Остермиллер
источник
2
Я думаю, что ответ на stackoverflow может быть устаревшим. Когда я помещаю строку запроса в таблицы стилей style.css?v=sep2013и 150 КБ background-image:url('bgimage.jpg?v=sep2013');, навигация по сайту (с помощью нажатия ссылок или ввода в адресной строке) в Firefox происходит очень медленно.
г-н Смит