我有一个需要提供Feed的网络应用程序(asp.net)。所以我使用System.ServiceModel.Syndication
命名空间来创建创建“新闻”的函数。事情就是每当有人调用它时执行它,我应该只使用它来创建一个xml文件并让我的rss url指向该文件吗?
最好的方法是什么?
编辑:也许这就是我错了。我没有使用处理程序......我只是使用WCF服务返回带有数据的Rss20FeedFormatter。
答案 0 :(得分: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;
您还可以在ashx中设置以下内容:
context.Response.Cache.SetExpires(DateTime.Now.AddMinutes(1));
这将使您的RSS页面提供缓存版本,直到它过期。这需要更少的资源,但如果您有其他使用RSS数据访问层调用的东西,那么这将不会缓存该数据。
您还可以通过设置:
,根据您的RSS可能收到的查询参数进行缓存context.Response.Cache.VaryByParams["YourQueryParamName"] = true;
答案 1 :(得分:1)
ASP.Net内置了一些非常好的服务器端缓存。假设您使用这些类作为普通aspx页面或http处理程序(ashx)的一部分,您可以告诉ASP.Net积极地缓存它而不是重新 - 根据每个请求构建您的Feed。
答案 2 :(得分:0)
在您的.aspx页面中,您不能只使用:
<%@ OutputCache Duration="60" VaryByParam="none" %>
我有一篇博文,其中我将存储过程的结果作为RSS Feed发送到我的手机HERE.