Fi1osof

Fi1osof

Был в сети 15 февраля 2026, 22:30
Заказы не принимаю
1
0
Ваня, привет!
Если тебе нужен именно файловый кеш-манагер (мне такое часто надо, не смотря на то, что используется мем-кешер, просто для того, чтобы что-то в файлы записывать и не заморачиваться с наличием директорий:)), то ты можешь несколько вариантов использовать.
Самый простой — это просто через $modx->getService() или new $className() (это ты и сам знаешь), но есть более правильный путь — юзать $modx->cacheManager->getProvider(). Просто MODX умеет одновременно работать с несколькими провайдерами. При этом есть вот такой вариант:
$manager = $modx->cacheManager;
$provider = $manager->getCacheProvider('file_cacher_key', [
    "file_cacher_key_cache_handler" => "xPDOFileCache",
]); 

$param = 'some value';
$key = "param_key";
$provider->set($key, $param);
Здесь ты работаешь с объектом конкретного кеш-провайдера. Обрати внимание в передаваемых параметрах: ключ провайдера является префиксом для параметра в массиве. file_cacher_key file_cacher_key_cache_handler. Ключ можно любой указывать, но правило соблюдать надо (только обязательно указывать и не default, иначе будет возвращен текущий кеш-провайдер, так как default — это его ключ в массиве провайдеров кеш-манагера).

Но в данном случае не совсем удобно то, что если будет желание еще в каком-то месте с ним поработать, то надо будет опять юзать getCacheProvider(). Вот другой вариант:
$manager = $modx->cacheManager;
$manager->getCacheProvider('file_cacher_key', [
    "file_cacher_key_cache_handler" => "xPDOFileCache",
]); 

$param = 'some value';
$key = "param_key";
$manager->set($key, $param, null, array(
    xPDO::OPT_CACHE_KEY => "file_cacher_key",
));
Здесь мы уже указываем ключ в методе set() самого кеш-манагера (само собой и в get() можем и т.п.). То есть метод $manager->getCacheProvider() получается своего рода регистратор кеш-провайдера, который можно один раз вызвать где-нибудь в плагине на OnHandlerRequest или типа того, а потом юзать стандарные set() И get(), просто указывая ключ файлового кеш-провайдера (или какой нужен).
0
Примеры использования серверных скриптов и здесь приводятся, но хотелось именно работы с этим в админке сайта. Плюс к этому не на всех хостингах получится использовать серверные скрипты, они могут быть просто недоступны. Этот же компонент должен работать нормально на большинстве хостингов.
0
Планы по совершенствованию есть, но они уже на новый год пойдут, сейчас работы полно. Но улучшение даже не конкретно этого компонента, а давно уже хотелось запилить типа файлового менеджера, а то медиасурсов полно, на работы между ними нет. Круто было бы иметь возможность копировать и перемещать файлы между различными медиасурсами. И вот в итоге хотелось бы иметь возможность запросто перемещать файлы из дропбокса в другой медиасурс и наоборот.
0
У меня вот здесь тоже реализованы разные курсы валют: www.drovyanka.ru/
Есть рубли, доллары и евро. Пару раз в день забирает актуальный курсы с ЦБР и сбрасывает кеш полностью, при получении данных товара пересчитывается цена в рубли. Все цены актуальные и нагрузка на сервер почти нулевая, отдает страницу довольно быстро. Реализация часа 3-4. Но это так, к слову…
А у тебя пытается каждый раз забрать курсы со стороннего сайта-источника и из-за этого тормоза?

P.S. к теме топика: на этом сайте 814 товаров и не пришлось вообще хоть как-то задумываться о производительности, так что говорить о каких-то тормазах при 500+ товаров — это как-то сомнительно.
0
Вообще берите за правило при установке MODX-а указывать уникальный префикс для таблиц. Это спасет ваш сайт от 99.9% всех старых и новых уязвимостей по SQL-инъекциям. Это и Женя подтверждал. Посмотрите на скрин, там четко указано modx_users. Нельзя в SQL-инъекцию передать системную настройку MODX-а префикса таблиц.