由于 Wikipedia 的规模,我对这个话题很感兴趣。在小型网站中,创建一些 cron 来定期更新站点地图可能很容易,但对于大型网站来说呢?那么:
维基百科如何生成其站点地图?
答案1
它由 PHP 脚本动态生成。对于大型网站,最好检查更改,并且仅在发生更改时才生成 - 或者仅每 XY 分钟/小时/天生成一次。这取决于基础设施。
所需的信息都在数据库中,因此这并不是一项艰巨的任务。
证明如下:http://svn.wikimedia.org/viewvc/mediawiki/trunk/phase3/maintenance/generateSitemap.php?view=log/http://www.mediawiki.org/wiki/Manual:GenerateSitemap.php
编辑:啊,这对于这个话题来说也可能很有趣:
答案2
不久前,我接到了为我们的网站创建站点地图的任务。虽然它没有维基百科那么大,但也大约有十万页,其中大约 5% 的内容每天都会更改、添加或删除。
由于将所有页面引用放在一个文件中会使文件过大,因此我不得不将它们分成几个部分。站点地图索引指向一个 aspx 页面,该页面带有 17 个不同部分之一的查询字符串。根据查询字符串,该页面将返回一个引用数千个页面的 xml,具体取决于数据库中存在的对象。
因此,站点地图不是定期创建的,而是在有人请求时动态创建的。由于我们已经有一个用于缓存数据库搜索的系统,因此这当然也用于获取站点地图的数据。
答案3
尽管站点地图生成代码位于 MediaWiki 核心主控中并且肯定会成为生成站点地图的选项,但我没有看到任何证据表明 Wikipedia 确实启用了该功能。 robots.txt 文件不指向任何站点地图。
此外,维基媒体项目上运行的任何维护脚本都由 puppet 控制,并且puppet 存储库中没有 generateSitemap.php 实例。最后,任何维基媒体 wiki 的转储要么,而有“雅虎文摘“。
无论如何,维基百科在其应用服务器前运行 Squid 缓存。他们可以通过调整页面的过期时间来控制站点地图的更新频率。
此外,无论维基百科为索引所做的一切,都不是您的维基的好模型,因为谷歌与维基百科有特殊的联系/交易/处理,请参阅最近的一个例子。