Как заставить закешированный CSS-файл переименоваться?
Допускаю, что вопрос тупой, но ответа пока мне никто не дал.
Всё знают, что в ЛС, независимо от шаблона и количества плагинов, генерируется некий собирательный CSS-файл, который потом и подключается к каждой странице:
Если кратко, то задача сделать так, чтобы этот файл поменял название и стало что-то вроде:
Но сколько я ни очищал кэш, этот файл перегенерируется с тем же именем. А Chrome, например, как закеширует однажды CSS, так и потом всё время его использует. Обновишь страницу — он вроде показывает новую версию, но проходит пять минут — и опять всё по-старому. Нужно, чтобы имя CSS-файла поменялось (альтернативный вариант — добавить что-то вроде ?v=2 после названия файла, но как это сделать?).
Вопрос: как мне переименовать закешированный CSS, чтобы все браузеры поняли, что файл изменился?
UPD: Кое-что есть здесь, но это не решает проблему (файл пересоздаётся с прежним именем).
Всё знают, что в ЛС, независимо от шаблона и количества плагинов, генерируется некий собирательный CSS-файл, который потом и подключается к каждой странице:
<link rel='stylesheet' type='text/css' href='http://www.site.ru/templates/cache/new/5e30fbee88c09e7e63ef7d3833309448.css' />
Если кратко, то задача сделать так, чтобы этот файл поменял название и стало что-то вроде:
<link rel='stylesheet' type='text/css' href='http://www.site.ru/templates/cache/new/38335e30fbee3094488c09e7e63ef7d8.css' />
Но сколько я ни очищал кэш, этот файл перегенерируется с тем же именем. А Chrome, например, как закеширует однажды CSS, так и потом всё время его использует. Обновишь страницу — он вроде показывает новую версию, но проходит пять минут — и опять всё по-старому. Нужно, чтобы имя CSS-файла поменялось (альтернативный вариант — добавить что-то вроде ?v=2 после названия файла, но как это сделать?).
Вопрос: как мне переименовать закешированный CSS, чтобы все браузеры поняли, что файл изменился?
UPD: Кое-что есть здесь, но это не решает проблему (файл пересоздаётся с прежним именем).
17 комментариев
тупыхвопросов. ИМХО.P.S.: Я бы вам плюсик поставил, но не могу.
Или я что-то не так понял? :)
Чтобы вместо, к примеру:
стало:
Как сам файл перегенерировать — я знаю. И как кэш чистить. Но вот как заставить его переименоваться — не знаю.
костыльинтересный способ:),имя файла генерится в Viewer.class.php, переменная $sCacheName
вот строка, у меня 875
ну а дальше все зависит от возможностей, я _head изменил на _head1, после этого имена кешированных JS и CSS файлов изменились.
1. Предложенный выше plugin, хоть и работает но тормозит не приемлемо.
2. Монстр образную админку ради такой ерунды запускать? — тоже не очень вариант.
Самое «чистое» решение к которому в итоге пришли это «дерганье» конфигурации шаблона, которая тут:
/templates/skin/MYSKIN/settings/config/config.php
Там, собственно, в переменной $config['head']['default']['css'] перечисленны CSS-ы. и любое изменение этого массива (добавить новый CSS, убрать существующий, поменять порядок) -вызывает пере-генерацию «сжатого» файла с новым именем.
Можно просто создать пустой файл с расширением .CSS внести его в конфиг — и вуаля. Решение коненчо не очень идеальное, но уж лучше чем .php исходники движка ковырять.