Тема меня интересует из-за размера Википедии. Может быть легко создать несколько крон для периодического обновления карты сайта на небольшом сайте, но как насчет большого? Так:
Как Википедия создает карту сайта?
Он динамически создается сценарием PHP. Для больших сайтов, вероятно, лучше проверять наличие изменений и генерировать только если что-то изменилось - или генерировать только каждые XY минут / часов / дней. Это зависит от инфраструктуры.
Вся необходимая информация находится в базе данных, так что это не такая уж сложная задача.
И вот доказательство: http://svn.wikimedia.org/viewvc/mediawiki/trunk/phase3/main maintenance/generateSitemap.php?view=log / http://www.mediawiki.org/wiki/Manual:GenerateSitemap.php
Редактировать: Ах да, это тоже может быть интересно для этой темы:
Некоторое время назад передо мной стояла задача создать карту сайта для нашего сайта. Хотя это не размер Википедии, он по-прежнему составляет около сотни тысяч страниц, и около 5% из них изменяются, добавляются или удаляются ежедневно.
Поскольку размещение всех ссылок на страницы в одном файле сделало бы его слишком большим, мне пришлось разделить их на разделы. Индекс карты сайта указывает на страницу aspx со строкой запроса для одного из 17 различных разделов. В зависимости от строки запроса страница возвращает xml, ссылающийся на несколько тысяч страниц, в зависимости от того, какие объекты существуют в базе данных.
Таким образом, карта сайта не создается периодически, вместо этого она создается на лету, когда кто-то ее запрашивает. Поскольку у нас уже есть система кэширования результатов поиска в базе данных, она, конечно, также используется для извлечения данных для карты сайта.
Хотя код генерации карты сайта находится в главном мастере MediaWiki и, безусловно, был бы вариантом, выбранным для создания карты сайта, я не вижу никаких доказательств того, что Википедия действительно включила его. Файл robots.txt не указывает ни на какие карты сайта.
Кроме того, любой сценарий обслуживания, запускаемый в проектах Викимедиа, контролируется марионеткой, и есть в репозитории марионеток нет экземпляра generateSitemap.php. Наконец, в дампы для любой вики Викимедиа либо, пока есть "аннотации для Yahoo".
В любом случае Википедия запускает кеши Squid перед серверами приложений. Они могут контролировать, как часто обновляется их карта сайта, регулируя время истечения срока действия страницы.
Более того, все, что Википедия делает для индексации, не является хорошей моделью для вашей вики, потому что у Google есть специальные контакты / сделки / обработка Википедии, см. недавний пример.
Я не уверен, но я думаю, что они используют Карта сайта Google расширение для MediaWiki. Это подтверждается страницей Википедии на Файлы Sitemap.