Очистить кеш в 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 означает бесконечную продолжительность кеша).