URL-адреса із запитом відключає кешування?


12

Чи пов’язана рядок із запитом, приєднаним до URL-адреси, призводить до того, що браузери ніколи не кешують її? Наприклад, мій сайт робить щось подібне:

/radar-picture.png?v=sep2013

І, здається, FireFox ніколи не кешує цю картину; він завантажується на кожен запит.

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


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

Відповіді:


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 дуже повільна.
Містер Сміт
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.