2009-05-28 24 views
7

我有一個web應用程序(asp.net)需要有一個提要的東西。所以我使用System.ServiceModel.Syndication命名空間來創建創建「新聞」的函數。事情是每次有人調用它時執行,我是否應該使用它來創建一個xml文件並使我的rss url指向文件?在C#中的RSS提要的最佳實現(ASP.net)

什麼是最好的方法?

編輯:也許這就是我錯了。我沒有使用處理程序...我只是使用WCF服務返回一個Rss20FeedFormatter與數據。

回答

8

在過去,當我實現RSS時,我將RSS數據緩存在HttpContext.Current.Cache中。

RSS數據通常不必經常更新(例如,每分鐘綽綽有餘),因此您只需每分鐘一次實際擊中數據庫,而不是每次有人請求您的RSS數據時。

下面是如何使用緩存的例子:

// To save to the cache 
HttpContext.Current.Cache.Insert("YourCachedName", pObjectToCache, null, DateTime.UtcNow.AddMinutes(1), System.Web.Caching.Cache.NoSlidingExpiration); 
// To fetch from the cache 
YourRssObject pObject = HttpContext.Current.Cache[("YourCachedName"] as YourRssObject : null; 

您還可以設置你的ashx如下:

context.Response.Cache.SetExpires(DateTime.Now.AddMinutes(1)); 

這會讓你的RSS頁面成爲了一個緩存版本直到它到期。這需要更少的資源,但如果您有其他的事情使用您的RSS數據訪問層調用,那麼這將不會緩存該數據。

你也可以把它根據查詢參數緩存,你的RSS可能通過設定接收,以及:

context.Response.Cache.VaryByParams["YourQueryParamName"] = true; 
+0

我欣賞評論...但他們不回答我的問題...我應該使用緩存你是suggesti或者只是創建一個靜態文件? – sebagomez 2009-05-29 19:59:02

1

ASP.Net內置了一些相當不錯的服務器端緩存。假設您使用這些類作爲普通的aspx頁面或http處理程序(ashx)的一部分,您可以告訴ASP.Net將其積極緩存,而不是在每個請求上重新構建您的Feed。

0

在.aspx頁面你就不能使用:

<%@ OutputCache Duration="60" VaryByParam="none" %> 

我有一個博客發佈,我有一個存儲過程的結果發送到我的手機作爲一個RSS源HERE.

相關問題