2009-07-08 111 views
32

應該不斷生成新網頁的高度動態網站使用sitemap?如果是這樣,一個像stackoverflow.com網站如何去重新生成一個網站地圖?如果每次有人添加問題時都會不斷重新生成站點地圖,那麼似乎會損失寶貴的服務器資源。它是否會按設定的時間間隔(例如每四小時)生成一個新的站點地圖?我非常好奇大型,動態網站如何使這項工作。動態網站上的網站地圖

+0

您是否對站點地圖有特定需求?他們有點過時;有些網站根本不提供它們。 – 2009-07-08 17:24:35

+0

你能指定你正在談論的站點地圖的類型嗎?網站地圖有幾種實現方式可用於各種目的。例如,用於搜索引擎的基於xml的站點地圖,以及用於在站點上查找特定頁面的站點地圖。 – MitMaro 2009-07-08 17:29:41

+8

很確定他們在談論一個sitemap.xml文件 - 一個用戶可訪問的網站地圖,列出了每個網站上有100,000個項目的項目,這是完全和不言而喻的無用功能。 – ceejayoz 2009-07-08 17:30:34

回答

35

在Stackoverflow(和所有Stack Exchange站點)上,將創建一個sitemap.xml文件,其中包含指向系統上發佈的每個問題的鏈接。當發佈新問題時,他們只需將其他條目附加到站點地圖文件的末尾。將文件添加到文件末尾並不是資源密集型的,但文件相當大。

這是像Google這樣的搜索引擎可以有效抓取該網站的唯一方法。

一下傑夫·阿特伍德的會談在博客The Importance of Sitemaps

這是Google's webmaster help page on sitemaps

站點地圖是特別有用的,如果:

  • 你的網站有動態內容。
  • 您的網站在 抓取過程中有不容易被Googlebot發現的網頁 - 例如,含有豐富的AJAX或Flash的網頁 。
  • 您的網站是新的,並有幾個鏈接。 (Googlebot可以 以下鏈接抓取網頁從一個網頁到另一個 ,所以如果你的網站是沒有很好 鏈接,它可能對我們很難 發現它。)
  • 你的網站有內容的大檔案沒有很好鏈接 彼此,或沒有鏈接在 所有。
-1

我只會爲網站的靜態頁面創建一個站點地圖。例如,在StackOverflow上,站點地圖可顯示常見問題解答,關於,問題,標籤,用戶等...頁面的鏈接,但不顯示指向實際問題或所有標籤以及各種用戶的鏈接。

+3

錯過了sitemap.xml文件的用途。 – ceejayoz 2009-07-08 17:19:19

+0

@MitMaro:我同意你的觀點(請參閱我的類似帖子)。不知道爲什麼你會陷入低谷; +1來反擊。 – 2009-07-08 17:21:38

2

即使在像StackOverflow這樣的東西上,也存在一定數量的靜態組織;有常見問題解答,標籤頁,問題頁面,用戶頁面,徽章頁面等;我想說,在一個非常活躍的網站中,處理網站地圖的最佳方法是製作一個分類地圖;站點地圖中的每個節點都可以指向動態生成數據的頁面(問題頁面的節點,用戶頁面的節點等)。

當然,一個站點地圖可能不適合給定的站點;那裏需要一定數量的判斷電話。

12

每次發佈問題時都不需要重新生成Google站點地圖XML。只需要直接從數據庫按需生成XML文件(以及一點緩存)就簡單多了。

爲了減少負載,可以將站點地圖分成許多站點地圖。按日/月分區可讓您告訴Google經常檢索今天的站點地圖,但只是在六個月前偶爾抓取站點地圖。

4

我想在這裏分享我的解決方案,以防萬一它可以幫助別人也是如此。 我讀了這個問題和其他許多人來決定做什麼。

我的網站結構。

靜態頁面

  • 首頁(高動態。緩存30分鐘)
  • 藝術家,專輯,歌曲,播放列表和專輯(分頁列表)
  • 法律(含條款等靜態頁面)

...等

動態網頁

  • 藝術家,專輯,歌曲,播放列表和專輯的詳細信息頁面

我的做法。

sitemap.xml:此url生成<sitemapindex />,第一項爲/sitemap-main.xmlArtists,0 Albums,Songs等的數量除以1,000(每個站點地圖中我想要的網址數量,限制爲50,000)。我把這個數字加起來。

因此,例如,1900歌曲= 1.9 = 2. 我生成。將索引添加到網址/sitemap-songs-0.xml/sitemap-songs-1.xml。我對所有其他項目重複這一點。基本上,我分頁。

輸出未緩存返回。我希望這永遠是新鮮的。


的Sitemap,main.xml中:列出所有靜態頁面。實際上,您可以使用靜態文件,因爲您只需稍後更新一次即可。


站點地圖-歌曲-0.xml,站點地圖-相冊-0.xml等:我用一個單一的路由這個在SlimPhp 2.

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

我使用一個簡單的開關聲明來生成相關文件。如果對於這個頁面,我獲得了1,000個項目,上面指定的限制,我緩存文件2周。 否則,我只緩存幾個小時。

我想這可以幫助其他人實現他們自己的系統。

0

對於一個高度動態的網站,我在每天運行的服務器上寫了一個cron作業。它每天都會對我的後端進行一次休息調用,並根據所有新生成的內容生成新的站點地圖,並以xml文件的形式返回站點地圖。這個新的站點地圖覆蓋了前一個站點地圖,並根據所有更改保持我的網站更新。爲每個新添加的動態內容更改站點地圖不是一種好方法,我認爲