Очистить кеш в SqlDataSource

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

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

Спасибо.

Ответ 1

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

Простой способ недействительности кэша 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;

Ответ 2

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

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

Ответ 3

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