Как Википедия генерирует свой Sitemap?

9

Тема интересует меня из-за размера Википедии. Может быть легко создать несколько крон для периодического обновления карт сайта на маленьком сайте, но как насчет большого? Так:

Как Википедия генерирует свой Sitemap?


источник

Ответы:

9

Он динамически генерируется скриптом PHP. Для больших сайтов, вероятно, лучше проверять изменения и генерировать только если что-то изменилось - или генерировать это только каждые XY минут / часов / дней. Это зависит от инфраструктуры.

Вся необходимая информация находится в базе данных, так что это не такая сложная задача.

И вот доказательство: http://svn.wikimedia.org/viewvc/mediawiki/trunk/phase3/maintenance/generateSitemap.php?view=log / http://www.mediawiki.org/wiki/Manual:GenerateSitemap. PHP

Изменить: Ах, и это может быть также интересно для этой темы:

Грегор
источник
Не могли бы вы использовать PHP-код для генерации карты сайта для любых крупных сайтов? Вы подразумеваете под словом «динамически», что карта сайта генерируется несколько автоматически и вносит небольшие изменения в код при необходимости?
Можете ли вы уточнить предложение «Вся необходимая информация находится в базе данных, так что это не такая сложная задача»? Где я могу увидеть базу данных?
Я думаю, он имеет в виду, что вся информация находится в базе данных, лежащей в основе mediawiki. Если вы не являетесь одним из системных администраторов или администраторов Википедии, вы, вероятно, не сможете получить прямой доступ к их БД.
Cian
3
Я также думаю, что ОП пытается выяснить, как сгенерировать файл Sitemap на «большом» сайте, в случае Википедии он очень сильно зависит от СУБД (MySQL), и все страницы обслуживаются из базы данных. Поэтому ваша БД знает все страницы, и для этого вам нужен PHP-скрипт с простым набором символов (см. Выше в Subversion). В случае других сайтов, основанных на других технологиях, вы обнаружите, что необходимый подход отличается. В прошлый раз, когда я проверял, Википедия публиковала свои базы данных для загрузки, или, по крайней мере, они публиковали свой контент в файле .SQL.
nixgeek
1
Вот [Dik Wikipedia DB] [1] :-) [1]: en.wikipedia.org/wiki/…
Грегор
1

Недавно я столкнулся с задачей создать карту сайта для нашего сайта. Хотя это не размер Википедии, это все еще около ста тысяч страниц, и около 5% из них меняются, добавляются или удаляются ежедневно.

Поскольку размещение всех ссылок на страницы в одном файле сделало бы его слишком большим, мне пришлось разделить их на разделы. Индекс карты сайта указывает на страницу aspx со строкой запроса для одного из 17 различных разделов. В зависимости от строки запроса страница возвращает XML, ссылающийся на несколько тысяч страниц, в зависимости от того, какие объекты существуют в базе данных.

Таким образом, карта сайта не создается периодически, а создается на лету, когда кто-то ее запрашивает. Поскольку у нас уже есть система для кэширования поиска в базе данных, она, конечно, также используется для извлечения данных для карты сайта.

Guffa
источник
Почему отрицательный голос? Если вы не объясните, что вы считаете неправильным, это не улучшит ответ.
Guffa
1

Хотя код генерации карты сайта находится в основном мастере MediaWiki и, безусловно, будет выбран для создания карты сайта, я не вижу никаких доказательств того, что в Википедии она действительно включена. Файл robots.txt не указывает на карты сайта.

Кроме того, любой скрипт обслуживания, выполняемый в проектах Викимедиа, контролируется puppet, и в репозитории puppet нет экземпляра generateSitemap.php . Наконец, в дампах нет ни одной карты сайта для какой- либо вики Викимедиа , хотя есть « рефераты для Yahoo ».

В любом случае, Википедия запускает кеш Squid перед серверами приложений. Они могут контролировать частоту обновления своего сайта, регулируя время истечения срока действия страницы.

Более того, то, что Википедия делает для индексации, не является хорошей моделью для вашей вики, потому что у Google есть специальные контакты / сделки / обработка Википедии, см. Недавний пример .

brianegge
источник
+1 умное наблюдение
1
Нет никакой реальной причины ожидать, что robots.txt ссылается на карту сайта, поэтому отсутствие такой ссылки ничего не доказывает.
Джон Гарденье
0

Я не уверен, но я думаю, что они используют расширение Google Sitemap для MediaWiki. Это поддерживается страницей Википедии в файлах Sitemap .

Кит
источник