12

キャッシュが有効になっている SqlDataSource のキャッシュを手動でクリアする必要があります。EnableChaching = false、および CacheDuration = 0 (および = 1) を設定しようとしましたが、既にキャッシュにあるコンテンツを期限切れにするものはありませんが、新しい SELECT がキャッシュされるのを妨げているようです。

そのキャッシュを手動で期限切れにするにはどうすればよいですか?

ありがとう。

4

4 に答える 4

14

今日これを調査し始めたところ、この投稿に出くわしました。これが最善の解決策のようです。

プログラムで 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;
于 2009-11-09T20:23:33.257 に答える
0

キャッシュを無効にして (EnableCaching = false)、新しい選択 (SqlDataSourceInstance.Select(new DataSourceSelectArguments())) を強制してから、キャッシュを再度有効にすると、選択されている CommandText と CommandParameters の特定の組み合わせがクリアされるので、これが始まりです。

ただし、SqlDataSource によって実行されるクエリの他の組み合わせのキャッシュは引き続き保持されるため、これですべての問題が解決されるわけではありません。

于 2009-06-01T20:42:17.203 に答える
0

CacheExpirationPolicy が絶対であることを確認してください。0 以外の CacheDuration を使用します (0 は無限のキャッシュ期間を意味します)。

于 2009-06-01T20:42:57.687 に答える