Несколько вопросов про API кеширования от новичка

Делаю сайт на fenom.
Узнал, что MODX не кеширует файловые сниппеты на fenom. А также, что статичные сниппеты — это оверхед, который замедляет сайт. И что по-хорошему надо сниппеты делать файловыми (на fenom). Но при этом писать кеширование для них.

Стал разбираться, возникло несколько вопросов.

1. При кешировании можно указать, в какой папке (в каком разделе) кеш будет храниться (OPT_CACHE_KEY).
В каких случаях лучше создать свой раздел для кеша, а в каких использовать раздел по умолчанию (как я понимаю, это resource, сниппеты ведь вызываются в ресурсах)?

2. Какое время истечения ставить для кеша? Я бы хотел, чтобы кеш моего сниппета не отличался от кеша других сниппетов.
Какое время используется, если я буду вызывать обычный сниппет, который хранится в БД? Есть системная настройка, откуда я должен брать время и указывать своему сниппету?

3. Если я создам не файловый сниппет, а обычный (который в БД хранится), и напишу в нем вызовы api для кеширования, что это даст? Он же и так кешируется. Мое кеширование переопределит стандартное кеширование от MODX? Или наоборот?

4. Есть сниппет от плагина, который писал не я. Мне потребовалось немножечко изменить этот сниппет. Я скопировал его, чтобы при обновлении мои изменения не затерлись. Внес свои правки. Теперь я хочу, чтобы этот сниппет хранился как файл.
У статичных сниппетов оверхед.
У файловых fenom сниппетов нет кеша.
Что мне делать?
С оверхедом я никак бороться не могу. Остается только сделать сниппет файловым. И писать свое кеширование.
Но как мне узнать, что именно надо кешировать? Как проверить, правильно ли я написал кеширование? Ничего ли не упустил? Мне нужно, чтобы кеширование было на 100% таким же, как родное кеширование, которое было, когда сниппет хранился в БД.
Andry
13 июня 2022, 01:31
modx.pro
570
0

Комментарии: 5

    Andry
    13 июня 2022, 12:19
    0
    Да, я несколько статей почитал.

    Я посмотрел, как в плагине одном сделано. Там время бесконечное. Все пишется в папку default. В ней создаются свои папки.
    Я сделал также. Думаю, пойдет.

    Но пункты 3 и 4 непонятны до сих пор.
    Илья Уткин
    13 июня 2022, 18:06
    +2
    1. Если не указывать свой раздел, то твой кастомный кеш будет находиться в папке default и он будет очищаться каждый раз, когда очищается кеш сайта. То есть при сохранении любого ресурса, чанка, плагина в админке, а так же когда пользователь нажимает «Очистить кеш» в админке. Если указать любой другой раздел, нестандартный, тогда твой кеш не будет очищаться стандартными средствами MODX и он будет «вечным», либо конкретно до истечения указанного времени жизни.

    2. В стандартном механизме MODX время жизни у кеша указывается в системной настройке cache_expires. По умолчанию там ноль, то есть кеш хранится до тех пор, пока его кто-то не очистит.

    3. Сниппет на странице кеширует свой вывод только для конкретной страницы. То есть если сниппет вызывается в шаблоне кешированным (без восклицательного знака), то он все равно будет выполнятся по одному разу на каждой странице. Поэтому если внутри сниппета ты добавишь своё кеширование, то ты можешь это поведение исправить. Вот так — ilyaut.ru/tips-and-tricks/site-optimization-on-modx-revolution/

    4. Хранить его так же в базе данных или написать своё кеширование внутри этого сниппета или «снаружи» — https://docs.modx.pro/komponentyi/pdotools/parser#Управление-кэшированием
      Andry
      14 июня 2022, 07:23
      0
      Поэтому если внутри сниппета ты добавишь своё кеширование, то ты можешь это поведение исправить. Вот так — ilyaut.ru/tips-and-tricks/site-optimization-on-modx-revolution/
      Только у вас тут не про сниппеты, а про чанки, да? Интересный прием оптимизации сайта, спасибо :-).
        Илья Уткин
        14 июня 2022, 07:50
        +1
        Я больше про сам сниппет chunk — он ведь всё равно на каждой странице вызывается, но единственное, что сниппет делает — проверяет, есть ли данные в кеше и, если есть, выводит их.
      Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
      5