Wikipedia Site Haritasını nasıl oluşturur?


9

Vikipedi'nin boyutu nedeniyle konu beni ilgilendiriyor. Site haritalarını küçük bir sitede periyodik olarak güncellemek için bazı crons oluşturmak kolay olabilir, ancak büyük bir site ne olacak? Yani:

Wikipedia Site Haritasını nasıl oluşturur?

Yanıtlar:


9

Bir PHP betiği tarafından dinamik olarak oluşturulur. Büyük siteler için, değişiklikleri kontrol etmek ve yalnızca bir şey değiştiğinde oluşturmak veya yalnızca her XY dakika / saat / günde bir oluşturmak daha iyidir. Altyapıya bağlıdır.

Gerekli bilgilerin hepsi veritabanındadır, bu yüzden zor bir görev değildir.

Ve işte kanıt: http://svn.wikimedia.org/viewvc/mediawiki/trunk/phase3/maintenance/generateSitemap.php?view=log / http://www.mediawiki.org/wiki/Manual:GenerateSitemap. php

Edit: Ah ve bu da bu konu için ilginç olabilir:


Herhangi bir büyük site için site haritası oluşturmak üzere PHP kodunu kullanabilir misiniz? "Dinamik" kelimesiyle, site haritasının otomatik olarak oluşturulduğunu ve gerektiğinde kodda küçük değişiklikler yapıldığını mı kastediyorsunuz?

"Gerekli bilgilerin hepsi veritabanında, bu yüzden bu kadar zor bir görev değil" cümlesini netleştirebilir misiniz? Veritabanını nerede görebilirim?

Bence o, tüm bilgilerin mediawiki'nin temelini oluşturan veritabanında olduğu anlamına geliyor. Vikipedi'nin sistem yöneticilerinden veya DBA'larından biri değilseniz, büyük olasılıkla DB'lerine doğrudan erişemezsiniz.
Cian

3
Ben de OP 'nasıl' büyük 'bir sitede bir Site Haritası oluşturmak için çalışıyoruz düşünüyorum, Wikipedia durumunda çok RDBMS-odaklı (MySQL) tüm sayfaları veritabanı dışında sunuluyor. Bu nedenle DB'niz tüm sayfaları bilir ve bunu yapmak için basit bir ish PHP betiğine (yukarıda Subversion'dan bağlanmıştır) ihtiyacınız vardır. Farklı teknolojiler tarafından yönlendirilen diğer siteler için, gerekli yaklaşımın farklı olduğunu göreceksiniz. En son Wikipedia'yı veritabanlarını indirmek üzere yayınladığını kontrol ettiğimde ya da en azından içeriğini bir .SQL dosyasında yayınladılar.
nixgeek

1
İşte [Wikipedia DB Dökümü] [1] :-) [1]: en.wikipedia.org/wiki/…
Gregor

1

Bir süre önce web sitemiz için bir site haritası oluşturma göreviyle karşı karşıya kaldım. Wikipedia'nın boyutu olmasa da, hala yaklaşık yüz bin sayfadır ve bunların yaklaşık% 5'i günlük olarak değiştirilir, eklenir veya kaldırılır.

Tüm sayfa referanslarını tek bir dosyaya koymak çok büyük olacağından bunları bölümlere ayırmak zorunda kaldım. Site haritası dizini, 17 farklı bölümden biri için sorgu dizesi içeren bir aspx sayfasını işaret eder. Sorgu dizesine bağlı olarak sayfa, veritabanında hangi nesnelerin bulunduğuna bağlı olarak birkaç bin sayfaya başvuran bir xml döndürür.

Bu nedenle, site haritası periyodik olarak oluşturulmaz, bunun yerine birisi istediği zaman anında oluşturulur. Zaten veritabanı aramalarını önbelleğe almak için bir sistemimiz olduğundan, bu elbette site haritası için de veri almak için kullanılır.


Neden inişli çıkışlı? Yanlış olduğunu düşündüğünüzü açıklamazsanız, cevabı geliştiremezsiniz.
Guffa

1

Site haritası oluşturma kodu MediaWiki ana yöneticisinde olmasına ve kesinlikle bir site haritası oluşturmak için seçilen seçenek olsa da, Wikipedia'nın aslında açık olduğuna dair herhangi bir kanıt görmüyorum. Robots.txt dosyası hiçbir site eşlemesine işaret etmez.

Ayrıca, Wikimedia projelerinde çalıştırılan herhangi bir bakım betiği kukla tarafından kontrol edilir ve kukla deposunda createSitemap.php örneği yoktur . Son olarak, herhangi bir Wikimedia wiki için dökümlerde site haritası yokken, " Yahoo için özetler " var.

Her durumda, Wikipedia uygulama sunucularının önünde Squid önbelleklerini çalıştırıyor. Sayfanın son kullanma süresini ayarlayarak site haritalarının ne sıklıkta güncelleneceğini kontrol edebilirler.

Dahası, Wikipedia'nın endeksleme için ne yaparsa yapsın, wiki'niz için iyi bir model değildir, çünkü Google'ın Wikipedia'da özel kişileri / anlaşmaları / işlenmesi vardır, son örneğe bakın .


+1 akıllı gözlem

1
Robots.txt dosyasının bir site haritasına başvurmasını beklemek için gerçek bir neden yoktur, bu nedenle böyle bir referansın olmaması gerçekten hiçbir şey kanıtlamaz.
John Gardeniers

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.