Сергей Шлоков

Сергей Шлоков

С нами с 31 января 2013; Место в рейтинге пользователей: #3
Сергей Шлоков
25 апреля 2022, 21:25
0
Так, давайте проясним, чтобы не было недопонимания.
В статье я показал, что если у вас установлен pdoTools, не надо бросаться переписывать все на Fenom и менять [[pdoResources? ...]] на {'pdoResources' | snippet: [...]}, или [[++setting]] на {'setting' | config} ради выигрыша в скорости как советуют некоторые разработчики. Вы его не получите.

П.С. И, да, чанк я взял из теста (тот который с логикой), о чём и написал в начале поста.
Сергей Шлоков
24 апреля 2022, 11:55
0
Замечание принял. А кроме комментариев есть ещё примеры?

Или это только про удобство, а не скорость?
К самому тесту замечания есть? Я говорю про тест через сниппет в обычном режиме, в котором будут работать 99,9% разработчиков, а не через API.

П.С. Лично я считаю, что эти тесты искуссвенные. В боевом проекте, где куча чанков, сниппетов и т.д., цифры будут совершенно другие. Вот где интересно было бы погонять тесты.Но судя по отзывам разработчиков, которые меняли синтаксис, разницы особо не видно. Даже часто феном немного проседал.
Сергей Шлоков
24 апреля 2022, 11:32
0
Вспомнился роман Хейли «Колесо». Там создавали новую модель машины и на этапе тестирования возникла проблема — что-то с коробкой передач на определённой скорости. Стоимость доработки 5 долларов. Ерунда. Копейки по сравнению со стоимостью машины. Но разработчики отказались от этой идеи. Причина — планировалось выпустить около 1 миллиона экземпляров. А значит дополнительный расходы составили бы + 5 млн. долларов.

10 лишних запросов для небольшого сайта — плёвое дело. А для высоконагруженного может оказаться непозволительной роскошью.

Подход к кэшированию должен быть вдумчивым. Кэшировать всё подряд также не имеет смысла. Нужно думать об актуализации данных. Поэтому всегда нужно находить баланс. Для этого и нужны опытные разработчики. )
Сергей Шлоков
24 апреля 2022, 11:24
0
Читаем внимательно и до конца.
Сергей Шлоков
24 апреля 2022, 10:20
0
Прочитал про размер кэша. Твоё удивление от непонимания. Что такое кэш? Это статичные данные. Если у тебя кэш на феноме в 10 раз меньше, то есть повод задуматься — всё ли закэшировалось? Отсюда и лишние запросы к БД. Конструкция {include 'чанк'} никогда не кэширует чанк.

Просто с таким же успехом можно восхищаться пустой папкой кэша после того, как ты его отключишь.
Сергей Шлоков
24 апреля 2022, 10:12
0
Наверно поиском [[$ по таблицам контента, шаблонов и чанков. Или заюзать событие OnParse.
Сергей Шлоков
24 апреля 2022, 10:11
+1
Точных сроков дать не могу. Как появится свободное время.
Сергей Шлоков
20 апреля 2022, 16:27
0
Да, есть такое дело. Хотел исправить и забыл. В следующей версии постараюсь не забыть.
Сергей Шлоков
19 апреля 2022, 20:00
0
Это обычная системная настройка. Ей можно манипулировать в процессе загрузки. Создайте плагин на событие OnHandleRequest и в нем прописывайте нужное значение согласно вашей логике
if ($modx->resource->id == 100) {
    $modx->setOption('pdotools_fenom_cache', false);  // отключить кэширование чанков для ресурса 100
}
Сергей Шлоков
19 апреля 2022, 06:35
0
В базовой логике так. Но её можно изменить — снимаешь чекбокс «Очищать кэш» и в плагине на OnDocFormSave пишешь нужную логику. Очень гибко.
Сергей Шлоков
07 апреля 2022, 15:06
0
Нет, код не бессмысленный. Просто не очень качественный.
Сергей Шлоков
07 апреля 2022, 15:06
0
Я думал, что это какой-то разработчик с форума, который недавно открыл для себя MODX. А оказывается это Боб Рей. Удивлён. (
Сергей Шлоков
07 апреля 2022, 06:52
+6
Мда. Я надеюсь, что лайки поставили автору за труды, а не за это творчество (код). Лично мне, чтобы понять уровень, достаточно этого
/* See if we're in MODX or not */
$inModx = isset($modx) && $modx instanceof modX;

/* All the code below will only execute if
   we're not in MODX */
if (!$inModx) {
    $outsideModx = true;
   ...
Код выше устанавливает переменную $outsideModx на тот случай, если нам нужно будет узнать позже в сценарии, работаем ли мы внутри MODX или нет.
Т.е. переменная $inModx показывает, что мы внутри MODX. А переменная $outsideModx, которая является обратной к $inModx, показывает, что мы снаружи. Шикарно, правда?

А получение ресурса и пользователя указанными методами говорит о том, что автор не понимает как это работает внутри.
Сергей Шлоков
05 апреля 2022, 09:28
0
На самом деле выигрыш в скорости был не из-за Fenom, а за счёт pdoTools. Fenom как раз наоборот даёт лишнюю нагрузку и небольшой оверхед. Хотя в таблицах и указано наоборот. Лично я не смог повторить эти цифры. Да и тест, конечно, синтетический.
Сергей Шлоков
05 апреля 2022, 09:25
0
В одной из своих статей давал данные по скорости. Делал тест из pdoTools. Прирост был около 50%. На самом деле это синтетический тест. Но общий выигрыш понятен.
Сергей Шлоков
03 апреля 2022, 18:48
+6
Много раз уже всем объяснял почему так происходит.

Fenom используется в pdoTools не как полноценный шаблонизатор, а как дополнительный парсер шаблонизатора MODX. Т.е. контент парсится двумя шаблонизаторами! Но главным является именно последний. А для него нет понятия «файловый сниппет». Есть обычный сниппет, который хранится в БД. Но сниппет — это php код. А код, чтобы он выполнился, нужно подключать через конструкцию include. Для этого создается файл в папке includes/elements/modsnippet/. И уже он потом подключается.

Когда вызывается файловый сниппет, pdoTools создаёт обычный сниппет MODX с именем в виде хеша. И MODX подготавливает его к исполнению — сохраняет в кэш, чтобы заинклюдить.

Но хочу отметить, что это не кэш результата сниппета. Это кэш кода сниппета. Т.е. создается файл для кэширования другого файла!!! Сам файловый сниппет никогда не кэшируется! Даже если ты очень преочень захочешь.

Это и куча других косяков реализации Fenom заставила меня написать ZoomX. В нём я заморочился этой темой и написал отдельный механизм для файловых элементов. Плюс они могут кэшироваться. Плюс за всё отвечает только один шаблонизатор. Поэтому я всем разработчикам, стремящимся работать по фуншую, советую ставить pdoTools из-за его сниппетов (Fenom сразу выключить) и ZoomX из-за правильного механизма шаблонизации и роутинга.
Сергей Шлоков
03 апреля 2022, 07:55
+2
Да, я продаю компонент, написанный Сергеем Шлоковым. Мы договорились делить деньги пополам )))
Сергей Шлоков
06 марта 2022, 11:33
0
Просто не будет элемента meta. В следующей версии сделаю возможность выводить свой формат данных.