7

我有一个需要提要的网络应用程序(asp.net)。所以我使用System.ServiceModel.Syndication命名空间来创建创建“新闻”的函数。问题是每次有人调用它时它都会执行,我是否应该使用它来创建一个 xml 文件并使我的 rss url 指向该文件?

最好的方法是什么?

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

4

3 回答 3

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;
于 2009-05-28T18:30:49.517 回答
1

ASP.Net 内置了一些非常好的服务器端缓存。假设您将这些类用作普通 aspx 页面或 http 处理程序 (ashx) 的一部分,您可以告诉 ASP.Net 积极缓存它而不是重新构建您的满足每个请求。

于 2009-05-28T18:19:18.790 回答
0

在您的 .aspx 页面中,您不能只使用:

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

我有一篇博客文章,其中我将存储过程的结果作为 RSS 提要发送到我的手机

于 2011-01-08T01:51:54.413 回答