Sitemap генерируется 414 секунд.
Добрый день, на сайте 12836 страниц. Sitemap.xml генерируется 414 секунд.
Что можно сделать с этим, как ускорить. Яндекс и Google не могут загрузить файл.
Вот такой вывод showLog:
Что можно сделать с этим, как ускорить. Яндекс и Google не могут загрузить файл.
Вот такой вывод showLog:
0.0001330: pdoTools loaded
0.0000470: Conditions prepared
0.0000079: Query parameters ready
0.0001872: No cached data for key «default/sitemap/a1d340»
0.0000310: xPDO query object created
0.0002091: Added selection of modResource: SQL_CALC_FOUND_ROWS `id`, `editedon`, `createdon`, `context_key`, `class_key`, `uri`, `content`
0.0000420: Processed additional conditions
0.0006759: Added where condition: modResource.hidemenu=0, OR:modResource.class_key:IN(Ticket,Article), modResource.published=1, modResource.deleted=0, modResource.searchable=1, modResource.context_key=web
0.0001619: Sorted by modResource.menuindex, asc
0.0009911: SQL prepared «SELECT SQL_CALC_FOUND_ROWS `modResource`.`id`, `modResource`.`editedon`, `modResource`.`createdon`, `modResource`.`context_key`, `modResource`.`class_key`, `modResource`.`uri`, `modResource`.`content` FROM `ryrc_site_content` AS `modResource` WHERE ( ( `modResource`.`hidemenu` = 0 OR `modResource`.`class_key` IN ('Ticket','Article') ) AND `modResource`.`published` = 1 AND `modResource`.`deleted` = 0 AND `modResource`.`searchable` = 1 AND `modResource`.`context_key` = 'web' ) ORDER BY modResource.menuindex asc „
0.2346210: SQL executed
0.0003691: Total rows: 12836
0.0233071: Rows fetched
0.0608480: Returning raw data
0.0150259: Created inline “modChunk» with name «d980adc1aeb51ab5c91d4c4741c276a4»
414.0271800: Rows processed
0.6068261: Saved data to cache «default/sitemap/a1d340»
0.0254791: Created inline «modChunk» with name «be75dd4b9525127c59b774f94767849c»
0.6575530: Rows wrapped
415.6537869: Total time
82 051 072: Memory usage
Комментарии: 12
Вариант с жестким кешированием на день/несколько дней не подойдет?
Генерируете по крону в файл, на странице sitemap.xml сниппет с примерным содержанием:
Генерируете по крону в файл, на странице sitemap.xml сниппет с примерным содержанием:
<?php
return file_get_contents('pach_to_file');
Вы можете реализовать сборный sitemap.
Еще можете попробовать переписать tpl и tplWrapper на fenom, должно прилично ускорить.
Неестественное для pdoSitemap со стандартными чанками время. Если используются нестандартные чанки, приведите их содержимое.
7 минут многовато конечно, но и 12 тыс ресурсов — дело такое. Учитывая, что проверяются даты и вычисляются коэффициенты важности ресурсов.
Не вижу присоединения TV для проверки важности. Соответственно, остается только проверка дат. Поскольку работа не на объектах, то 12К — не так уж много.
Нужно использовать волшебный параметр
Вот лог modx.pro:
Вот такой вызов:
&scheme=`uri`
тогда для адресов страниц будет использоваться их uri, без запуска функции modX::makeUrl().Вот лог modx.pro:
0.0000691: pdoTools loaded 0.0000439: Conditions prepared 0.0000050: Query parameters ready 0.0000920: No cached data for key «default/sitemap/13f0b2» 0.0000150: xPDO query object created 0.0000861: Added selection of modResource: SQL_CALC_FOUND_ROWS `id`, `editedon`, `createdon`, `context_key`, `class_key`, `uri`, `content` 0.0000200: Processed additional conditions 0.0002549: Added where condition: modResource.hidemenu=0, OR:modResource.class_key:IN(Ticket,Article), modResource.published=1, modResource.deleted=0, modResource.searchable=1, modResource.context_key=web 0.0000701: Sorted by modResource.menuindex, asc 0.0002680: SQL prepared «SELECT SQL_CALC_FOUND_ROWS `modResource`.`id`, `modResource`.`editedon`, `modResource`.`createdon`, `modResource`.`context_key`, `modResource`.`class_key`, `modResource`.`uri`, `modResource`.`content` FROM `b2QHetSLC6ET_site_content` AS `modResource` WHERE ( ( `modResource`.`hidemenu` = 0 OR `modResource`.`class_key` IN ('Ticket','Article') ) AND `modResource`.`published` = 1 AND `modResource`.`deleted` = 0 AND `modResource`.`searchable` = 1 AND `modResource`.`context_key` = 'web' ) ORDER BY modResource.menuindex asc „ 0.1018419: SQL executed 0.0021629: Total rows: 9786 0.0283070: Rows fetched 0.0230331: Returning raw data 0.0005159: Created inline “modChunk» with name «93a97ed9d66e351bc63bf3ddfa38f405» 0.0122530: Compiled Fenom chunk with name «modchunk/93a97ed9d66e351bc63bf3ddfa38f405» 0.1083400: Rows processed 0.0142739: Saved data to cache «default/sitemap/13f0b2» 0.0096161: Created inline «modChunk» with name «be75dd4b9525127c59b774f94767849c» 0.0241339: Rows wrapped 0.3255181: Total time 82 395 136: Memory usage
Вот такой вызов:
[[!pdoSitemap?
&scheme=`uri`
&tpl=`@INLINE
<url>
<loc>{$_modx->config.site_url}{$url}</loc>
<lastmod>{$date}</lastmod>
<changefreq>{$update}</changefreq>
<priority>{$priority}</priority>
</url>`
]]
При использовании &scheme=`uri` для главной страницы генерируется ссылка вида (из псевдонима): site.ru/glavnaya. Без &scheme=`uri` — все нормально — site.ru/
Как исправить это при использовании &scheme=`uri`?
Как исправить это при использовании &scheme=`uri`?
Мое решение по правильному выводу главной страницы в sitemap:
<loc>{$_modx->config.site_url}{$id == '1' ? '' : $url}</loc>
Главная страница -> настройки -> заморозить url (включить и выставить что-нибудь в духе index.php)
(для выборки больших объемов страниц любых лишних операций лучше избегать)
(для выборки больших объемов страниц любых лишних операций лучше избегать)
Это я попробовал в самом начале, причем пустым значение оставить нельзя.
Ну поменяете вы для главной на index.php и заморозите, при выводе у вас будет ссылка следующего вида:
Ну поменяете вы для главной на index.php и заморозите, при выводе у вас будет ссылка следующего вида:
<a href="http://site.ru/index.php">Главная</a>
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.