Cyrax_02
С нами с 04 августа 2013; Место в рейтинге пользователей: #2046 часов назад
Тут ведь речь о том, чтобы не на ПК скачивать, а сразу на сайте через менеджер пакетов устанавливать обновления пакетов или загружать новые. В этом сл...
Инструкция: Настройка SOCKS5 прокси в MODX3 для работы с репозиторием 5
8 часов назад
Низкий поклон вам за старания. Будет возможность, порадую и «звонкой монетой».
Под чистым — это заведение нового аккаунта на sweb (14 дней бесплат...
MiniShop3 - 1.1.0 - Уже в Modstore.pro 32
19 января 2026, 19:43
Спасибо! Попробую.
Доступ к репозиторию MODX на digitaloceanspaces.com заблокирован для российских IP? 3
19 января 2026, 18:57
Получилось так:
&sortbyTV=`FIELD(availability, 1,0,3,2 )`
Как задать ручную сортировку в mFilter2 1
19 января 2026, 09:29
зайти в настройки компонента, убрать значение у «yasmartcaptcha_service_js», а скрипт подключить вручную
YaSmartCaptcha - защитите ваши формы от спама умной капчей от Яндекс 34
18 января 2026, 22:14
Что это. Я к примеру давненько пользуюсь (для сайтов без коммерции / без minishop). Правда вместо этого плагина используется обычно easyComm
resComments — многоуровневые комментарии с пагинацией для ресурсов MODX3 4
18 января 2026, 21:56
Замените в /core/components/fetchit/src/FetchIt.php 81-83 строки:
if (!$_SESSION['fetchit_called']) {
return;
}на
if (empty($...
Fetchit и ошибка Undefined array key "fetchit_called" 2
17 января 2026, 11:42
Новый mFilter уже объединен с SeoFilter и содержит его SEO функционал. Компонент базово готов, уже на стадии тестирования.
mFilter — будет фасетны...
mSearch для MODX3 и MS3 - уже в modstore.pro 9
16 января 2026, 02:03
Возвращался к этому вопросу, чтобы не грузить ничего заранее, делаем просто встраивание iframe после нажатия на div и вместо него встраиваем iframe. Н...
Вставка видео с Rutube с управлением на сайте 6
15 января 2026, 20:23
Вариант 1
Переопределить метод msOrderHandler::submit() таким образом, чтобы там перед установлением статуса «Новый» проверялся способ оплаты и, если...
[miniShop2] Дополнительная логика отправки писем при оформлении заказа 1
А нихрена. Нету там всей строки:
[REDIRECT_QUERY_STRING] => q=page.html
[REDIRECT_URL] => /page.html
[QUERY_STRING] => q=page.html
[REQUEST_URI] => /page.html
Всю жизнь $_SERVER['QUERY_STRING'] использовал. А сейчас как будто на другую планету попал. зелёные человечки полезут…
Кодом, кодом и ещё раз кодом:
Пока остановился на этом варианте как самом гибком. Для каждого сниппета — свой индивидуальный набор зависимых параметров, хэширование и прочее (всё это инкапсулировал в 2 функции, одну вызываю в начале сниппета, другую — в конце). Правда, сниппет всё равно вызывается (одно лишнее обращение к БД), но зато реализовывается тонкая индивидуальная логика кэширования.
Минусы этого варианта:
1) Всю логику кэширования придётся загонять внутрь сниппетов. Т.е. практически в каждом сниппете придётся реализовывать кэширование.
2) Отходим от модели кэширования modx. Все эти сниппеты придётся вызывать некэшированными, а логику кэширования реализовывать внутри сниппетов
3) Придётся для каждого такого сниппета предусматривать и реализовывать параметр &cache для возможности отключения кэширования.
Т.е. в целом вариант некрасивый и несистемный.
А войнушки касаются необходимости подстраивать свой код под изменяющуюся от версии к версии логику работы modx. Чем больше используешь тонкостей реализации modx, тем чаще придётся корректировать свой код.
К примеру, вон вышла новая версия modx 2.3 — так все компоненты, разработанные Василием, приходится корректировать. Потому что внутренняя логика работы modx несколько изменилась.
В любом случае, нет пересекающихся событий, генерируемых и при ручном обновлении сайта, и при вызове modCacheManager::clearCache(). Плюс событие OnCacheUpdate — deprecated.
К тому же при очистке кэша в момент сохранения элемента (при установленной галке «Очистить кэш при сохранении») не генерируется никаких событий, связанных с кэшем.
Т.е. единственный вариант решения сабжевой задачи — частное решение. Т.е. вызываем «обработчик» события «после очистки кэша»:
а) в обработчике OnSiteRefresh
б) везде в коде после вызова modCacheManager::clearCache()
в) во всех обработчиках «после сохранения элемента», если установлена галка «Очистить кэш при сохранении»
file_get_contents будет выполняться долго, пока не загрузятся все данные страницы. Более того, php-опция allow_url_fopen может быть отключена, тогда функция с url работать не будет.
А wget — внешняя утилита, которой может не быть в дистрибутиве. И если её запускать в отдельном потоке (асинхронно), то мы не сможем проконтролировать успешность обновления кэша. Если её запускать синхронно, то имеют место все недостатки file_get_contents'а.
1. Через file_get_contents:
2. Генерация кэша ресурса через modxCacheManager->generateResource()
3. Использование внешней утилиты wget
1-й способ — самый затратный по времени, т.к. придётся ждать полной загрузки страницы:
— выполняться будут не только кэшируемые элементы, но и некэшируемые (а для получения кэша ресурса некэшируемые элементы выполнять вовсе не нужно — это лишняя трата времени)
— придётся ждать полной загрузки данных со сторонних ресурсов (а сторонние ресурсы могут отдавать данные криво и долго)
2-й способ работает быстрее, т.к. выполняются только кэшируемые элементы.
3-й способ (wget), интересен тем, что можно запустить процесс загрузки страницы ресурса (как в 1-м способе), но при это не ждать завершения загрузки. Т.е. можно будет всего лишь инициировать процесс загрузки (обновления кэша) в отдельном потоке и продолжить выполнение своего кода.
Всё верно?
Пробовал и так:
Тоже кэш ресурса не создаёт. Проверил непосредственно в папке core/cache/resource — пусто
Может, refresh пересоздаёт кэш только если он уже существует?
Мне необходимо создать кэш ресурса. Если кэш существует, то обновить.
В противном случае предупреждения не попадают ни в логи php, ни в логи modx (в настройках php включены все логи: E_ALL | E_STRICT).
В настройках ничего похожего нет.
Можно, конечно, в плагине на OnLoadWebDocument и OnManagerPageInit, но это не кошерный вариант, т.к. плагин придётся вешать и на многие другие события (почти на все).
2. Если вручную удалить кэш munee (.../core/cache/default/munee), получаем тормоза.
3. Если оставить всю структуру папок и подпапок кэша munee, а кэш-файлы .css и .js из этих подпапок удалить, то по-прежнему наблюдаются тормоза.
Вывод: большой расход времени — из-за пересоздания всех кэш-файлов при первом запуске munee.
Вот сейчас всё понятно, откуда берутся цифры 0,2-0,7 сек (без очистки кэша modx) и 3-5 сек после очистки кэша modx. В первом случае обновляется только кэш одного файла (который изменился), во втором случае обновляются кэши всех файлов, которые передаются MinifyX/munee (их у меня 13 штук). Т.е. получаем разницу в 13 раз:
[0,2-0,7 сек] * 13 = [3-5 сек]
Всё сходится.
а) старые минимизированные файлы не удаляются (накапливаются)
б) после очистки кэша modx Minify очень долго работает (в 10 раз дольше), даже если при этом выходной файл НЕ пересоздаётся
решил реализацией собственного управления выходным файлом:
1. Самостоятельно проверяю необходимость пересоздания конечного минимизированного файла (если изменились исходные файлы)
2. Если необходимо пересоздать, вызываю сниппет MinifyX
3. После вызова MinifyX получаю имя сгенерированного минимизированного файла
4. Переименовываю этот файл (без всяких хэшей в имени файла)
5. Самостоятельно подключаю его на странице
В результате, подключение css и js выполняется долго только при одновременном выполнении следующих условий:
а) требуется создать (пересоздать) выходной минимизированный файл (изменились исходные файлы)
б) был очищен кэш modx с момента последнего вызова MinifyX 1.3.0
Во всех остальных случаях подключение css и js выполняется так же быстро, как и в версии MinifyX 1.2.2.