高度动态网站上的站点地图

时间:2009-07-08 17:15:07

标签: sitemap dynamic-websites

不断生成新网页的高度动态网站是否应使用sitemap?如果是这样,像stackoverflow.com这样的网站如何重建站点地图?如果每次有人添加问题时不断重新生成站点地图,这似乎会耗尽宝贵的服务器资源。它是否按照设定的时间间隔(例如每四个小时)生成一个新的站点地图?我非常好奇大型动态网站如何使这项工作。

6 个答案:

答案 0 :(得分:41)

在Stackoverflow(以及所有Stack Exchange站点)上,创建一个sitemap.xml文件,其中包含指向系统上发布的每个问题的链接。发布新问题时,他们只需将另一个条目附加到站点地图文件的末尾。添加到文件末尾并不是资源密集,但文件非常大。

这是Google等搜索引擎可以有效抓取网站的唯一方式。

Jeff Atwood在博文中谈到这个问题The Importance of Sitemaps

这是Google's webmaster help page on sitemaps

  

在以下情况下,站点地图特别有用:

     
      
  • 您的网站包含动态内容。
  •   
  • 您的网站包含Googlebot在此期间无法轻易发现的网页   抓取过程 - 例如,页面   具有丰富的AJAX或Flash。
  •   
  • 您的网站是新网站,并且几乎没有链接。 (Googlebot抓取网络   以下链接从一页到   另一个,所以如果你的网站不好   相关联,我们可能很难   发现它。)
  •   
  • 您的网站有一个大型的内容页面存档,但没有很好地链接   相互之间,或者没有联系在一起   所有
  •   

答案 1 :(得分:13)

每次发布​​问题时都无需重新生成Google站点地图XML。只需直接从数据库按需生成XML文件(以及一点缓存)就更简单了。

为减少负载,可以将站点地图拆分为多个站点地图。按日/月对其进行分区可让您告诉Google经常检索今天的站点地图,但只会在六个月前暂时取回站点地图。

答案 2 :(得分:4)

我想在这里分享我的解决方案,以防万一它也能帮助别人。 我花了这个问题和许多其他人来决定该怎么做。

我的网站结构。

静态页面

  • 主页(高度动态。缓存30分钟)
  • 艺术家,专辑,歌曲,播放列表和专辑(Paginated List)
  • 法律(带有条款等的静态页面)

...等

动态页面

  • 艺术家,专辑,歌曲,播放列表和专辑详情页

我的方法。

sitemap.xml :此网址生成<sitemapindex />,第一项为/sitemap-main.xmlArtistsAlbumsSongs等的数量将被计算并除以1,000(每个站点地图中我想要的网址数量。限制为50,000)。我绕过这个数字。

因此,例如,1900首歌曲= 1.9 = 2。 我生成。将网址/sitemap-songs-0.xml/sitemap-songs-1.xml添加到索引中。我对所有其他项目重复此操作。基本上,我是分页。

输出以非缓存方式返回。我希望这一切都很新鲜。

sitemap-main.xml :列出所有静态页面。实际上,您可以使用静态文件,因为您只需要偶尔更新一次。

sitemap-songs-0.xml,sitemap-albums-0.xml等:我在SlimPhp 2中使用单一路线。

$app->get('/sitemap-:type-:page.xml', function ($type, $page) use ($app) {...

我使用一个简单的switch语句来生成相关文件。如果对于这个页面,我有1000个项目,上面指定的限制,我将文件缓存2周。 另外,我只将它缓存几个小时。

我想这可以帮助其他人实现他们自己的系统。

答案 3 :(得分:2)

即使像StackOverflow这样的东西,也有一定数量的静态组织;有常见问题,标签页,问题页,用户页,徽章页等;我要说的是,在一个非常动态的网站中,接近站点地图的最佳方式是拥有分类的地图;站点地图中的每个节点都可以指向动态生成数据的页面(问题页面的节点,用户页面的节点等)。

当然,站点地图可能甚至不适合给定的站点;那里需要一定数量的判断。

答案 4 :(得分:0)

对于一个高度动态的网站,我在我的服务器上写了一个cron作业,每天运行。它每天都会对我的后端进行休息调用,并根据所有新生成的内容生成新的站点地图,并以xml文件的形式返回站点地图。这个新的站点地图会覆盖前一个站点地图,并根据所有更改保持我的网站更新。更改每个新添加的动态内容的站点地图不是一个好的方法我认为

答案 5 :(得分:-1)

我只会为网站的更多静态页面创建站点地图。例如,在StackOverflow上,站点地图可以显示常见问题解答,关于,问题,标签,用户等页面的链接,但不显示实际问题或所有标签以及各种用户的链接。