维基百科如何生成其站点地图?


9

由于Wikipedia的规模,该主题使我感兴趣。在小型站点中创建一些站点来定期更新站点地图可能很容易,但是大型站点呢?所以:

维基百科如何生成其站点地图?

Answers:


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的数据库中。除非您是Wikipedia的系统管理员或DBA之一,否则您可能无法直接访问其数据库。
Cian

3
我还认为OP正在尝试找出如何在“大型”网站上生成Sitemap的情况,对于Wikipedia而言,它很大程度上是RDBMS驱动的(MySQL),所有页面都从数据库中提供。因此,您的数据库知道所有页面,并且您需要一个简单的PHP脚本(从Subversion链接到上面)来执行此操作。对于其他站点,这些站点是由不同的技术驱动的,那么您会发现所需的方法是不同的。上次我检查Wikipedia时发布了他们的数据库以供下载,或者至少他们将其内容发布为.SQL文件。
nixgeek

1
这是[Wikipedia DB Dump] [1] :-) [1]:en.wikipedia.org/wiki/…–
Gregor

1

不久前,我面临着为我们的网站创建站点地图的任务。尽管它不像Wikipedia那样大,但仍然大约有十万个页面,并且每天大约有5%的页面被更改,添加或删除。

由于将所有页面引用放在单个文件中会使它变得太大,因此我不得不将它们分成多个部分。站点地图索引指向带查询字符串的aspx页面,该字符串用于17个不同部分之一。根据查询字符串,页面将返回一个xml,该xml基于数据库中存在的对象引用了数千个页面。

因此,站点地图不是定期创建的,而是在有人请求时动态创建的。由于我们已经有一个用于缓存数据库搜索的系统,因此,这当然也用于获取站点地图的数据。


为什么要下票?如果您不解释自己认为是错的是什么,那将无法改善答案。
Guffa 2015年

1

尽管站点地图生成代码在MediaWiki核心母版中,并且可以肯定是生成站点地图的选择,但我没有看到任何证据表明Wikipedia实际上已将其打开。robots.txt文件未指向任何站点地图。

此外,在Wikimedia项目上运行的所有维护脚本均由puppet控制,并且puppet存储库中没有generateSitemap.php实例。最后,对于任何Wikimedia Wiki转储中都没有站点地图,而有“ Yahoo的摘要 ”。

无论如何,Wikipedia都会在其应用程序服务器之前运行Squid缓存。他们可以通过调整页面的过期时间来控制站点地图的更新频率。

而且,无论Wikipedia为索引做什么,都不是您的Wiki的良好模型,因为Google具有Wikipedia的特殊联系人/交易/处理,请参见最近的示例


+1智能观察

1
没有真正的理由期望robots.txt引用站点地图,因此缺少此类引用并不能真正证明任何内容。
John Gardeniers

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.