2

ページ レベルの出力キャッシュに問題があり、.NET 4.0 ASP.NET Web フォーム アプリケーションのカスタムによって異なります。

URL 書き換えを使用しているため、異なる URL が同じ aspx ハンドラー ページにマップされるため、未加工の URL に基づいてキャッシュを変更したいと考えました。(例: /article-1.aspx と /article-2.aspx の両方が /articlepage.aspx によって処理されます)

私はもう試した

<%@ OutputCache Duration="60" VaryByParam="None" VaryByCustom="RAWURL" Location="Server"  %>

Response.Cache.SetValidUntilExpires(true);
Response.Cache.SetCacheability(HttpCacheability.Server);
Response.Cache.SetVaryByCustom("RAWURL");
Response.Cache.SetExpires(DateTime.Now.AddSeconds(60));

セッションを無効にし、Cookie を設定していないことを確認しました (コード内および Fiddler 内)。

VaryByCustom を削除すると、キャッシュは機能しますが、URL の書き換えのためにコンテンツが明らかに URL と一致しません。

GetVaryByCustomMethod は単純です

public override string GetVaryByCustomString(HttpContext context, string custom)
{
    if (custom == "RAWURL")
    {
        return context.Request.Current.RawUrl;
    }
    else
    {
        return base.GetVaryByCustomString(context, custom);
    }
}

このメソッドに何を入れるかは問題ではありません。基本クラスのキャッシングを呼び出すだけでも、機能しなくなります。

この手法は、コントロール レベルの出力キャッシュにうまく使用できますが、ページ レベルでは失敗するだけです。

私は単純なサイトを作成し、VaryByCustom を機能させたので、このサイトにはそれを妨げている何かが明らかにあります。

問題の場所を確認するために実行できるトレース/ログはありますか?

4

0 に答える 0