Карты сайта должны быть не более 10 МБ и содержать не более 50 000 URL-адресов, поэтому вам нужно как-то разбить его.
Вам понадобится какая-то стратегия очертания. Я не знаю, как выглядят ваши данные, так что теперь, скажем, каждый раз, когда вы создаете объект страницы, вы назначаете ему случайное целое число от 1 до 500.
Затем создайте Sitemap index и выплюните карту сайта ссылка для каждого из значений индекса:
<?xml version="1.0" encoding="UTF-8"?>
<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<sitemap>
<loc>http://example.appspot.com/sitemap?random=1</loc>
</sitemap>
<sitemap>
<loc>http://example.appspot.com/sitemap?random=2</loc>
</sitemap>
...
<sitemap>
<loc>http://example.appspot.com/sitemap?random=500</loc>
</sitemap>
</sitemapindex>
Наконец, на странице карты сайта, запрос для страниц и фильтра для вашего случайного индекса. Если у вас 100 000 страниц, это даст вам около 200 URL-адресов на карту сайта.
Немного другая стратегия здесь должна была бы дать каждой странице автоинкрементный числовой идентификатор. Для этого вам нужен объект-счетчик, который заблокирован транзакцией и увеличивается каждый раз при создании новой страницы. Недостатком этого является то, что вы не можете распараллелить создание новых объектов страницы. Положительным моментом является то, что у вас будет немного больше контроля над тем, как выкладываются ваши страницы, поскольку ваша первая карта сайта может быть страницами 1-1000 и т. Д.
awesome! спасибо, что сделал мою жизнь проще :) Я собираюсь закодировать это в ближайшие 30 минут сейчас :) – demos
Хорошая стратегия! Тем не менее использование инкрементного счетчика в App Engine обычно является плохим. –
интересный подход – systempuntoout