В прошлом, когда я реализовывал 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;