大ヒットしたサイトのいくつかのページで紹介されているユーザーコントロールがあります。これらのページの一部には、ブログサイドバー、フォーラムサイドバー、およびホームページの真ん中にあるスマックが含まれます。つまり、このコントロールは多くレンダリングされます。特定のアカウントのTwitterRSSフィードを読み取り、最後の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つのアイテムを取得し、フロントエンドのリピーターでそれらを繰り返します。何かが失敗した場合は、「Twitterは利用できません」などのエラーPlaceHolderをオンにします。
このエラーメッセージはprodサイトでよく見られるので、RSSフィードへのリクエストが多すぎるのではないかと思います。コントロールを10分間キャッシュする出力を考えていましたが、「エラー状態でキャッシュされるとどうなるか」と思いました。その後、10分間エラーメッセージパネルが表示されることが保証されています。私の質問は、新しくキャッシュされたバージョンを作成するときにキャッチからのエラーが表示された場合、それは本当に10分間キャッシュされるのでしょうか(私が設定したと仮定してDuration="600"
)?エラーメッセージではなく、実際のTwitterデータのみがレンダリングされたときに、これをより適切に機能させたり、キャッシュしたりするためのヒントはありますか?
前もって感謝します