MODx Revo: кешируем сниппет wayfinder
Сейчас легко и просто по шагам пройдем процедуру ускорения вашего меню на пару сотен вложенных позиций.
Есть такой древний как яйца мамонта сниппет getCache — https://modx.com/extras/package/getcache
Использование: https://github.com/opengeek/getCache/wiki/Usage
Обновлять его что-то некому, да и видимо нечего там особо править — полтора файла по полторы строчки.
При установке не забудьте закинуть connector.php, если устанавливаете не из репозитария (автор статьи не помнит, когда и как устанавливал, но этого файла почему-то не было).
Вот во что превратился вызов меню Wayfinder:
[[!getCache? &element=`Wayfinder` &cacheKey=`global_cache` &startId=`148` &sortBy=`pagetitle` &sortOrder=`ASC` &outerTpl=`nav_ul_l` &rowTpl=`nav_li_l` &activeParentRowTpl=`nav_li_here` &innerRowTpl=`nav_li_l` &innerHereTpl=`nav_li_here` &hereTpl=`nav_li_here` &ignoreHidden=`0` &level=`1` &selfClass =`hereClass` &hereClass=`hereClass` &debug=`0`]]
Если все идет по плану, появилась папка /home/.../core/cache/global_cache. Можно на всякий случай выставить ей права, например, 700, у MODx бывает такая болезнь, когда создаваемые системно папки имеют птичьи права, но это отдельная тема про umask 0022 и прочие мероприятия.
На этом официальная часть окончена. Теперь любой сниппет, вызванный через getCache, будет работать быстрее.
Но вот беда — сайтом-то пользуется администратор или программист или владелец небольшого предприятия, т. е., тот, кому вовсе не обязательно при малейшем изменении состава пунктов меню или слайдов или еще чего пробираться сквозь дебри сети в файловую систему и чистить папку global_cache.
И тут нам пригодится пункт меню панели управления, который в русифицированной версии MODX Revolution 2.3.3 называется Действия (появляется щелчком по шестеренке справа вверху).
Нажимаем Добавить и выставляем настройки:
- Родитель — Обновить сайт
- Ключ словаря: Кеш меню
- Описание: Кеш меню
- Привилегии: empty_cache
- Пространство имен — core
- И гвоздь программы — обработчик:
var partitions = 'global_cache';
var topic = '/clearpartitions/';
this.console = MODx.load({
xtype: 'modx-console'
,register: 'mgr'
,topic: topic
,show_filename: 0
});
this.console.show(Ext.getBody());
MODx.Ajax.request({
url: MODx.config.assets_url+'components/getcache/connector.php'
,params: { action: 'cache/partition/refresh', partitions: partitions, register: 'mgr' , topic: topic }
,listeners: {
'success':{fn:function() {
this.console.fireEvent('complete');
this.console = null;
},scope:this}
}
});
return false;
Теперь останется только убедиться, что у менеджера появился новый пункт меню, и он работает. Если при нажатии висит надпись «Консоль запущена...» и ничего не происходит — можно просто нажать ОК и зайти в папку global_cache, чтобы убедиться, что там пусто. Просто накопилось много кеша.
Аналогичным образом можно обернуть в getCache и другие сниппеты, подозреваемые в замедлении работы сайта.
P. S. Пригодилась статья — не обязательно добавлять в закладки, достаточно запомнить, что CapWeb делает и продвигает сайты на MODx и на всем остальном. Всегда рады потенциальным сотрудникам, партнерам, клиентам.
Следующая статья: Synergy Digital Forum 2018 — для тех, кто всё проспал https://capweb.ru/synergy-digital-forum-2018-dlya-teh-kto-vse-prospal.html
Предыдущая статья: Товарный знак и знак обслуживания https://capweb.ru/tovarnyi-znak-i-znak-obsluzhivaniya.html