Хто-небудь знає про будь-які проблеми, використовуючи строку запиту в CSS-файлі?

Ми вносять зміни в основний наш спрайт, і я обговорюю переваги або повністю змінюючи його назву, або додаючи рядок запиту до кінця.

Є логіка збереження старої версії для підтримки кеш-пам'яті Google, archive.com і т. Д., Але це також буде набагато екологічно чистішим у нашій системі, якщо мені потрібно було просто відредагувати файл і додати рядок запиту до обраного дзвінка CSS:

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

Моє питання полягає в тому, чи хтось знає про проблеми браузера, використовуючи рядок кешу в рядку запитів у файлі CSS?

Моя підозра в тому, що веб-переглядачі обробляють зображення CSS таким же чином, незалежно від того, що це з CSS-файлів або через HTML, так що, поки мій сервер видає правильну інформацію про заголовок, я повинен бути в порядку.

16
Схоже, стековий переповнення робить те саме саме з їх справами, тому принаймні один випадок. Перевірте файл CSS : background-image: url ( "img/sprites.png? v = 4")
додано Автор Wesley Murch, джерело

3 Відповіді

tl; dr Використання параметрів запиту не є 100% рішенням.

Існує дві проблеми, пов'язані з використанням конвеєра:

  1. Переконайтеся, що ваші ресурси кешуються, коли ви хочете їх
  2. Недійсний кеш під час перегляду файлу.

Параметри рядка запитів іноді примушують мережі або браузери взагалі не кешувати ваш ресурс. Більше того, пан ірландський вказує на те, що "підхід запиту рядків не є надійним для клієнтів за проксі-сервером Squid", тому, можливо, я також недостовірний для згортання кеш-пам'яті. В принципі, ви не хочете, щоб ви покладалися на конфігурацію інших людей.

Пара посилань:

  • Інструкції з розробки Rails: магістральний трубопровід - трубопровід активів Rails побудований на < a href = "https://github.com/sstephenson/sprockets" rel = "nofollow noreferrer"> зірочки , проект, який був зосереджений на вирішенні цих типів завдань протягом гарного декількох років. Вони виділяють напівжирним шрифтом не менш того, що "Не всі кеші надійно кешують вміст, де ім'я файлу лише відрізняється за параметрами запиту".

  • Стів Соулдерс Стаття на повернення активів - Стів Судерс - це щось з гуру веб-виконавців і автор книги O'Reilly "Високопродуктивні веб-сайти", написав цю статтю, про яку йдеться в довідниках Rails, яка пропонує використовувати revivіng файлу, щоб уникнути проблем з людьми проксі-сервери.

  • Пропозиція HTML5 Boilerplate Suggestion - Проект HTML5 Boilerplate, який підтримує поважні Павло Ірланд та Ніколя Галлахер, використовує .htaccess, щоб по суті створити фільтр, щоб зробити ім'я файлу revving. Вони спеціально пропонують використовувати повернення файлу замість рядкових версій запиту.

20
додано
Хороша справа, що вікі контролює версію: github.com/paulirish/html5-boilerplate/ wiki/cachebusting/& hellip;
додано Автор mpen, джерело
Помилка посилання HTML5 Boilerplate. Найближча річ, яку я міг знайти, - це набір змін, в якому це було додано до проекту H5BP: github .com/h5bp/html5-boilerplate/commit/& hellip; .
додано Автор blachniet, джерело
додано Автор michieljoris, джерело

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

1
додано
Я ніколи не бачив динамічних файлів в CSS раніше, тому не бачив прецеденту. Чи знаєте ви з прикладу когось, хто його використовує?
додано Автор Steve Perks, джерело
Спасибі Уеслі - посилання на переповнення стеків, використовуючи це було золото !!! WRT кешування, там є статті, які браузери розглядають зображення та текстові файли за замовчуванням як кеш-пам'ять, і що-небудь з рядком запиту не підлягає кешування. Проте, вони будуть слухати інформацію заголовка, що надходить з сервера, тому вам потрібно бути обережним, щоб перебої кешу не переповнювали кеш на повний робочий день!
додано Автор Steve Perks, джерело
@StevePerks: Я використовував строки запиту для розміру зображень url (img.jpg? W = 200) на деякий час, але не відчував ніяких проблем. Я не бачу жодної причини, чому виникла проблема, URI - URI - це шлях до ресурсу - контекст не має значення. Кешова річ, хоча - я не впевнений ...
додано Автор Wesley Murch, джерело
Багато некрота, але я просто натрапив на ці теми. Rails Guide about assets говорить Не всі кеші дозволять надійно кешувати вміст, де ім'я файлу відрізняється за параметрами запиту : просто усвідомте, що вже відповідає 2-ая відповідь
додано Автор Karthik T, джерело

Єдине питання, на яке ви можете потрапити, - це файли CSS, як правило, більше кешовані, ніж ви, мабуть, захочете. Якщо висновок my-sprite.png? Version1 часто змінюватиметься, це буде краще помістити на саму сторінку.

0
додано
Файл CSS також закріплений кешем щоразу, коли він змінюється
додано Автор Steve Perks, джерело