getCacheSensitive обработчик кеша на основе getCache от Jason Coward
На сайте, который мне нужно оптимизировать, используется tagManager 2. Генерация страницы бренда на нем занимает от 3 до 6 секунд. Самый тяжелый элемент это фильтр товаров tmFilters от tagManager. Выполняется 4.5387252 секунды.
Напрашивается его закешировать. Для этого взял сниппет getCache от Jason Coward и его доработал, чтоб он перехватывал и кешировал js, стили, $_GET, $_POST от tmFilters.
Получился сниппет getCacheSensitive
До кеширования 4.5387252 секунды:
Надеюсь getCacheSensitive вам будет полезен :-).
Напрашивается его закешировать. Для этого взял сниппет getCache от Jason Coward и его доработал, чтоб он перехватывал и кешировал js, стили, $_GET, $_POST от tmFilters.
Получился сниппет getCacheSensitive
До кеширования 4.5387252 секунды:
[[!tmFilters? &filterOuterTpl=`public. tm2_filterOuterTpl` &filterTpl=`public. tm2_filterTpl`
&filterNumericOuterTpl=`public. tm2_filterOuterTpl` &filterNumericTpl=`public. tm2_filterNumericTpl`
&jsMap=`1` &jsScript=`1` &toPlaceholder=`filters` &categoryId=`256` &parents=`256`
&tvFilters=`{"product-manufacture":"29000"}` ]]
8 0.001193 4.5387252
После кеширования 0.0029261 секунды:[[!getCacheSensitive? &preHooks=`getFilterValueMain` &element=`tmFilters` &cacheKey=`tmFilters` &cacheExpires=`0`
&jsMap=`1` &jsScript=`1` &toPlaceholder=`filters` &categoryId=`256` &parents=`256`
&tvFilters=`{"product-manufacture":"29000"}` ]]
0 0 0.0029261
И страница правильно работает.Надеюсь getCacheSensitive вам будет полезен :-).
Поблагодарить автора
Отправить деньги
Комментарии: 6
Для mfilter2 не подойдёт?
Думаю подойдет. Если не используются &toPlaceholders или &toSeparatePlaceholders. В getCache только &toPlaceholder обрабатывается. Можно так же как скрипты перехватывать изменения $modx->placeholders, но пока не требовалось.
При вызове пишет такую ошибку
getClass requires an element and elementClass property to be set
С mFilter2 вот эти параметры должны быть так:
А в текущей версии не будет работать. Могу его доработать под mFilter2, но платно :-). И мне надо будет доступы к сайту с mFilter2, чтоб тестировать как будет работать.
&element=`mFilter2` &cacheKey=`mFilter2`
В assets/components/msearch2/action.php есть такая строка:$config = @$_SESSION['mSearch2'][$_REQUEST['key']];
То есть mFilter2 свой конфиг в сессию пишет. Чтоб getCacheSensitive мог mFilter2 кешировать надо будет в него добавить перехват сессии еще.А в текущей версии не будет работать. Могу его доработать под mFilter2, но платно :-). И мне надо будет доступы к сайту с mFilter2, чтоб тестировать как будет работать.
Ок, напишите в личку договоримся
Обновил getCacheSensitive
Добавил if(empty($elementClass)) $elementClass = 'modSnippet';
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.