pdoSitemap кеширование
Приветствую!
Cитуация такая, создан ресурс sitemap.xml, некешируемый, в нем вызов pdoSitemap некешируемый, т.е. при каждом запросе должен строить xml файл
но есть проблема:
Есть домен site.com, поддомен poddomen.site.com
— при заходе site.com/sitemap.xml заходим все ок в ссылках
— заходим poddomen.site.com/sitemap.xml, там ссылки, а точнее домен в ссылках site.com, хотя должен быть poddomen.site.com
После очистка кеша зайдя на poddomen.site.com/sitemap.xml все ок, но при заходе на site.com/sitemap.xml домен в ссылках poddomen.site.com
Пока нашел решение при вызове pdoSitemap
Подскажите пожалуйста почему такая ситуация, вроде все некешируемо, но он все равно кеширует?
Cитуация такая, создан ресурс sitemap.xml, некешируемый, в нем вызов pdoSitemap некешируемый, т.е. при каждом запросе должен строить xml файл
но есть проблема:
Есть домен site.com, поддомен poddomen.site.com
— при заходе site.com/sitemap.xml заходим все ок в ссылках
— заходим poddomen.site.com/sitemap.xml, там ссылки, а точнее домен в ссылках site.com, хотя должен быть poddomen.site.com
После очистка кеша зайдя на poddomen.site.com/sitemap.xml все ок, но при заходе на site.com/sitemap.xml домен в ссылках poddomen.site.com
Пока нашел решение при вызове pdoSitemap
'cacheTime' => 1
Подскажите пожалуйста почему такая ситуация, вроде все некешируемо, но он все равно кеширует?
Комментарии: 9
Шаблон может кэшироваться, Можете посмотреть в папке core/cache/, там увидите, где у вас происходит кэш.
disk.yandex.ru/i/wIiFfWqjK78AxA
Есть кешовый файл
disk.yandex.ru/i/cFgFjjmhf3BYFQ
Он должен быть если я вызываю некешированным?
С кеширование мало знаком так что мои догадки такие себе, но будто в сниппете не учтено некешироваться.
Такая ситуация и на других сайтах.
Так же пробовал в контенте Некешируемого Ресурса вызывать с Пустым шаблоном, все равно тянет из кеша
Есть кешовый файл
disk.yandex.ru/i/cFgFjjmhf3BYFQ
Он должен быть если я вызываю некешированным?
С кеширование мало знаком так что мои догадки такие себе, но будто в сниппете не учтено некешироваться.
Такая ситуация и на других сайтах.
Так же пробовал в контенте Некешируемого Ресурса вызывать с Пустым шаблоном, все равно тянет из кеша
Вообще у поисковых систем есть понятие «Основное зеркало». Я бы отталкивался от него. Соответственно, если поддомен — дубль сайта, то я бы сделал 302 редирект на основной домен. Если поддомен содержит уникальную информацию, то я бы реализовывал либо контекстами, либо самописным функционалом…
А вообще, когда-то давно реализовывал самописным функционалом города. Вот код его плагина:
А вообще, когда-то давно реализовывал самописным функционалом города. Вот код его плагина:
<?php
/** @var modX $modx */
switch ($modx->event->name) {
case 'OnHandleRequest':
$host = $_SERVER['HTTP_HOST'];
/** @var city $cityService */
$cityService = $modx->getService('city', 'city', MODX_CORE_PATH . 'components/city/model/', array());
if (!$cityService) {$modx->log(xPDO::LOG_LEVEL_ERROR, 'Could not load city class!');return;}
$city = $cityService->getCity($host);
if (empty($city)) {return;}
$server_protocol = $modx->getOption('server_protocol', array(), 'http');
if (!$city['active']) {$modx->sendErrorPage();return;}
foreach ($city as $key => $value) {
if (in_array($key, $cityService::EXCLUDE_FIELDS) || empty($value)) {continue;}
else if ($key == 'key') {
$cityService->setSettings('http_host', $value);
$cityService->setSettings('site_url', $server_protocol . '://' . $value . '/');
}
else if ($key == 'name_site') {
$cityService->setSettings('site_name', $value);
}
else if ($key == 'name') {
$cityService->setSettings('city', $value);
}
else {
$cityService->setSettings($key, $value);
}
}
break;
}
Отсюда вас могут интересовать строки:$cityService->setSettings('http_host', $value);
$cityService->setSettings('site_url', $server_protocol . '://' . $value . '/');
Попробуйте на этом же событии установить эти системные настройки в соответствии с доменами в запросе… У меня тогда такое сработало и работает до сих пор!
Я не совсем про реализацию городов, города я делал по разному и контексты и ресурсы и migx.
Тут проблема(или мое непонимание) кеширования при вызове pdoSitemap.
даже если в шаблоне для теста указать напрямую {$.server.HTTP_HOST}, результат будет такой же
Тут проблема(или мое непонимание) кеширования при вызове pdoSitemap.
даже если в шаблоне для теста указать напрямую {$.server.HTTP_HOST}, результат будет такой же
{'!pdoSitemap' | snippet : [
'parents' => '0'
'tpl' => '@INLINE <url>
<loc>{$.server.HTTP_HOST}[[+url]]</loc>
<lastmod>[[+date]]</lastmod>
<changefreq>[[+update]]</changefreq>
<priority>[[+priority]]</priority>
</url>'
]}
Ну причем тут города? Я привел для примера и объяснил, что бы у вас было понимание, что делает данный плагин… Что бы вы могли увидеть схожесть ситуаций и понять, что я так же мог столкнуться с такой проблемой… Но не столкнулся…
Предположил, что ModX мог отдавать старый кеш шаблона\страницы так как в системных настройках видит соответствующий домен… Поэтому и предложил до начала обработки кеша изменить домен на корректный… Я давно не лазил в модуль кеширования и не помню что и как там реализовано…
Просто еще раз напомню, что с такой реализацией у меня и контент в полях корректный и роботсы и сайтмапы…
Предположил, что ModX мог отдавать старый кеш шаблона\страницы так как в системных настройках видит соответствующий домен… Поэтому и предложил до начала обработки кеша изменить домен на корректный… Я давно не лазил в модуль кеширования и не помню что и как там реализовано…
Просто еще раз напомню, что с такой реализацией у меня и контент в полях корректный и роботсы и сайтмапы…
Понял Вас.
При смене http_host и site_url, pdoSitemap должен среагировать и сформировать новый sitemap.
При смене http_host и site_url, pdoSitemap должен среагировать и сформировать новый sitemap.
@Сергей Шлоков, не проясните ситуацию?
В параметрах сниппета отключи кэш
{'!pdoSitemap' | snippet : [
...
'cache' => false
]}
Спасибо Сергей! работает
Вот только в документации нет такого параметра в разделе «Общие параметры» и у самого pdoSitemap, а вот заглянул сейчас в pdoMenu — там есть.
Вот только в документации нет такого параметра в разделе «Общие параметры» и у самого pdoSitemap, а вот заглянул сейчас в pdoMenu — там есть.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.