cyrax_02 08 августа 2015 2 6
До тех пор, пока в modx не появится настройка «cache_resource_map», этот вопрос не потеряет актуальности.

1.Ваше, Николай, решение — патч СacheOptimizer, который меняет оригинальные исходные файлы modx (оригинальный код) и соответственно, после обновления modx этот патч нужно переустанавливать (так ?)

Также есть способы обхода (не решения, а именно обхода) проблемы большой карты ресурсов:
2.Хранение кэша в оперативной памяти (memCached)
3.Раскидывание ресурсов по разным контекстам (не всегда удобно, поскольку при необходимости загружать одни и те же ресурсы в разных контекстах придётся либо плодить символические ссылки, либо использовать (OnPageNotFound + sendForward))

Текущая версия modx — 3.3.5. В настройках кэширования ничего нового. По-прежнему отключать можно только карту псевдонимов.

На сегодняшний день появились ли новые способы решения сабжевой проблемы?
Планируют ли разработчики modx добавить опциональное отключение карты ресурсов на уровне движка ?
6 комментариев
Fi1osof1
Fi1osof 08 августа 2015г в 14:11 #
Также есть способы обхода (не решения, а именно обхода) проблемы большой карты ресурсов:
2.Хранение кэша в оперативной памяти (memCached)
3.Раскидывание ресурсов по разным контекстам (не всегда удобно, поскольку при необходимости загружать одни и те же ресурсы в разных контекстах придётся либо плодить символические ссылки, либо использовать (OnPageNotFound + sendForward))
Эти варианты обхода практически бесполезны. Во-первых, проблема не только в хранении этого большого кеша, а в самой генерации кеша. Ведь каждый раз при сбросе кеша MODX должен в базе данных обойти все документы и нафигачить их в кеш. Когда у вас будет под сотню тысяч документов, средний сервер просто не справится с этой задачей, кеш соберется не полностью и сайт просто сломается (из-за попытки подгрузки невалидного php-кода). Во-вторых, раскидывая документы по разным контекстам, объем задач по генерации кеша не уменьшается, так что это только снижает объем загружаемого кеша при заходе на конкретный контекст, но нагрузка на сервер при генерации кеша хоть и не на много, но все же увеличится. В-третьих, сколько же вам контекстов понадобится, чтобы раскидать по ним пару сотен тысяч документов?
В общем, на сегодня, эти проблемы решает только cacheOptimizer. И да, при обновлении MODX его надо переустанавливать, без этого никак.
Не знаю планируют ли разрабы MODX-а что-то придумать на этот счет, но я решение придумал еще в 2011-ом. Там конечно картинок уже нет и код местами плохочитаемый, но суть уловить можно.

А вообще, тема кеширования в MODX на столько сложная, что вот так небольшими топиками о ней рассуждать почти нет смысла. Там книги писать можно.
c
cyrax_02 08 августа 2015г в 23:56 #
Придумал решение. Поскольку я не использую поле parent, то кэш ресурсов мне вообще и не нужен. Соответственно, после генерации файла context.cache.php (или при первой (после генерации карты) загрузке страницы) плагинами его можно подрезать. А именно — почистить подмассив 'resourceMap' (а всё остальное оставить) и перезалить этот файл. В итоге при загрузке страниц сайта будет подгружаться маленький файлик с config, webLinkMap, eventMap и policies.
Fi1osof1
Fi1osof 10 августа 2015г в 22:00 #
Это не решает проблемы большой нагрузки при генерации кеша.
c
cyrax_02 26 октября 2015г в 16:12 #
Это не решает проблемы большой нагрузки при генерации кеша.
Иногда сайт падает с критической ошибкой (белый экран):
mod_fcgid: stderr: PHP Warning: array_merge() [function.array-merge]: Argument #2 is not an array in /var/www/user/data/www/site.ru/core/model/modx/modx.class.php on line 2313, referer: www.site.ru/
mod_fcgid: stderr: PHP Fatal error: Class 'modUser_' not found in /var/www/user/data/www/site.ru/core/xpdo/xpdo.class.php on line 783, referer: www.site.ru/
Проблема решалась очисткой кэша modx. Думал, что криво записывался некоторый кэш в процессе работы скриптов modx. Но как оказалось, проблема была в том, что иногда modx не справляется с генерацией кэша большого числа ресурсов и записывает кривой кэш контекста context.cache.phpс пустым содержанием:
<?php  return array (
  'resourceMap' => 
  array (        
  ),
  'pluginCache' => NULL,
);

После удаления и перегенерации этого файла страницы грузятся нормально.

Так что, проблема уже себя проявляет. В версии modx 2.4.2 настройка cache_alias_map (подобно cache_alias_map) так и не появилась…
Fi1osof1
Fi1osof 26 октября 2015г в 18:18 #
Собственно, про это я и говорил. Да, печаль. Может когда-нибудь появится.
c
cyrax_02 26 октября 2015г в 16:13 #
В версии modx 2.4.2 настройка cache_resource_map (подобно cache_alias_map) так и не появилась…
Авторизуйтесь или зарегистрируйтесь (можно через соцсети ), чтобы оставлять комментарии.