Авто очистка кэша CSS и JS файлов

Как же задолбался я удалять эти два файла на момент создания собственного дизайна. Только изменив одну цифру для какого-нибудь отступа нужно лезть в этот кэш и «чистить» его. Наконец я не выдержал…

Открываем главный конфиг сайта /config/config.php строка 123 приблизительно так там

/**
 * Настройки кеширования
 */
// Устанавливаем настройки кеширования
$config['sys']['cache']['use']    = false;               // использовать кеширование или нет 
$config['sys']['cache']['type']   = 'file';     


Отключив кэширование разработчики позабыли о файлах CSS и JS — которые тоже кэшируются CMS — что создаёт тоннs головняка на стадии «создания» своего дизайна. Дописываем строку $config['sys']['cache_css_js'] = false; получится:

/**
 * Настройки кеширования
 */
// Устанавливаем настройки кеширования
$config['sys']['cache']['use']    = false;               // использовать кеширование или нет
$config['sys']['cache_css_js']    = false;               // использовать кеширование CSS JS
$config['sys']['cache']['type']   = 'file';     


Шуруем в какой-то очень главный модуль отвечающий за что-то там серьёзное по адресу /engine/modules/viewer/Viewer.class.php строка 1044 там:

/**
   * Если кеш существует, то берем из кеша
   */
  if( !file_exists($sCacheName) ) {
   /**
    * Создаем директорию для кеша текущего скина,
    * если таковая отсутствует
    */
   if(!is_dir($sCacheDir)){
    @mkdir($sCacheDir);
   }


По коду ясно, что кэширование CSS и JS файлов происходит «навечно» и их содержание изменится только если удалить эти файлы. Вот таким образом, разработчики CMS обрекли всех начинающих разрабов на тысячи лишних телодвижений.

Что делаем — ставим наше собственное условие !Config::Get('sys.cache_css_js') из конфига через «или»:

/**
   * Если кеш существует, то берем из кеша
   */
  if( !file_exists($sCacheName) || !Config::Get('sys.cache_css_js') ) {
   /**
    * Создаем директорию для кеша текущего скина,
    * если таковая отсутствует
    */
   if(!is_dir($sCacheDir)){
    @mkdir($sCacheDir);
   }ir);
   }


Всё :) Слава яйцам!
Горы с плеч и чувство незабываемой лёгкости наполнит ваше тело.

PS: важно установить параметр в true сразу после смены дизайна. Включение данной опции на нагруженном сайте может привести к многократному увеличению нагрузки — вы же всё-таки кэш отключаете…
Профессиональные сервера DELLR630 справятся с любой вашей задачей.

10 комментариев

avatar
Отключив кэширование разработчики позабыли о файлах CSS и JS — которые тоже кэшируются CMS — что создаёт тоннs головняка на стадии «создания» своего дизайна.
Надо просто поднатужится и прочитать конфиг до конца. Разработчики ничего не забыли. А из-за своей не внимательности вы сделали дармовую работу.

По коду ясно, что кэширование CSS и JS файлов происходит «навечно» и их содержание изменится только если удалить эти файлы. Вот таким образом, разработчики CMS обрекли всех начинающих разрабов на тысячи лишних телодвижений.
Нет слов. Откуда вы такие начинающие беретесь? Русским языком комментирован конфиг же:

$config['compress']['css']['merge'] = false;       // указывает на необходимость слияния файлов по указанным блокам.
$config['compress']['js']['merge']  = false;    // указывает на необходимость слияния файлов по указанным блокам.


А вообще есть такая штука как поиск, помогает.

з.ы. а про кеш, который вы говорили в топике — это кеш БД.
avatar
Искал, а что там есть?
avatar
ответы на все вопросы
avatar
который вы говорили в топике — это кеш БД.
Да нет же, именно кэш этих двух файлов — и лежат они в папке /templates/cache/
И как-то не совсем ясно как «указывает на необходимость слияния файлов по указанным блокам.» относится к кэшированию…
avatar
А по сути, имеет место не понимание сути вещей :) Параметр отвечающий за слияние файлов CSS отчасти не имеет оношения к кэшу чуть больше, чем вообще не имеет.

А сброс кэша на продакшене не приводит к сбросу кэша в браузере. У меня браузер даже не обращается за этими файлами — сразу берет их своего браузерного кэша. Чтобы его принудить обноситься, самый тупой и дедовский метод — поменять имя файлов. Кто-то делает версию сss как параметр типа main.css?ver=1 кто еще как извращается.

Проблем при отключении «слияния» появится больше, чем было с ним — файлы CSS и JS будут закэшированы самим браузером. Доказывать никому ничего не буду ;)
avatar
Товарищ PSNet уверяет в том, что слияние CSS файлов и понятие «кэширование» это одно и тоже. Слияние делается для:
— удобства и уменьшения загружаемых файлов
— предотвращения кэширования браузером

Поясню — в данном случае, речь идёт о кэшировании результатов операции слияния CSS файлов, чтобы не выполнять её каждый раз. При этом, по «понятиям» в случае именно отключения кэширования, операция СЛИЯНИЯ CSS файлов должна выполняться, но уже каждый раз заново.

Таким образом, отключив функцию слияние CSS файлов, процесса кэширования результатов данной функции не происходит в принципе, так как вы отключили саму функцию, результат которой должен был быть закэширован. Отсюда следует, что имея предоставленный разработчиками функционал, вы НЕ можете отключить кэширование функции слияния не отключив при этом саму функцию слияния.

В данном топике приведён вариант ОТКЛЮЧЕНИЯ кэширования результатов функции слияния CSS файлов, при штатной работе самой функции слияния файлов(!)

ЗЫ: PSNet, ты знатный троль! Заставил меня доказывать, что ты не прав, когда я обещал этого не делать :)

PPS: отключить кэширование картинок можно отключив вылачу картинок сервером, а отключить кэширование страниц сайта легко — отключив сайт. Так судя по всему всегда делает уважаемый PSNet
avatar
интересно, вы читаете написанное собой или просто развлекаетесь
avatar
Больше ответить нечего ;)
avatar
нет, я к тому, что вы перечитали ради интереса свой топик для начала, а потом подумайте как у вас так вышло
avatar
Там всё понятно. Давайте постепенно… Короткое содержание: кэшируется по определению результат выполнения какой либо функции (если в целом действия)

Если это не так — что тогда по вашему означает «кэширование»? :)
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.