У меня есть пользовательский элемент управления, который размещен на нескольких страницах сайта с большим количеством посещений. Некоторые из этих страниц включают нашу боковую панель блога, нашу боковую панель форума и прямо по центру нашей домашней страницы. Это означает, что этот элемент управления отображается много. Элемент управления, предназначенный для чтения в твиттере RSS-канала для определенной учетной записи и записи последних двух твитов. Ниже приведено большинство моих 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, которая говорит что-то вроде «Твиттер недоступен».
Я часто вижу это сообщение об ошибке на сайте prod, поэтому мне интересно, не слишком ли много запросов к RSS-каналу. Я думал о выводе в кеширование элемента управления в течение 10 минут, но я подумал: «Что, если он кэшируется в состоянии ошибки»? Тогда гарантированно будет отображаться панель сообщений об ошибках в течение 10 минут. У меня такой вопрос, правда ли, что если при создании новой кешированной версии она отображает ошибку от перехвата, будет ли она действительно кешироваться в течение 10 минут (если я установил Duration="600"
)? У кого-нибудь есть какие-либо советы о том, как я могу сделать это лучше или кэшировать, когда отображаются только реальные данные Twitter, а не сообщение об ошибке?
Заранее спасибо