MODX

Cache MODX Revolution -> быстрее только на HTML. Часть 2

Cache MODX Revolution -> быстрее только на HTML. Часть 2

Продолжаю тему кэширования предыдущего поста. Так как там мы только набросали наброски, попробуем привести в божеский вид.

Если мы откроем файл кэша, то можем посмотреть, сколько всего у нас там есть, всё это нужно, но не для полной закэшированной страницы.
В среднем, при сохранении в кэш страницы нашим плагином, разница в размере файла будет где то в 10 раз, так как мы сохраняем нам только нужный результат.

Для примера, я пытался не вклиниваться в index.php файл и на событие OnHandleRequest вывести свой кэш, как видите - результат не стоит этого.
Я установил 2 расширения getResources и getPage (берём популярные, можно для навигации и pageNav).

Результат вывода ресурса с файлового кэша.
0.0366 s модекса кэш FileCache. 0.030276 s через плагин SuperCache на OnHandleRequest FileCache 0.000918 s. SuperCache FileCache

Как я уже упомянул в предыдущем топике, что инициализация забирает очень много времяни (очень - понятие относительное), но вот давайте представим когда у вас много или очень много разных пакетов и любителей использовать addExtensionPackage(). т.е. нужно или не нужно, но мы грузим все свои классы (так как разработчику меньше париться и везде доступно :), т.е. каждый метод имеет своё место.
Лирику отставим, перейдём к делу

ещё один тест с кэшем APC:
0.0339 s модекса кэш APCCache 0.00073 s SuperCache APCCache

Ну и теперь про сам плагин superCache. Почему superCache? Моё мнение, что быстрее уже нельзя просто, единственное можно инклудить ещё раньше, не подгружая конфиг и кэш настроек модекса, а просто в ручную вбить нужные параметры, тогда скорость с APC кэшем будет в приделах 0.0004 - 0.0006 s

Про настройки плагина

На данный момент плагин работает с файловым и APC кэшем.
После установки пакета, вставьте инклуд в файл index.php, примерно 40 строка после

if (!defined('MODX_CORE_PATH')) define('MODX_CORE_PATH', dirname(__FILE__) . '/core/');
вставить:
include_once MODX_CORE_PATH.'components/supercache/supercache_read_cache.php';
перед инклудом классов MODX

При создании ресурса, во вкладке "Настройки", у вас появиться чекбокс Включить superCache.

Настройки по умолчанию находятся в вкладке "Параметры" плагина superCache

  • cs_cache_checkbox_defaulr - ставить чекбокс superCache активный при создании нового ресурса
  • sc_expires - время жизни кэша (в секундах), если нуль (0), то кэш будет удалён при обнавлении ресурса или очистки кэша
  • sc_out - два параметра выбора:
    • Treated not cached tags - Выводиться полностью закэшированная страница (рекомендуеться)
    • Untreated not cached tags - Не кэшированные теги выводяться не обработанные (для опытных пользователей)

При очистки кэша и создания/сохранения ресурса кэш полностью убиваеться. (пока по принципу MODX).
Кэширование проверял так-же и с getPage, но параметр sc_out должен быть обязательно быть Treated not cached tags, так как в getPage идут не кэшированные вызовы.

Пока всё, вроде комментарии в коде проставленны, если есть вопросы задавайте.

В следующем топике разберём пример создания новостной страницы с выводом снипета последних новостей, и научимся управлять кэшем, создадим алгоритм работы и немного усовершенствуем наш плагин, чтобы не очищать весь кэш сайта.

Код на гитхaбе
Скачать плагин можно по этой ссылки

Valentin Rasulov

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

Кузьмин Владик # 2014-08-17 02:32:17
Добрый день, а у вас случайно нет статейки, про то как сделать функциональную галерею на MODX revo. А то я так и не нашел нормальную, очень много воды.
Нужна простенькая галерея, но при этом имеющая хороший функционал
Брежнев Иван # 2014-08-22 06:48:30
Какая именно требуется галерея? Опишите вкратце необходимый функционал
Чтобы оставить комментарий необходимо авторизоваться