На рассмотрении

+3

Принудительное обновление закешированных у клиента JS/CSS

Поло Арт Обновлен 5 лет назад в категории CMS Шаблоны 2

Вы наверняка сталкивались с такими случаями, когда вы провели изменения на сайте, поправили js/css, а клиент вам заявляет, что изменений нет. Вы предлагает нажать Ctrl+F5 и всё становится ОК.

НО!

Вот как это сделано в других системах
<link href="{$wa_active_theme_url}clear.shop.css?v{$wa_theme_version}" rel="stylesheet" type="text/css"

Я предлагаю ридискрипту по дефолту пойти тем же способом. Это дико удобно, само обновляется то, что должно обновляться. Допустим, обновляется дефолтный flatlines, при этом у всех(!) встанет именно тот flatlines, какой задумал разработчик, не нужно ctrl+f5 нажимать.
Или мы сами проводим у клиента изменения в кастомной теме. Просто меняем номер в theme.xml - и вуаля!

И, главное, всё уже есть!
<general>
<author>ReadyScript lab.</author>
<name>Современная</name>
<description>Адаптивная тема, собранная по сетке bootstrap 3 в плоском стиле</description>
<version>3.0.37</version>
</general>

Добавляем version к пути js/css - и всё, разработчик темы меняет номер, и меняется у всех.

***
1. да, я знаю, про кеширование статики на уровне вебсервера
2. в поддержке мне предложили - Вебсайт-Настройка сайта-Подключаемые CSS файлы. Тоже решение, туда-сюда значение опции менять, но, если я всегда хочу сжатые раздавать?
3. а ещё можно такую штуку реализовать через unix timestamp - но слишком часто обновлять тоже ни к чему

Комментарии 2

  • Артем Полторанин 5 лет назад

    В ReadyScript достаточно включить опцию Объединять CSS, JS в настройках сайта, чтобы система сама обновляла URL файлов в зависимости от timestamp файлов.

    Или если вы не желаете включать объединение CSS,JS, никто не мешает вам подключать файлы с использованием переменной, например:

    {$css_version=1}
    {$js_version=1}
    {addcss file="style.css?v={$css_version}"}
    {addjs file="style.js?v={$js_version}"}

  • Поло Арт 5 лет назад

    Артём, смарти можно и отбросить - мы прекрасно его знаем.
    Мой посыл в первом посте был направлен на то, чтобы данный функционал был включен в основную ветку.

    Нам ничего не мешает что-то подключать - включите этот функционал для всех, это же так удобно.

    Я не прошу помощи, мы сами тащим. Я предлагаю новый функционал. Не надо нас рассматривать как клиентов, мы - партнёры.

Написать сообщение