Очистить кеш в SqlDataSource - PullRequest
12 голосов
/ 02 июня 2009

Мне нужно вручную очистить кеш на SqlDataSource с включенным кэшированием. Я попытался установить EnableChaching = false и CacheDuration = 0 (а также = 1), и ни один из них, похоже, не истекает содержимое, уже находящееся в кэше - хотя они, похоже, препятствуют кэшированию новых SELECT.

Как мне вручную истечь этот кеш?

Спасибо.

Ответы [ 3 ]

14 голосов
/ 09 ноября 2009

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

Простой способ программно аннулировать кэш SqlDataSource

<asp:SqlDataSource ID="x" EnableCaching="True" CacheKeyDependency="MyCacheDependency"/>

protected void Page_Load(object sender, EventArgs e)
{ // Or somewhere else before the DataBind() takes place
  if (!IsPostBack)
  {
      //prime initial cache key value if never initialized
      if (Cache["MyCacheDependency"] == null)
      {
        Cache["MyCacheDependency"] = DateTime.Now;
      }
  }
}


// Evict cache items with an update in dependent cache:
Cache["MyCacheDependency"] = DateTime.Now;
0 голосов
/ 02 июня 2009

Убедитесь, что ваша CacheExpirationPolicy Абсолютная. Используйте ненулевое CacheDuration (0 означает бесконечную длительность кэша).

0 голосов
/ 02 июня 2009

Отключение кэширования (EnableCaching = false), а затем форсирование нового выбора (SqlDataSourceInstance.Select (new DataSourceSelectArguments ())) перед повторным включением кэширования очищает выбранную комбинацию CommandText и CommandParameters, поэтому это начало.

Он по-прежнему сохраняет кэш других комбинаций запросов, выполняемых SqlDataSource, однако, это не решает всех проблем.

...