Еще раз про Кэширование
Я вернусь к уже избитой теме про кэширование данных livestreet-ом, поскольку из комментов и вопросов замечаю явное непонимание используемых механизмов. Несмотря на уже существующий материал, за последние дни я уже столкнулся с несколькими случаями такого непонимания. В этом топике я расскажу про механизмы кэширования, где и как они используются, а именно про:
1. Реализуемый механизм кэширования.
2. Кэширование шаблонов Smarty.
3. Компрессию js и css-файлов, хотя напрямую к кэшированию и не относиться.
Реализуемый механизм кэширования
Что собой представляет кэширование вообще и зачем оно нужно? Кэширование представляет собой механизм снижения нагрузки на сервер за счет выдачи пользователю уже сформированного ранее результата. Если в общих чертах и на примере, то при пользовательском запросе страницы сначала проверяется есть ли уже сформированный результат и если да, то он отдается пользователю, а если нет, то livestreet выполняет свои скрипты и формирует необходимый результат, отправляет его пользователю и заодно кэширует. В случае если пользователь повторит запрос, то сервер уже не будет проводить работу по формированию результата, а просто отдаст ранее сформированный кэш.
Отсюда вывод: использовать кэширование только на рабочем сервере, на тестовом сервере, при разработке, кэширование не использовать, иначе изменений внесенных в скрипты Вы не увидите в отданном результате.
В LS используется Zend_Cache. Основным классом, реализующим работу с кэшированием, является ModuleCache, реализованный в «engine/module/cache/Cache.class.php», в этом файле много хороших комментариев – для полноты картины советую почитать. Для хранения КЭШа используются следующие средства: File, Memcache и XCache. Для работы с Memcache и XCache их наличие необходимо на Вашем сервере, поэтому перед использование убедитесь в их наличии на сервере.
Теперь Что включать и Как отключать.
Внимание! С настройками и очисткой КЭШа играть только на тестовом сервере!
Все настройки кэширования храняться в файле «config/config.php». Основным конфигурационным параметром, включающим и отключающим кэширование является: $config['sys']['cache']['use'], который содержит true или false в зависимости от того включать или нет кэширование; При отключенном кэшировании все остальные настройки кэширования не имеют силы.
Параметр $config['sys']['cache']['type'] определяет используюмую технологию кэширования и может иметь значения: file, memory, xcache. И еще раз — для работы с Memcache и XCache их наличие необходимо на Вашем сервере. Если их нет Вам остается вариант — File.
Здесь же, следующим параметром, устанавливается директория для КЭШа:
Если Вы не используете кэширование, то в этой папке у Вас должен находиться только .htaccess. При смене скина или установке/удалении плагина могут возникать ошибки отображения страниц. Решаются они очисткой КЭШа.
Вывод: Если кэш не нужен, то ставим $config['sys']['cache']['use'] = false, очищаем папку tmp (оставив лишь .htaccess). Если нужен, то Читаем об используемых технологиях кэширования, выбираем необходимую, конфигурируем так как надо и используем. По умолчанию используется «file», если Memcache и XCache не установлены на сервере, используем его.
Кэширование шаблонов Smarty.
Шаблоны tpl сначала компилируются, а потом кэшируются. Кэш и скомпилированные шаблоны храняться в папках «templates/cache» и «templates/compiled» соответственно. Чем же отличается компилирование от кэширования. Файл tpl при компиляции преобразуется в исполняемый php-код, который, в свою очередь, и кэшируется. Кэш smarty отключен в эту папку выводиться лишь сжатые js и css. Компиляция шаблонов не отключается.
Вывод: Если Вы не видите результат изменения шаблона, то может быть отдается уже скомпилированный шаблон. Почистите templates/compiled.
Компрессия js и css-файлов
В файле конфигурации есть два параметра: $config['compress']['css']['merge'] и $config['compress']['js']['merge'], которые определяют объединение файлов файлы js и css в один, если файлы объединяются, то они и кэшируются в каталог, определенный в $config['path']['smarty']['cache'].
Вывод: Если Вы изменили стили или скрипты, но не видите результатов, очистите папку «templates/cache» или отключите сжатие и очистите эту же папку.
1. Реализуемый механизм кэширования.
2. Кэширование шаблонов Smarty.
3. Компрессию js и css-файлов, хотя напрямую к кэшированию и не относиться.
Реализуемый механизм кэширования
Что собой представляет кэширование вообще и зачем оно нужно? Кэширование представляет собой механизм снижения нагрузки на сервер за счет выдачи пользователю уже сформированного ранее результата. Если в общих чертах и на примере, то при пользовательском запросе страницы сначала проверяется есть ли уже сформированный результат и если да, то он отдается пользователю, а если нет, то livestreet выполняет свои скрипты и формирует необходимый результат, отправляет его пользователю и заодно кэширует. В случае если пользователь повторит запрос, то сервер уже не будет проводить работу по формированию результата, а просто отдаст ранее сформированный кэш.
Отсюда вывод: использовать кэширование только на рабочем сервере, на тестовом сервере, при разработке, кэширование не использовать, иначе изменений внесенных в скрипты Вы не увидите в отданном результате.
В LS используется Zend_Cache. Основным классом, реализующим работу с кэшированием, является ModuleCache, реализованный в «engine/module/cache/Cache.class.php», в этом файле много хороших комментариев – для полноты картины советую почитать. Для хранения КЭШа используются следующие средства: File, Memcache и XCache. Для работы с Memcache и XCache их наличие необходимо на Вашем сервере, поэтому перед использование убедитесь в их наличии на сервере.
Теперь Что включать и Как отключать.
Внимание! С настройками и очисткой КЭШа играть только на тестовом сервере!
Все настройки кэширования храняться в файле «config/config.php». Основным конфигурационным параметром, включающим и отключающим кэширование является: $config['sys']['cache']['use'], который содержит true или false в зависимости от того включать или нет кэширование; При отключенном кэшировании все остальные настройки кэширования не имеют силы.
Параметр $config['sys']['cache']['type'] определяет используюмую технологию кэширования и может иметь значения: file, memory, xcache. И еще раз — для работы с Memcache и XCache их наличие необходимо на Вашем сервере. Если их нет Вам остается вариант — File.
Здесь же, следующим параметром, устанавливается директория для КЭШа:
$config['sys']['cache']['dir'] = '___path.root.server___/tmp/';
Если Вы не используете кэширование, то в этой папке у Вас должен находиться только .htaccess. При смене скина или установке/удалении плагина могут возникать ошибки отображения страниц. Решаются они очисткой КЭШа.
Вывод: Если кэш не нужен, то ставим $config['sys']['cache']['use'] = false, очищаем папку tmp (оставив лишь .htaccess). Если нужен, то Читаем об используемых технологиях кэширования, выбираем необходимую, конфигурируем так как надо и используем. По умолчанию используется «file», если Memcache и XCache не установлены на сервере, используем его.
Кэширование шаблонов Smarty.
Шаблоны tpl сначала компилируются, а потом кэшируются. Кэш и скомпилированные шаблоны храняться в папках «templates/cache» и «templates/compiled» соответственно. Чем же отличается компилирование от кэширования. Файл tpl при компиляции преобразуется в исполняемый php-код, который, в свою очередь, и кэшируется. Кэш smarty отключен в эту папку выводиться лишь сжатые js и css. Компиляция шаблонов не отключается.
Вывод: Если Вы не видите результат изменения шаблона, то может быть отдается уже скомпилированный шаблон. Почистите templates/compiled.
Компрессия js и css-файлов
В файле конфигурации есть два параметра: $config['compress']['css']['merge'] и $config['compress']['js']['merge'], которые определяют объединение файлов файлы js и css в один, если файлы объединяются, то они и кэшируются в каталог, определенный в $config['path']['smarty']['cache'].
Вывод: Если Вы изменили стили или скрипты, но не видите результатов, очистите папку «templates/cache» или отключите сжатие и очистите эту же папку.
9 комментариев