代码之家  ›  专栏  ›  技术社区  ›  Andrew Garrison

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

  •  37
  • Andrew Garrison  · 技术社区  · 17 年前

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

    6 回复  |  直到 9 年前
        1
  •  40
  •   Robert Cartaino    13 年前

    在stackoverflow(和所有堆栈交换站点)上,创建一个sitemap.xml文件,其中包含 每个问题的链接 发布在系统上。发布新问题时,只需在站点地图文件的末尾附加另一个条目。添加到文件末尾并不是很耗费资源,但文件非常大。

    这是像谷歌这样的搜索引擎能够有效地对网站进行爬行的唯一途径。

    杰夫·阿特伍德在一篇博文中谈到 : The Importance of Sitemaps

    这是来自 Google's webmaster help page on sitemaps :

    如果出现以下情况,站点地图尤其有用:

    • 您的网站具有动态内容。
    • 你的网站上有一些网页在 爬行过程-例如,页面 具有丰富的Ajax或Flash。
    • 您的网站是新的,并且没有链接到它。(GoogleBot在网上搜索 从一个网页到 另一个,所以如果你的网站不好 联系起来,我们可能很难 发现它。)
    • 您的网站有大量未链接好的内容页存档 彼此之间,或未链接到 所有。
        2
  •  12
  •   ceejayoz    17 年前

    每次发布问题时都不需要重新生成Google站点地图XML。直接从数据库(和一点缓存)按需生成XML文件要简单得多。

    为了减少负载,可以将站点地图拆分为多个站点地图。按天/月对其进行分区可以让您告诉Google经常检索今天的站点地图,但偶尔只能从六个月前获取一次站点地图。

        3
  •  4
  •   frostymarvelous    10 年前

    我想在这里分享我的解决方案,以防它也能帮助别人。 我花了很多时间阅读这个问题,然后其他人决定怎么做。

    我的网站结构。

    静态页面

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

    ……等

    动态页面

    • 艺术家、专辑、歌曲、播放列表和专辑详细信息页

    我的方法。

    站点地图XML :此URL生成 <sitemapindex /> 第一个项目是 /sitemap-main.xml . 数 Artists , Albums , Songs ETC被计算并除以1000(每个站点地图中我想要的URL数量)。上限是50000)。我把这个数字四舍五入。

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

    输出未经缓存返回。我希望这个永远新鲜。


    站点地图-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周。 否则,我只能缓存几个小时。

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

        4
  •  2
  •   Paul Sonier    17 年前

    即使在StackOverflow之类的网站上,也有一定数量的静态组织;有常见问题解答、标签页、问题页、用户页、徽章页等;我想说,在一个非常动态的网站上,访问网站图的最佳方法是获得分类的地图;网站图中的每个节点都可以指向动态生成的页面数据(问题页的节点、用户页的节点等)。

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

        5
  •  0
  •   Muhammad Ahsan    9 年前

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

        6
  •  -1
  •   MitMaro    17 年前

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

    推荐文章