Обновление CSS и JS без очистки кеша

Обновление CSS и JS без очистки кеша

Когда вы постоянно вносите изменения в стили/скрипты, то браузерам ваших посетителей нужно подгружать уже обновленные файлы автоматически, а не чистить кеш. Установив этот хак вы увидите, в строке подключения после каждого файла, версию привязанную к времени последней модификации.


Установка:
1. Открыть engine/modules/main.php и найти:
echo $tpl->result['main'];

Добавить ниже:
preg_match_all("#<(link|script).+?(href|src)=('|\")(".$config['http_home_url']."|/)(.*?(\.css|\.js))\\3.*?>#i", $tpl->result['main'], $jscssarr);
if(!empty($jscssarr[5])) {
    foreach ($jscssarr[5] as $jscssfile) {
        if (file_exists(ROOT_DIR."/".$jscssfile)) {
            $tpl->result['main'] = str_ireplace($jscssfile, $jscssfile."?v=0.". filemtime(ROOT_DIR."/".$jscssfile), $tpl->result['main']);
        }
    }
}

Готово!

Важно: хак несовместим с модулем DLE Asset 1.1.1 : автозагрузка стилей и скриптов.

obnovlenie-css-i-js-bez-ochistki-kesha.zip
Создайте аккаунт или авторизуйтесь для скачивания
 
Версия DLE: 11.x-14.x
Источник

Примечание от Oxigen: добавлен плагин

Информация
Посетители, находящиеся в группе Гость, не могут оставлять комментарии к данной публикации.

Комментариев 4

vir2oz 8 марта 2021 21:00
Oxigen, да, я перед этим просматривал код, просто написал такой комментарий, чтобы можно было его быстро скопировать.
Oxigen 7 марта 2021 19:56
vir2oz, будьте внимательны. Приведенный вами код хака идентичный коду в статье. Разница только в после какой строки подключать.
--------------------
Всё, что вы напишите, будет использовано против вас при показе контекстной рекламы :)
vir2oz 7 марта 2021 10:56
kokoswom, на одном форуме написал, что не работает и killoff доработал. После:
echo $tpl->result['main'];

Вставляем:
### CSS/JS ###
preg_match_all("#<(link|script).+?(href|src)=('|\")(".$config['http_home_url']."|/)(.*?(\.css|\.js))\\3.*?>#i", $tpl->result['main'], $jscssarr);
if(!empty($jscssarr[5])) {
    foreach ($jscssarr[5] as $jscssfile) {
        if (file_exists(ROOT_DIR."/".$jscssfile)) {
            $tpl->result['main'] = str_ireplace($jscssfile, $jscssfile."?v=0.". filemtime(ROOT_DIR."/".$jscssfile), $tpl->result['main']);
        }
    }
}
kokoswom 7 марта 2021 02:24
14.1 ни через плагины ни через сам файл движка не пашет хак