C#(ASP.net)中RSS源的最佳实现

seb*_*mez 7 architecture asp.net rss performance syndication

我有一个Web应用程序(asp.net)需要有一个feed.所以我使用System.ServiceModel.Syndication命名空间来创建创建"新闻"的函数.事情就是每当有人调用它时执行它,我应该只使用它来创建一个xml文件并使我的rss url指向该文件?

什么是最好的方法?

编辑:也许这就是我错了.我没有使用处理程序......我只是使用WCF服务返回带有数据的Rss20FeedFormatter.

Kel*_*sey 8

在我实现RSS的过去,我在HttpContext.Current.Cache中缓存了RSS数据.

RSS数据通常不必经常更新(例如,每分钟一次就足够了),因此您只需每分钟实际访问一次DB,而不是每次有人请求您的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;
Run Code Online (Sandbox Code Playgroud)

您还可以在ashx中设置以下内容:

context.Response.Cache.SetExpires(DateTime.Now.AddMinutes(1));
Run Code Online (Sandbox Code Playgroud)

这将使您的RSS页面提供缓存版本,直到它过期.这需要更少的资源,但如果您有其他使用RSS数据访问层调用的东西,那么这将不会缓存该数据.

您还可以通过设置以下内容,根据您的RSS可能收到的查询参数进行缓存:

context.Response.Cache.VaryByParams["YourQueryParamName"] = true;
Run Code Online (Sandbox Code Playgroud)