ASP. NET MVC Использование блокировки для обновления кэша - PullRequest
0 голосов
/ 16 апреля 2020

Я знаю, что на эти вопросы уже есть ответы на некоторые вопросы, но не с моим сценарием.

Сценарий: PageX вызывает службы данных для загрузки некоторой информации. Этот процесс может занять до 65 000 мс. Последующие пользователи, делающие один и тот же звонок, просто перегружают систему и экспоненциально усугубляют проблему.

Исправление: CACHING !!! Нам удалось кэшировать данные, используя политику истечения срока действия, которая работает как шарм. Да, мы могли бы сломать клейкую ленту, чтобы починить ее, но лучше, чем переписать монстра страницы, для восстановления которой потребуются месяцы. Это исправление было исправлено менее чем за день.

Вопрос: Мы просто хотим убедиться, что мы используем лучшие практики в нашем сценарии. Вот пример класса, который мы используем. Мы надеемся, что вы можете предоставить некоторые отзывы и / или рекомендации:

public class MyCachingClass{
   private static object monitor = new object();

   private ObjectCache cache = new MemoryCache.Default;

   public List<SomeCustomObject> GetAll(){
      List<SomeCustomObject> objList = cache["key"] as List<SomeCustomObject>;
      if(objList == null){
         lock(MyCachingClass.monitor){
            // Check cache once again to make sure someone else didn't already
            // fill it during the long wait
            List<SomeCustomObject> objList = cache["key"] as List<SomeCustomObject>;

            // Is this an overkill?
            if(objList == null){
               objList = GetTheListFromDb(); // This is what takes up to 65,000ms
               cache.Set("key", objList, GetPolicy());
            }
         }
      }
      return objList;
   }
}

Данные поступают от стороннего поставщика, поэтому у нас нет возможности настроить доступ к данным. Сторонние поставщики утверждают, что они уже используют кеш на своей стороне, но поиск данных идет очень медленно.

Управлению нравится скорость сайта с внедренным кэшированием, пользователи довольны, и теперь они хотят, чтобы это было реализовано в других частях. сайта.

Код котельной плиты кажется мне излишним, поэтому я приезжаю сюда, где эксперты должны попытаться получить некоторую обратную связь.

Ваша помощь в значительной степени Я ценю это и надеюсь, что смогу помочь и вам однажды. Заранее благодарю за отзыв.

...