2

Composite C1 という名前の CMS システムを使用しています。カスタム出力キャッシュ プロファイルが添付された単一ページ (Page.aspx) を介してすべてのコンテンツをレンダリングします。

これで問題はありませんが、問題が発生しました。

キャッシュが必要ですが、出力キャッシュを無効にしたい特定の URL があります。

キャッシュ プロファイルに追加できる varybycustom 属性があることは知っていますが、これで希望どおりの結果が得られるとは思いません。特定の URL (またはその他の条件) にヒットしたときに、キャッシュを完全に無効にできるようにしたいと考えています。

outputcache プロファイルが定義された単一の Page.aspx ファイルを介してすべてのページ/URL がレンダリングされるため、これは非常に難しいようです。

この問題をどのように解決できるかについて、誰かアドバイスはありますか?

4

2 に答える 2

1

\Global.asaxComposite C1 への呼び出しをオーバーライドして、GetVaryByCustomString応答をキャッシュする必要があるかどうかを評価します。それに介入して、リクエストがキャッシュしたくない URL のいずれかに対するものでない場合にのみ Composite を呼び出すことができます。

if (context.Request.Url.AbsolutePath != "/dont-cache-this")
{
    return ApplicationLevelEventHandlers.GetVaryByCustomString(context, custom) ?? base.GetVaryByCustomString(context, custom);
}

return null;

後で Composite C1 をアップグレードする\Global.asaxと、変更が置き換えられて消去される可能性があることに注意してください。

http://msdn.microsoft.com/en-us/library/5ecf4420.aspxも参照してください。

于 2013-09-27T21:37:33.517 に答える
1

キャッシュすべきでないページにある関数に次のコードを挿入できます。または、それを行う小さな関数を追加します。

HttpContext.Current.Response.Cache.SetCacheability(HttpCacheability.NoCache);

于 2015-10-27T18:06:38.510 に答える