Кеширование ресурса из другого контекста

Добрый день!

Страницы из другого контекста грузятся нормально, но каждый раз берутся не из кеша, а рендерятся заново. Подскажите, пожалуйста, как страницы грузить из кеша контекста 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.

Код плагина
<?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();
Михаил
13 июля 2018, 18:34
modx.pro
1
1 009
0

Комментарии: 1

Михаил
18 июля 2018, 11:03
0
Все решилось гораздо проще. Пропустил решение, которое не раз обсуждалось, с помощью sendForward.

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.
    Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
    1