Кешируются ли файловые сниппеты?
Использую файловые элементы pdoTools, в документации написано что
Есть шаблон для ресурса, в нем
однако, вывод сниппета кешируется. Иду изменяю текст echo но изменений не вижу, пока не очищу кеш.
Данные кешируются вот сюда
и чего то никак не могу победить, хотя бы на время разработки отключить кеш, а вообще нужно отключить кеширование этих сниппетов и на продакшине, так как они будут организовывать логику фильтрации.
Что я делаю не так, почему при отключенном системном кеше, при условии что в документации написано что файловые элементы не кешируются, оно все такие кешируется?
Спасибо.
Файловые сниппеты не кэшируются, но можно включить кэширование скомпилированных шаблонов Fenom, используя настройку pdotools_fenom_cache.У меня она отключена.
Есть шаблон для ресурса, в нем
{include 'file:templates/category.tpl'}
Внутри category.tpl{extends 'file:templates/layout.tpl'}
{block 'page'}
{'@FILE filter/filteredProducts.php'|snippet}
{/block}
Внутри filteredProducts.phpecho "hello world";
В системных настройках отключил кеширование однако, вывод сниппета кешируется. Иду изменяю текст echo но изменений не вижу, пока не очищу кеш.
Данные кешируются вот сюда
и чего то никак не могу победить, хотя бы на время разработки отключить кеш, а вообще нужно отключить кеширование этих сниппетов и на продакшине, так как они будут организовывать логику фильтрации.
Что я делаю не так, почему при отключенном системном кеше, при условии что в документации написано что файловые элементы не кешируются, оно все такие кешируется?
Спасибо.
Комментарии: 12
Включить кэширование скриптов cache_scripts тоже выставлено в «Нет»
Много раз уже всем объяснял почему так происходит.
Fenom используется в pdoTools не как полноценный шаблонизатор, а как дополнительный парсер шаблонизатора MODX. Т.е. контент парсится двумя шаблонизаторами! Но главным является именно последний. А для него нет понятия «файловый сниппет». Есть обычный сниппет, который хранится в БД. Но сниппет — это php код. А код, чтобы он выполнился, нужно подключать через конструкцию include. Для этого создается файл в папке includes/elements/modsnippet/. И уже он потом подключается.
Когда вызывается файловый сниппет, pdoTools создаёт обычный сниппет MODX с именем в виде хеша. И MODX подготавливает его к исполнению — сохраняет в кэш, чтобы заинклюдить.
Но хочу отметить, что это не кэш результата сниппета. Это кэш кода сниппета. Т.е. создается файл для кэширования другого файла!!! Сам файловый сниппет никогда не кэшируется! Даже если ты очень преочень захочешь.
Это и куча других косяков реализации Fenom заставила меня написать ZoomX. В нём я заморочился этой темой и написал отдельный механизм для файловых элементов. Плюс они могут кэшироваться. Плюс за всё отвечает только один шаблонизатор. Поэтому я всем разработчикам, стремящимся работать по фуншую, советую ставить pdoTools из-за его сниппетов (Fenom сразу выключить) и ZoomX из-за правильного механизма шаблонизации и роутинга.
Fenom используется в pdoTools не как полноценный шаблонизатор, а как дополнительный парсер шаблонизатора MODX. Т.е. контент парсится двумя шаблонизаторами! Но главным является именно последний. А для него нет понятия «файловый сниппет». Есть обычный сниппет, который хранится в БД. Но сниппет — это php код. А код, чтобы он выполнился, нужно подключать через конструкцию include. Для этого создается файл в папке includes/elements/modsnippet/. И уже он потом подключается.
Когда вызывается файловый сниппет, pdoTools создаёт обычный сниппет MODX с именем в виде хеша. И MODX подготавливает его к исполнению — сохраняет в кэш, чтобы заинклюдить.
Но хочу отметить, что это не кэш результата сниппета. Это кэш кода сниппета. Т.е. создается файл для кэширования другого файла!!! Сам файловый сниппет никогда не кэшируется! Даже если ты очень преочень захочешь.
Это и куча других косяков реализации Fenom заставила меня написать ZoomX. В нём я заморочился этой темой и написал отдельный механизм для файловых элементов. Плюс они могут кэшироваться. Плюс за всё отвечает только один шаблонизатор. Поэтому я всем разработчикам, стремящимся работать по фуншую, советую ставить pdoTools из-за его сниппетов (Fenom сразу выключить) и ZoomX из-за правильного механизма шаблонизации и роутинга.
Сергей, я именно от вас и ждал ответа, знаю что вы самый большой специалист по кешу.
Все верно, в файле с «кешем» лежит код сниппета.
И да, наверное пора перестать мне жаловаться на отсутствие времени и изучить ваш ZoomX.
Все верно, в файле с «кешем» лежит код сниппета.
И да, наверное пора перестать мне жаловаться на отсутствие времени и изучить ваш ZoomX.
Замечу Материал по ZoomX появляется периодически. На днях еще одна статья будет.
Думаю тоже статьи про ZoomX писать, как считаете, какие темы лучше осветить? Чтоб с вашими не дублировались
Я взял себе тему построение REST. Ты можешь например осветить тему шаблонизации и построения сайта на ZoomX, если разбираешься
Стесняюсь предложить осветить тему практического применения ZoomX для обычного многостраничного сайта.
Идеально — сравнение скорости работы (время рендера на одинаковом хостинге) и удобства работы с кодом для сайтов на синтаксисе modx-парсера или fenom (совсем в мечтах: оба) с тем, как то же самое реализуется на ZoomX (с каким-нибудь, на ваш аргументированный вкус ;-), шаблонизаторе, им поддерживаемым )
Идеально — сравнение скорости работы (время рендера на одинаковом хостинге) и удобства работы с кодом для сайтов на синтаксисе modx-парсера или fenom (совсем в мечтах: оба) с тем, как то же самое реализуется на ZoomX (с каким-нибудь, на ваш аргументированный вкус ;-), шаблонизаторе, им поддерживаемым )
Идеально — сравнение скорости работы (время рендера на одинаковом хостинге)Не заметил прироста скорости рендеринга по сравнению с сайтами на fenom с аналогичным функционалом на одном хостинге. Вот кол-во обращений к базе — есть разница, в ZoomX стремится к нулю при повторной загрузке страницы.
Ну значит сайт все же будет работать быстрее, и сможет держать гораздо большую нагрузку, особенно на не-ssd хостинге (такие ещё остались, особенно там где облачные диски для VPS/VDS — они медленные и база на них тормозит).
Раз не даёте ссылок, может сами потестируете нагрузку через loadimpact/k6 или может @Сергей Шлоков или @Николай Савин уже таким увлекался, но нам не показал? ;-)
Раз не даёте ссылок, может сами потестируете нагрузку через loadimpact/k6 или может @Сергей Шлоков или @Николай Савин уже таким увлекался, но нам не показал? ;-)
В одной из своих статей давал данные по скорости. Делал тест из pdoTools. Прирост был около 50%. На самом деле это синтетический тест. Но общий выигрыш понятен.
Просто в анонсах и статьях всё пишут что ZoomX решает проблему работы modx с двумя парсерами при использовании fenom, я понимаю эти слова, но практическая польза, итоговый выигрыш, который по идее должен там быть, продемонстрирован пока что слабо недостаточно.
После анонса pdoTools со сравнительными таблицами, прям захотелось брать и только на нём и делать, особенно из-за крутого прироста в скорости fenom за счет адекватной обработки условий с фильтрами вывода типа
После анонса pdoTools со сравнительными таблицами, прям захотелось брать и только на нём и делать, особенно из-за крутого прироста в скорости fenom за счет адекватной обработки условий с фильтрами вывода типа
[[*pagetitle:is=`condition`:then=`yes`:else=`no`]]
Пока такого сравнения нет, очень сложно мотивировать modx-программиста брать на вооружение нечто новое «не ясно/очевидно зачем»…
На самом деле выигрыш в скорости был не из-за Fenom, а за счёт pdoTools. Fenom как раз наоборот даёт лишнюю нагрузку и небольшой оверхед. Хотя в таблицах и указано наоборот. Лично я не смог повторить эти цифры. Да и тест, конечно, синтетический.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.