Рамис Хамидуллин

Рамис Хамидуллин

С нами с 28 июня 2017; Место в рейтинге пользователей: #689

Выдаем вместо кэша html файлик

Предыстория. Возник такой вопрос. Есть какой то сайт, и в нем получается в каталоге было так. В вызов mFilter2 вложено в чанк еще парочка вызовов msProducts ну и так далее. В итоге, раздел грузился за овер 10 секунд. Да, сейчас напишите, что вот надо оптимизировать. Это понятно, но я решил подойти с другой стороны.
Итак, идея была такая, что бы вместо кэша выдавать уже готовую разметку целой страницы.
В итоге, у нас есть плагин:
<?php
switch($modx->event->name){
    case 'OnWebPagePrerender':
        // Тут просто условие, чтобы срабатывал только на категории (можно по сути задавать разные условия)
        if($modx->resource->class_key != 'msCategory'){
            return;
        }
        //Забираю отрендеренный ресурс
        $_output = &$modx->resource->_output; //Забираю отрендеренный ресурс
        // Создаю файлик разметки этого ресурса (можно по сути указать любой путь и так далее, сейчас и так сойдет)
        $file = MODX_BASE_PATH . 'resourcecache/' . $modx->resource->uri . '/' . $modx->resource->id . '.txt';
        if(is_file($file)){
            // Если такой файлик уже существует, то просто отдаю его содержимое
            $output = file_get_contents($file);
        }else{
            // Если файлика нету, то записываю туда отрендеренную страницу
            $cache = $modx->getCacheManager();
            $cache->writeFile($file, $_output);
            $output = $_output;
        }
        
        // Подменяю вывод на готовый
        $modx->resource->_output = $output;
        
        break;
        
    case 'OnLoadWebPageCache':
        // Это событие срабатывает до рендера страницы, оно проверяет, есть ли кэш страницы, и если он есть...
        $file = MODX_BASE_PATH . 'resourcecache/' . $modx->event->params['resource']->uri . '/' . $modx->event->params['resource']->id . '.txt';
        
        //...мы проверяем файлик, так как страница уже грузилась и файлик есть и подменяем кэш на содержимое неашего файлика.
        if(is_file){
            $modx->event->params['resource']->_content = file_get_contents($file);
        }
        
        break;
}
Итог, раздел грузился за 10 секунд (ну да, такой раздел, идея в другом), после плагина уже за 0.006 секунды, так как выдается готовая разметка.
Вопрос знатокам, на сколько такой подход вообще жизнеспособный по отношению к системе? Очень бы хотелось услышать комментарии.

Спасибо за донаты:
@Павел Бигель
Михаил
20 февраля 2020, 10:55
modx.pro
10
537
+16

[multiSite] - Мультисайт на MODX

Привет! Компонент реализует собственно мультисайт на modx. Что он делает по факту? В зависимости от города он ищет во всей странице ключи в соответствии вашего паттерна и заменяет их на содержимое конкретно этого города.


Pavel Zarubin
10 декабря 2019, 03:17
modx.pro
12
696
+23

TVTable 3.4.0

Привет всем!

Для того чтобы администрация форума не ругалась:
«Сегодня дорогие мои, не будет никаких сантиментов и смайликов. Только жесткач и технические данные в чистом виде! Кому нравится словоблудие и рукофлудие, свободен. Никого не держу. Досвидульки и ...»
Баха Волков
07 июня 2019, 18:35
modx.pro
8
1 334
+21

Создание таблиц через MIGX

У новичков часто возникает вопрос, как можно быстро создать какую нибудь таблицу и начать с ней работать на пример из сниппета. Я раньше делал всегда через пакет Василия modExtra, выпиливая из него то, что мне не нужно. Но это долго и не совсем удобно, если нужна одна — две таблички. MIGX решает эту проблему.
Михаил
25 апреля 2019, 11:19
modx.pro
27
2 373
+18

Автоматическая смена версии стилей при очистке кэша в MODX

Решил поделиться своим решением версионирования файлов стилей. Зачем нужно версионирование, я, наверное не буду объяснять. Вообще смена версий не такой частый процесс и зачастую он нужен не только для того, чтобы браузеры подхватывали измерения в стилях, но и для отслеживания версий сайта. Вариантов как это реализовать масса. Я состряпал наиболее подходящее для меня и решил поделиться им.

К слову, пока писал этот пост, в телеграм канале как раз подняли эту тему. :-)
iWatchYouFromAfar
25 марта 2019, 10:33
modx.pro
8
1 045
+7

[Решено] Как подцепить редактор Ace к полю во всплывающем окне MIGX?

Как добавить Ace к обычным полям ресурса типа introtext, description, или TV-полям, я знаю. Но возникла необходимость сделать это для textarea-полей во всплывающем окне MIGX. Ситуация осложняется тем, что код окна подгружается аяксом… Кто-нибудь знает как это можно сделать, хотя бы примерно?

Николай
03 марта 2019, 01:24
modx.pro
17
1 281
+6

Динамическое обновление цены товара miniShop2 по курсу доллара, через Cron.

Всем привет, друзья. Возникла у меня задача, сделать так, чтобы цены у товаров менялись в соответствии с курсом доллара, раз в сутки.
Vlad Brise
17 декабря 2018, 23:01
modx.pro
22
1 354
+10

Пару модификаторов для MODX

Модификатор телефонного номера

К примеру нам нужно вывести телефонный номер в формате: +7 (900) 2000 600 и так чтобы он нажимался как ссылка для запуска на устройствах

Но так как плейсхолдер всего один [[++phone]]

Создаем сниппет phone c содержимым
Андрей Степаненко
07 декабря 2018, 09:42
modx.pro
15
1 268
+13

1 плагин - 3 лайвхака

Всем привет, порой работа менеджеров в админке modx — сущий ад. Сегодня поступил заказ с просьбой решить несколько проблем.

Проблема №1:
В tinyMCE все изображения которые вставляются имеют атрибуты width и height, и не имеют нужных классов

Проблема №2:
При загрузки файлов в каталог, где уже есть такое имя, файлы переписывают друг друга, необходимо было сделать добавление префикса для файлов с одинаковым именем

Проблема №3:
Иногда менеджеры грузят неприлично большие изображения, что непосредственно влияет и на скорость загрузки страницы и на общий размер файлов

Что делает плагин:
  1. Транслитерация файлов при загрузке, добавление префикса если файл дублируется
  2. Уменьшает загружаемое изображение до 1200px по ширине
  3. Из поля content достает все img, вырезает у них атрибуты width и height, вместо них подставляет класс img-thumbnail
Под катом — код с комментариями.
Pavel Zarubin
26 ноября 2018, 17:42
modx.pro
36
2 120
+19

[MIGX] - Большой и страшный. Multiple Formtabs. Как сделать слайдер с разными типами слайдов.

Привет сообществу!

В данной заметке вы узнаете, что такое Multiple Formtabs и как создать конфигурацию с разным набором данных. Ну и конечно же создадим с вами слайдер у которого будут разные типы слайдов, а в конце вас ждёт очень интересная история которую я долго не решался кому либо рассказать (если конечно вам интересно, но история интересная — поверьте). И так, примеры слайдов:

  • Изображение на фоне
  • Видео на фоне
  • Сплошной цвет на фоне
Внимание! В этот раз не надо убирать от экранов детей и беременных женщин, ведь это какая-та дискриминация по возрастному и половому признакам!

Баха Волков
11 октября 2018, 07:46
modx.pro
36
3 662
+27