我有一个用户控件,它出现在一个热门网站的几个页面上。其中一些页面包括我们的博客侧边栏、我们的论坛侧边栏,以及位于我们主页中间的 smack。这意味着这个控件被渲染了很多。该控件用于读取特定帐户的 twitter RSS 提要并写出最后 2 条推文。下面是我的大部分 Page_Load 控件。我有它是try {} catch
因为在生产中该站点似乎无法经常加载 XML,所以我需要打开一条友好的错误消息。
try {
var feed = XmlReader.Create(ResourceManager.GetString("TwitterRSS"));
var latestItems = SyndicationFeed
.Load(feed)
.GetRss20Formatter()
.Feed
.Items
.Take(2);
rptTwitter.ItemDataBound += new RepeaterItemEventHandler(rptTwitter_ItemDataBound);
rptTwitter.DataSource = latestItems;
rptTwitter.DataBind();
} catch (Exception ex) {
phError.Visible = true;
}
如您所见,我只获取 2 个最近的项目并在前端的转发器中重复它们。如果有任何失败,我会打开错误 PlaceHolder,上面写着“Twitter 不可用”。
我经常在 prod 站点上看到此错误消息,所以我想知道它是否对 RSS 提要发出了太多请求。我正在考虑将控件输出缓存 10 分钟,但我想,“如果它在错误状态下被缓存怎么办”?然后保证显示错误消息面板 10 分钟。我的问题是,如果它在创建新缓存的版本时显示来自 catch 的错误,是否真的会缓存 10 分钟(假设我设置了Duration="600"
)?当只呈现真实的 Twitter 数据而不是错误消息时,有没有人有任何关于如何使这项工作更好或缓存的提示?
提前致谢