1

UserControl で OutputCache を無効にする方法はありますか?
UserControls を使用して自分のサイトに部分キャッシュを設定しましたが、正常に動作しています。
ユーザーコントロールで次のように出力キャッシュを設定しました。

<%@ OutputCache Duration="3600" VaryByParam="None" %>

私のユーザー コントロールは次の場所にあります/UserControls/SomeAction.ascx

HttpResponse.RemoveOutputCacheItem("/UserControls/SomeAction.ascx");

私もこのアプローチを試しました。Global.asax の関数内と、ユーザー コントロールの関数内に
設定しました。 次に、別の関数を呼び出して無効にしようとしました:HttpContext.Current.Cache.Insert("MyCache",DateTime.Now);Application_StartResponse.AddCacheItemDependency("MyCache");Page_Load

    private void InvalidateCache()
    {
        HttpContext.Current.Cache.Insert("MyCache", DateTime.Now);
    }

それでもうまくいきませんでした。

プログラムで UserControl のキャッシュを無効にする方法はありますか?

4

3 に答える 3

2

usercontrolのCachePolicyプロパティを使用して、別のキャッシュキーへの依存関係を作成します。たとえば、ユーザー制御コードでは

protected void Page_Load(object sender, EventArgs e)
{
    this.CachePolicy.Dependency = new System.Web.Caching.CacheDependency(null, 
        new string[] { "KeyForThisUserControl"  });
    ...
}

その他-ユーザーコントロールのキャッシュを無効にする場所は、

Cache["KeyForThisUserControl"] = DateTime.Now;

ここで、Cacheは現在のWebアプリケーションキャッシュを指します。

于 2012-11-30T12:03:29.797 に答える
0

これはおそらくあなたの問題です:

Location = "Server"そうしないと、クライアントマシンにキャッシュされ、次にコードにキャッシュされます

HttpResponse.RemoveOutputCacheItem("/UserControls/SomeAction.ascx");

動作する必要がありますか?

于 2012-11-30T11:28:48.550 に答える
-1

問題は、コントロール自体から RemoveOutputCacheItem を呼び出していることだと思います。これは、コントロールが基本的にキャッシュから自分自身を削除しようとしていることを意味します...

HttpResponse.RemoveOutputCacheItem("/UserControls/SomeAction.ascx");別のページから呼び出してみてください。

于 2012-11-30T11:32:58.340 に答える