Cyrax_02
С нами с 04 августа 2013; Место в рейтинге пользователей: #208Вчера в 20:24
[[!SocialNetworks?
&tpl=`@INLINE <li [[+classes]]><a href="[[+link]]" target="...
SocialNetworks 17
Вчера в 18:43
Насколько я помню msMCD не перерисовывает корзину, а точечно обновляет данные, вероятно для этого на html-блоках с этими данными должны быть атрибуты ...
В миникорзине msMCD обновляется цена и счетчик на лету, а pagetitle и изображение только при обновле... 3
Вчера в 13:04
Наверное стоит проверить пути в модуле оплаты, особенно если мишишоп версии 4.*.*
Проблема с оплатой 1
23 марта 2025, 18:52
Спасибо, поискал инфу и тоже понял, что дело в login. Написал posthooks
<?php
// Получаем данные из запроса
$aboutMe = $modx->getOption('about_...
Проблемы с CKeditor? сбрасывает html теги 2
22 марта 2025, 22:21
Зачем проверять допустимое количество файлов в цикле оно же не меняется?Ты прав, эту проверку можно вынести из цикла)
Простая drag-n-drop зона для отправки файлов с помощью FormIt 7
21 марта 2025, 15:36
Круто. А я слона не заметил :-) разбираться с шаблонами политик полез :-)
Хотя в курсе же был что доступ только на процессорах проверяется. Но засомн...
Какие права доступа нужно давать пользователям для удаление своих записей 3
20 марта 2025, 22:37
Они свой сервер защищать хотят видимо
Необходимо доработать API сделанное на modx, добавить блокировку по IP при частых запросах. 3
20 марта 2025, 00:16
Разобрался, все сделал! Спасибо за помощь!
Вывод полей в таблице заказов minishop2 6
19 марта 2025, 18:43
Hello @Henk Everts
Nice to meet you. Thanks for the translate. It is awesome.
MODX/AI Hackathon Part 2 (27 марта) 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.