キャッシュが有効になっている SqlDataSource のキャッシュを手動でクリアする必要があります。EnableChaching = false、および CacheDuration = 0 (および = 1) を設定しようとしましたが、既にキャッシュにあるコンテンツを期限切れにするものはありませんが、新しい SELECT がキャッシュされるのを妨げているようです。
そのキャッシュを手動で期限切れにするにはどうすればよいですか?
ありがとう。
キャッシュが有効になっている SqlDataSource のキャッシュを手動でクリアする必要があります。EnableChaching = false、および CacheDuration = 0 (および = 1) を設定しようとしましたが、既にキャッシュにあるコンテンツを期限切れにするものはありませんが、新しい SELECT がキャッシュされるのを妨げているようです。
そのキャッシュを手動で期限切れにするにはどうすればよいですか?
ありがとう。
今日これを調査し始めたところ、この投稿に出くわしました。これが最善の解決策のようです。
プログラムで 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;
キャッシュを無効にして (EnableCaching = false)、新しい選択 (SqlDataSourceInstance.Select(new DataSourceSelectArguments())) を強制してから、キャッシュを再度有効にすると、選択されている CommandText と CommandParameters の特定の組み合わせがクリアされるので、これが始まりです。
ただし、SqlDataSource によって実行されるクエリの他の組み合わせのキャッシュは引き続き保持されるため、これですべての問題が解決されるわけではありません。
CacheExpirationPolicy が絶対であることを確認してください。0 以外の CacheDuration を使用します (0 は無限のキャッシュ期間を意味します)。