Блог Евгения Попова :: Программы :: DataLife Engine

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


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

Собственно, сама хак:
Идем в /engine/modules/main.php (в DLE 13+ это всё нужно сделать через создание плагина) и перед:
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']);
		}
	}
}

Теперь вы увидите после каждого файла версию, привязанную к времени последней модификации.

Для установки на DLE 13+ можно просто установить плагин, без внесения правок в файлы движка:
[attachment=135:obnovlenie-css-i-js-bez-ochistki-kesha.zip]

ВНИМАНИЕ! Данный хак не работает с dle-asset, думаю не нужно объяснять почему… :)
Перейти на сайт (скачивать файлы можно только на сайте)