C# (ASP.net) 中 RSS 提要的最佳实现
Posted
技术标签:
【中文标题】C# (ASP.net) 中 RSS 提要的最佳实现【英文标题】:Best implementation for an RSS feed in C# (ASP.net) 【发布时间】:2010-10-29 16:10:12 【问题描述】:我有一个需要提要的网络应用程序 (asp.net)。所以我使用System.ServiceModel.Syndication
命名空间来创建创建“新闻”的函数。问题是每次有人调用它时它都会执行,我应该使用它来创建一个 xml 文件并使我的 rss url 指向该文件吗?
最好的方法是什么?
编辑:也许这就是我错的地方。我没有使用处理程序...我只是使用 WCF 服务返回带有数据的 Rss20FeedFormatter。
【问题讨论】:
【参考方案1】:ASP.Net 内置了一些非常好的服务器端缓存。假设您将这些类用作普通 aspx 页面或 http 处理程序 (ashx) 的一部分,您可以告诉 ASP.Net 积极缓存它而不是重新- 根据每个请求构建您的提要。
【讨论】:
【参考方案2】:过去当我实现 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;
【讨论】:
感谢 cmets...但他们没有回答我的问题...我应该使用您建议的缓存还是只创建一个静态文件? 我制作的所有提要都使用了其中一种方法。我从来没有使用过静态文件,因为它很容易不必担心必须即时编写新/替换文件。【参考方案3】:在你的 .aspx 页面中你不能只使用:
<%@ OutputCache Duration="60" VaryByParam="none" %>
我有一篇博文,其中我将存储过程的结果作为 RSS 提要 HERE. 发送到我的手机
【讨论】:
以上是关于C# (ASP.net) 中 RSS 提要的最佳实现的主要内容,如果未能解决你的问题,请参考以下文章