2010-01-26 147 views
2

我正在C#中使用ASP.NET 3.5 Web應用程序項目。我已經手動添加了Google友好的站點地圖,其中包含項目中每個頁面的條目 - 這不是CMS。可更新的Google Sitemap for ASP.NET 3.5 Web應用程序項目

<url> 
    <loc>http://www.mysite.com/events.aspx</loc> 
    <lastmod>2009-11-17T20:45:46Z</lastmod> 
    <changefreq>daily</changefreq> 
    <priority>0.8</priority> 
    </url> 

客戶端使用管理後端更新事件。除此之外,該網站相對靜態。我正在嘗試決定更新定期更新的幾頁網頁的<lastmod>值的最佳方式。

特別是,我使用的ListView控件的QueryStringField,提升SEO如下所述:

http://www.4guysfromrolla.com/articles/010610-1.aspx

http://gsej.wordpress.com/2009/05/31/using-a-datapager-with-both-a-querystringfield-and-renderdisabledbuttonsaslabels/

當QueryStringField屬性設置,DataPager的呈現分頁界面作爲爬蟲可以關注和索引的一系列超鏈接。但是,如果Google在兩天前抓取了我的活動列表,並且與此同時,管理員又添加了十多個活動...說,頁面大小設置爲6;在這種情況下,Google SERP鏈接現在將指向錯誤的頁面。這就是爲什麼我需要確保網站地圖反映事件頁面一旦發生變化即可。

我已經看過其他SO問題的信息,並沒有找到我所需要的。任何人都可以提供一些指導或其他方法嗎?

UPDATE:

由於這是一個共享的託管環境,目錄觀察者/服務將無法正常工作:

How to create file watcher in shared webhosting environment

UPDATE:

開始意識到我可能需要向Google表明含有頁面已更新;更新最後修改的HTTP標頭?

回答

1

而不是使用手工編碼的地圖,創建一個網站地圖處理即時生成站點地圖。您可以在處理程序中創建一個方法,該方法將從現有導航站點地圖,數據庫或甚至是硬編碼頁面列表中抓取頁面。您可以從列表中創建一個XmlDocument,並將該文檔的InnerXml寫入處理程序響應流。

然後,用一種方法創建一個類,該方法將自動使用上述處理程序的URL來ping搜索引擎(如http://www.google.com/webmasters/tools/ping?sitemap=http://www.mysite.com/sitemap.ashx)。

有人添加新事件時,請調用上述方法。這將使用您的最新網站地圖(通過上述方法新生成)ping Google。

您想確保只有在網站地圖實際更新後才能使用ping。您可以在AddNewEvent處理程序的events.aspx上使用File.SetLastWriteTime來表示包含的頁面已更新。

另外,請注意確保在過去一小時內沒有ping(因爲Google指南不鼓勵每小時ping超過一次)。

我實際上計劃在下面的OSS項目中實現這個功能:http://cyclemania.codeplex.com。一旦完成,我會讓你知道,你可以看看。

+0

優秀的迴應。我有一個管理系統,管理員必須設置一個複選框才能使事件生效,因此該方法將在那裏被調用。每小時一次的提醒+1;可以感受到一個額外的表格:-O – IrishChieftain 2010-01-31 01:50:58

+0

如所承諾的,我已經完成了將它整合到Cyclemania中。目前,通過管理工具手動調用ping方法(當然,可以從其他方法調用它)。 該實現還具有記錄到數據庫表(正如您所暗示的)和ping延遲60分鐘(可配置)。數據分層有點快而且很髒,現在使用ADO。 ;) 請注意robots.txt文件,因爲站點地圖也在那裏引用。 Google現在可以從robots.txt中獲取站點地圖位置。 – MissingLinq 2010-02-01 01:20:25

1

如果您讓用戶將事件添加到網站中,那麼您可能正在使用數據庫。 這意味着你可以在這樣的運行時生成的XML網站地圖:

  • 創建一個網頁,地圖將提供(這並不需要是sitemap.xml的,但也可以是sitemap.aspx甚至sitemap.ashx)。
  • 打開一個數據庫連接通過所有記錄
  • 循環,創建XML元素的每個記錄

本博客文章要進一步幫助您:Build a Search Engine SiteMap in C#。 它不使用.Net 3.5中的新XElements,但會正常工作。

你可以把這個在一個aspx頁面,但添加一個HttpHandler可能是因爲在同一個博客中描述,不同的崗位更好:(creating a httphandler for a sitemap

+0

+1因爲你也是「在錢上」。爲什麼它不需要完全是「Sitemap.xml」需要更多的澄清,因爲我認爲這是谷歌期望的? – IrishChieftain 2010-01-31 01:53:46

+0

不,這不是谷歌默認預期的。有幾種方法可以將搜索引擎放置到站點地圖上。您可以在sitemap-protocol網站上找到更多信息:http://www.sitemaps.org/protocol.php#informing – dampee 2010-01-31 13:11:48

相關問題