Создание большой карты сайта в Google App Engine? - PullRequest
4 голосов
/ 07 июля 2010

У меня есть сайт с около 100 000 уникальных страниц.

(1) Как мне создать Sitemap для всех этих ссылок?Должен ли я просто перечислить их в большом файле, совместимом с протоколом карты сайта?

(2) Необходимо реализовать это в Google App Engine, где существует ограничение на количество запросов в 1000 единиц, и все URL-адреса моего отдельного сайта хранятся в виде отдельных записей.Как мне решить эту проблему?

Ответы [ 3 ]

6 голосов
/ 07 июля 2010

Карты сайта должны быть не более 10 МБ и содержать не более 50 000 URL-адресов, поэтому вам придется как-то их разбить.

Вам понадобится какая-то стратегия шардинга. Я не знаю, как выглядят ваши данные, поэтому сейчас, скажем, каждый раз, когда вы создаете сущность страницы, вы присваиваете ей случайное целое число от 1 до 500.

Далее создайте индекс Sitemap и выложите ссылку на карту сайта для каждого значения индекса:

<?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 и т. Д.

0 голосов
/ 19 марта 2012

У меня была похожая проблема, но вместо того, чтобы заново изобрести колесо, я только что подключил генератор Sitemap Google http://sitemap -generators.googlecode.com / svn / trunk / docs / en / sitemap-generator.html .Это сработало для меня, так как мое приложение основано на Python.

0 голосов
/ 07 июля 2010

Вы можете использовать Курсоры запросов , чтобы обойти ограничение в 1000 элементов запроса; хотя даже использование курсоров, вероятно, не решит полностью вашу проблему, поскольку создание карты сайта с 100 000 элементов в ней может легко превысить количество времени, которое разрешено выполнить одному запросу. Кроме того, динамическая генерация карты сайта может легко использовать всю или большую часть вашей квоты ресурсов.

Если ваши данные не очень динамичны, я бы подумал о создании статического файла Sitemap и включении его в ваш пакет развертывания. Даже если ваши данные очень динамичны, вы, вероятно, захотите принять стратегию их регенерации только один раз в день и выполнить развертывание для размещения на сервере.

...