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 提要的最佳实现的主要内容,如果未能解决你的问题,请参考以下文章

ASP.NET MVC 中的 RSS 源

为 iOS 应用程序生成 youtube 播放列表 rss 提要的最佳方法是啥?

如何在 C# 中导入原始 RSS 提要?

RSS提要核心数据保存在uitableview中

检测 RSS 提要中的新项目

在 Rails 3 中生成 RSS 提要