Предположим, что мы изменили много функций для модуля (шаблоны, макеты, CSS) и собираемся перенести эти изменения на рабочий сайт, но многие клиенты кэшировали CSS в своих браузерах. Итак, вот вопрос. Как принудительно очистить CSS-кеш клиента и избежать переименования файла ( styles.css
-> styles-v2.css
). Есть один логический способ, но он не работает в Magento, потому что он проверяет файл, существующий (как этот метод работает для файлов JS), см. Ниже:
<action method="addCss">
<stylesheet>css/styles.css?1</stylesheet>
</action>
Есть идеи?
Вы можете использовать модуль OpenSource Aoe_JsCssTstamp, который добавляет информацию о метках времени в объединенные файлы CSS. Временные метки для простых (не объединенных) CSS-файлов пока не поддерживаются, но это будет легко реализовать.
источник
На github Magento Cachebuster есть бесплатное расширение, которое делает именно это. Это ре
https://github.com/gknoppe-guidance/magento-cachebuster
источник
Для этого я использую свое собственное расширение Speedster Advanced. Но основной принцип заключается в том, что имя объединенных файлов CSS и JS включает метку времени последнего измененного файла - см
Mage_Core_Model_Design_Package::getMergedCssUrl()
. Каждый раз, когда вы редактируете любой из CSS-файлов, создается новое имя файла, в результате чего браузеры запрашивают новый файл вместо повторного использования кэшированной версии. Поскольку ваш головной блок может быть кэширован, необходимо обновить кеш Magento.источник
Я также реализовал кэш-бастер для CSS-файлов. Лучший способ, я думаю, состоит в том, чтобы расширить Mage_Page_Block_Html_Head и перегрузить функцию ниже и обновить массив $ skinItems с вашими желаемыми изменениями.
Получил вдохновение отсюда. Источник
источник
Существует простой, но громоздкий обходной путь, который не требует никаких плагинов и просто использует встроенные возможности Magento - полезно, если вам просто нужно быстро сделать это на существующем сайте, не желая рисковать установкой дополнительного кода.
Идея состоит в том, что вы можете использовать объединенную систему CSS для генерации имени файла очистки кэша.
Поскольку имя объединенного файла CSS является хэшем всех файлов, которые объединяются вместе, вы просто добавляете дополнительный пустой файл CSS в тему с отметкой даты для имени.
Так:
<action method="addCss"><stylesheet>css/cachebust_091014.css</stylesheet></action>
Теперь нажмите «live» и очистите кэш magento, объединенный css-файл теперь будет иметь другое имя, и ваши кеши будут уничтожены!
Это громоздко, так как каждый раз, когда вы хотите разрушить кеш, вам нужно изменить это имя файла, но для этого не требуется ничего, кроме встроенных возможностей Magento, так что это удобно, если вы застряли и нуждаетесь в быстром исправлении!
источник
=> Вместо использования этого кода:
=> Попробуйте использовать этот код:
Но это не очень приятно ...
источник
Я нашел модуль, который добавит строку запроса в конец всех CSS и JS в макетах XML. Строка запроса настраивается администратором.
https://github.com/mklooss/Loewenstark_Head
Основная идея состоит в том, чтобы переопределить,
_prepareStaticAndSkinElements
чтобы включить строку запроса, как это сделано в модуле, показанном ниже.источник
Если я понимаю предложенное решение в вашем вопросе, вы можете сделать это с небольшим изменением основного файла (на самом деле не редактируйте основной файл ):
Добавьте что-то вроде? V = 1 в строку 198, чтобы все файлы CSS были добавлены:
источник
Я думаю, что Fooman Speedster Advanced ( http://www.magentocommerce.com/magento-connect/fooman-speedsteradvanced-4030.html ) может быть решением:
«Полностью автоматизированный после установки, с автоматическим контролем версий при обновлении файлов Javascript / CSS»
источник
Я построил бесплатный модуль для этого:
http://www.magentocommerce.com/magento-connect/frontend-flush-2048.html
Пожалуйста, дайте мне знать, если он не работает должным образом, но я построил его так, чтобы объединенные файлы js и css имели другой хэш, если содержимое одного из объединенных файлов изменилось. По умолчанию Magento изменяет хеш объединенного файла, только если имя файла одного из включенных файлов изменилось.
ОБНОВИТЬ
Я также сделал бесплатный и простой модуль минификации для тех, кто в это верит.
http://www.magentocommerce.com/magento-connect/minify-7771.html
источник
Есть действительно хороший модуль, созданный Фабрицио Бранкой, который делает именно то, что вас интересует. Он называется AOE_JsCSSTStamp . Что оно делает? Он добавляет метку времени к ресурсам CSS и JS. Когда вы очищаете кеш CSS / JS, метки времени воссоздаются.
Браузер увидит другое имя файла - поэтому он снова загрузит ресурсы и получит самое свежее, а не кэшированное в браузере.
источник
Просто отредактируйте метод getCssJsHtml в Mage_Page_Block_Html_Head , добавьте такую строку в течение нескольких дней после редактирования css, и это все ... это просто работает
источник
Несколько лет спустя и, не найдя ни одного полезного расширения, которое не объединит файлы и является простым, я создал свое собственное. Основная идея заключается в том, что после очистки кеша будет обновляться отметка времени. Другими словами - когда вы что-то измените
css/js
, просто очистите кеш, и отметка времени будет обновлена.источник
Сделайте копию своей темы с новым именем (themev2) - и скин, и приложение / дизайн, и т. Д. Затем выберите новую тему в админке.
источник