как долго по умолчанию содержимое остается в httpcache, если я не установил явное истечение срока действия? - PullRequest
6 голосов
/ 30 июня 2011

у меня есть следующий код для кеширования некоторого дорогого кода.

  private MyViewModel GetVM(Params myParams)
    {
        string cacheKey = myParams.runDate.ToString();
        var cacheResults = HttpContext.Cache[cacheKey] as MyViewModel ;
        if (cacheResults == null)
        {
            cacheResults = RunExpensiveCodeToGenerateVM(myParams);
            HttpContext.Cache[cacheKey] = cacheResults;
        }                
   return cacheResults;
   }

это останется в кеше навсегда? пока сервер не перезагрузится или не исчерпает память?

1 Ответ

5 голосов
/ 30 июня 2011

это останется в кеше навсегда?

Это будет зависеть от конкретного поставщика кеша, который вы используете.Например, если вы используете кэш в памяти по умолчанию, срок его действия может истечь, если серверу не хватит памяти или пул приложений будет перезагружен.Но если вы используете какой-либо другой поставщик кеша, такой как, например, распределенный кеш, такой как memcached или AppFactory, это будет зависеть от конкретной реализации.

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

...