Кеширование ресурса из другого контекста
Добрый день!
Страницы из другого контекста грузятся нормально, но каждый раз берутся не из кеша, а рендерятся заново. Подскажите, пожалуйста, как страницы грузить из кеша контекста web или сохранять их в кеше контекста web1? Или сразу брать кешированными из контекста web?
У меня есть 2 контекста: web и web1. Контекст web открывается на домене site.ru. Контекст web1 открывается на поддомене web1.site.ru. В контексте web содержится каталог minishop2 и другие прочие страницы. В контексте web1 есть главная страница.
Переключение контекстов происходит при помощи плагина Василия bezumkin.ru/sections/tips_and_tricks/2439/
Есть еще один плагин, которые срабатывает на событие OnPageNotFound. Суть его в том, что если в контексте web1 нет страницы, то он ее ищет по урлу и грузит с контекста web.
Код плагина
2. В чем разница между тем, как отдавать страницу с другого контекста:
Вариант 1:
Страницы из другого контекста грузятся нормально, но каждый раз берутся не из кеша, а рендерятся заново. Подскажите, пожалуйста, как страницы грузить из кеша контекста web или сохранять их в кеше контекста web1? Или сразу брать кешированными из контекста web?
У меня есть 2 контекста: web и web1. Контекст web открывается на домене site.ru. Контекст web1 открывается на поддомене web1.site.ru. В контексте web содержится каталог minishop2 и другие прочие страницы. В контексте web1 есть главная страница.
Есть еще один плагин, которые срабатывает на событие OnPageNotFound. Суть его в том, что если в контексте web1 нет страницы, то он ее ищет по урлу и грузит с контекста web.
Код плагина
<?php
if ($modx->event->name == 'OnPageNotFound') {
$alias = $modx->context->getOption('request_param_alias', 'q');
if (!isset($_REQUEST[$alias])) {return false;}
$request = $_REQUEST[$alias];
$id_res = $modx->findResource($request, 'web');
$document = $modx->getObject('modResource', $id_res);
//$document = $modx->request->getResource('alias',$id_res);
if($document){
$modx->resource = $document;
$response = $modx->getResponse();
$output = $modx->response->outputContent();
exit($output);
//$modx->request->prepareResponse(); // рендерим товар миную контексты!
//exit();
}
}
1. Страницы из другого контекста грузятся нормально, но каждый раз берутся не из кеша, а рендерятся заново. Подскажите, пожалуйста, как страницы грузить из кеша контекста web или сохранять их в кеше контекста web1? Или сразу брать кешированными из контекста web?2. В чем разница между тем, как отдавать страницу с другого контекста:
Вариант 1:
$response = $modx->getResponse();
$output = $modx->response->outputContent();
exit($output);
Вариант 2:$modx->request->prepareResponse();
exit();
Комментарии: 1
Все решилось гораздо проще. Пропустил решение, которое не раз обсуждалось, с помощью sendForward.
1. Плагин на OnPageNotFound:
1. Плагин на OnPageNotFound:
<?php
if ($modx->event->name != 'OnPageNotFound') {return false;}
$alias = $modx->context->getOption('request_param_alias', 'q');
if (!isset($_REQUEST[$alias])) {return false;}
$request = $_REQUEST[$alias];
if (!$id_res = $modx->findResource($request, 'web')) return false;
$modx->sendForward($id_res);
exit();
2. Включить настройку allow_forward_across_contexts.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.