Cyrax_02

Cyrax_02

С нами с 04 августа 2013; Место в рейтинге пользователей: #250

debugParser: время парсинга некэшируемых сниппетов

Вопрос касается времени парсинга (без выполнения) некэшируемых снипптов, замеряемое через debugParser.

3. Имеется некэшируемый сниппет snp01:
— время выполнения кода сниппета: 0.01-0.02 сек
— время парсинга сниппета, показанное debugParser: 0.3 сек
— объём сниппета: 1000 строк кода = 55 Кб
— время считывания/подключения include-файла сниппета (core/cache/includes/elements/modsnippet/xxx.include.cache.php): 0.003-0.004 сек
— разница между временем парсинга и временем выполнения кода: 0.28 сек

2. Имеется некэшируемый сниппет snp02:
— время выполнения кода сниппета: 0.018 сек
— время парсинга сниппета, показанное debugParser: 0.04-0.05 сек
— объём сниппета: 145 строк кода = 6,5 Кб
— время считывания/подключения include-файла сниппета (core/cache/includes/elements/modsnippet/xxx.include.cache.php): 0.0004 сек
— разница между временем парсинга и временем выполнения кода: 0.03 сек

Получаем такую тенденцию: чем большер размер сниппета, тем дольше он парсится. Какие же такие масштабные операции над сниппетами (зависящие от текстового объёма сниппета) выполняет modx?
Cyrax_02
06 октября 2014, 10:41
modx.pro
2 065
0

"Сериализация" объекта XPDOQuery

Как оказалось, у меня только лишь подготовка объекта XPDOQuery (создание, подключение TV, условия) занимает 0.1 сек. И это без выполнения запроса.
TV и условий там много. Именно поэтому, и набегает столько времени. Логично здесь реализовать кэширование этого объекта. Но проблема в том, что этот объект НЕсериализуем.
Cyrax_02
25 сентября 2014, 08:44
modx.pro
2
1 399
0

modx cacheManager: где "хранится" время жизни ?

$value = '555';
$modx->cacheManager->set('test', $value, 20);
echo $modx->cacheManager->get('test');
Здесь кэш должен «храниться» 20 сек. Фактически этот код возвращает '555' и через час, и через два.
Физически, в /core/cache/default лежит файл test.cache.php. А где «лежит» его время жизни?
Cyrax_02
25 августа 2014, 16:05
modx.pro
4 585
-1

Получение в чанке ссылки на текущую страницу с изм

Предположим, url текущей страницы имеет несколько параметров. В чанке указывается ссылка, которая должна загрузить эту же страницу, но с одним изменённым параметром
href="[[~[[*id]]? &page=`1`]]"
Можно ли что-нибудь такое сделать, чтобы все прочие параметры здесь не перечислять (их придётся передавать черех плейсхолдеры), а указать только тот, который меняется?
Cyrax_02
04 августа 2014, 13:37
modx.pro
11 027
0

Один ресурс - несколько кэшей

Нетрививальная задача:
а) есть два сайта на одном движке modx
б) все ресурсы в БД modx — общие для этих сайтов, т.е. одни и те же ресурсы (информация об одних и тех же ресурсах) могут отображаться на обоих сайтах
в) на каждом сайте отображается свой набор ресурсов

Т.е. на сайте A отображается информация о ресурсах 5,6,7,15,16,17, на сайте B — 5,15,16,25,28,100,101. Т.е. на каждом из сайтов должен быть доступ ко всем ресурсам.

Сейчас у меня все ресурсы лежат в одном контексте. За то, какие данные отображать на том или ином сайте — за это отвечают сниппеты и функции (определяют имя домена и отображают требуемые данные).

Проблема заключается в том, как организовать кэширование. Предположим, что один и тот же русурс загружается на сайте A и сайте B (на каждом из сайтов этот ресурс отображается по-разному и сопровождается различной информацией). Ресурс один и тот же, но кэши у него должны быть разные (отдельные). Т.е. каждый ресурс должен иметь 2 кэша для каждого из сайтов.
Cyrax_02
18 июля 2014, 07:45
modx.pro
1
1 822
0

PDOTools::getChunk возвр.массив в строковом виде

pdoTools 1.9.2
Если чанк не найден (в частности, если его длина превышает 50 символов), то PDOTools::getChunk($chunk, $placeholders) возвращает строковое представление массива $placeholders.

Это так задумано или это артефакт?
Стандартный modx::getChunk в указанных случаях возвращает пустую строку. Правда, никаких сообщений в логах не пишет (это плохо).
Cyrax_02
07 июля 2014, 09:53
modx.pro
1 136
0

Какие события вызываются при очистке кэша modx ?

События, касающиеся кэша:
OnBeforeCacheUpdate
OnBeforeSaveWebPageCache
OnCacheUpdate
OnSiteRefresh
OnLoadWebPageCache

При ручном обновлении сайта («Сайт» — «Обновить сайт») вызываются следующие кэш-зависимые события:
OnBeforeCacheUpdate
OnSiteRefresh


При загрузке страницы:
OnBeforeSaveWebPageCache
OnCacheUpdate


При программном вызове метода modxCacheManager->clearCache() никакие кэш-зависимые события не вызываются.
При сохранении элемента (при установленной галке «Очистить кэш при сохранении») тоже никакие кэш-зависимые события не вызываются.

Тогда как отследить момент «после очистки кэша»?
Cyrax_02
28 июня 2014, 08:22
modx.pro
1
2 074
0

Как программно обновить кэш определённого ресурса

Имеется ресурс с id = 950000
Как с помощью modx'ового cacheManager'а обновить (создать) кэш этого ресурса?

$cacheManager = $modx->getCacheManager();
а дальше ?
Cyrax_02
27 июня 2014, 13:07
modx.pro
1
3 547
0

MinifyX 1.3.0 работает очень медленно (1.2.2)

Обновил MinifyX с 1.2.2 до 1.3.0. Если раньше после очистки кэша modx и удаления всех созданных им минимизированных файлов обработка подключаемых файлов занимала 0,7 сек, то сейчас 3 сек.
С чем это связано?

1. С тем, что сейчас minifyX работает не со временем создания исходных файлов, а с хэшем их содержимого (читает содержимое всех подключаемых файлов + вычисляет хэш)?

2. Как отвязать minifyX от кэша modx? При каждом обновлении кэша modx (даже если не менять исходные файлы и не трогать сгенерированные минимизированные файлы) minifyX по новой отрабатывает 3 сек (полностью всё пересоздаёт).

Раньше при очистке кэша modx он ничего не пересоздавал. Да и минифицировал файлы за 0,7 сек.
Cyrax_02
01 июня 2014, 15:04
modx.pro
1 652
0

modx: как зафиксировать момент сохранения файла ?

При сохранении некоторого файла средствами modx каким образом зафиксировать момент этого сохранения? Фактически, требуется событие на сохранение внешнего файла. А такого в modx нет.
Каковы альтернативные варианты?
Cyrax_02
01 июня 2014, 08:24
modx.pro
1 169
0