4

ユーザーコントロールを含むページでAsp.net OutputCacheを使用しています。特定の状況でユーザーコントロールが編集されたときに、ページキャッシュを期限切れにして、新しいデータでページをリロードできるようにしたいと考えています。

ユーザーコントロール内からこれを行う方法はありますか?

そうでない場合、この方法で編集できるようにするページをキャッシュする他の方法は何ですか。

- - - - - - 編集 - - - - - -

さらに調査した結果、うまくいくと思われる方法を見つけました。

Dim cachekey As String = String.Format("Calendar-{0}", calendarID)
HttpContext.Current.Cache.Insert(cachekey, DateTime.Now, Nothing, System.DateTime.MaxValue, System.TimeSpan.Zero, System.Web.Caching.CacheItemPriority.NotRemovable, Nothing)
Response.AddCacheItemDependency(cachekey)

これにより、ページ キャッシュ オブジェクトに依存関係が追加され、有効期限が切れるには、次のようにします。

Dim cachekey as string = String.Format("Calendar-{0}", CalendarID)
HttpContext.Current.Cache.Insert(cachekey, DateTime.Now, Nothing, System.DateTime.MaxValue, System.TimeSpan.Zero, System.Web.Caching.CacheItemPriority.NotRemovable, Nothing)

依存キャッシュキーが既知である限り、ページの有効期限が切れる可能性があります。

4

3 に答える 3

1

あなたの解決策は私にはうまくいきませんでした。ただし...いくつかのテストの後、これが正常に機能するようになりました。このコードは、キャッシュする必要がある UserControl Page_Load 内にあります。

string key_refresh = "refresh_id_" + YourID;
Cache[key_refresh] = DateTime.Now.ToString();

CacheDependency dep = new CacheDependency(null, new string[] { key_refresh });
this.CachePolicy.Dependency = dep;

何らかの理由で、Response.AddCacheItemDependencyからデータを更新していたときに を使用しても何の効果もありませんでしたCache[key_refresh]

私の場合、ユーザー ID ごとにコントロールをキャッシュするので、各ユーザーは異なるデータを持つこのコントロールの異なるバージョンを持ち、VaryByCustom を使用して個別にキャッシュします。

于 2011-02-25T12:55:29.673 に答える
1

これを試すことができます:

private void RemoveButton_Click(object sender, System.EventArgs e)
{
    HttpResponse.RemoveOutputCacheItem("/caching/CacheForever.aspx");
}

から: http://aspalliance.com/668

ありがとう。

于 2009-01-26T23:09:02.533 に答える
0

さらに調査した結果、うまくいくと思われる方法を見つけました。

Dim cachekey As String = String.Format("Calendar-{0}", calendarID)
HttpContext.Current.Cache.Insert(cachekey, DateTime.Now, Nothing, System.DateTime.MaxValue, System.TimeSpan.Zero, System.Web.Caching.CacheItemPriority.NotRemovable, Nothing)
Response.AddCacheItemDependency(cachekey)

これにより、ページ キャッシュ オブジェクトに依存関係が追加され、有効期限が切れるには、次のようにします。

Dim cachekey as string = String.Format("Calendar-{0}", CalendarID)
HttpContext.Current.Cache.Insert(cachekey, DateTime.Now, Nothing, System.DateTime.MaxValue, System.TimeSpan.Zero, System.Web.Caching.CacheItemPriority.NotRemovable, Nothing)

依存キャッシュキーが既知である限り、ページの有効期限が切れる可能性があります。

于 2009-12-09T04:07:26.170 に答える