2009-11-24 8 views
7

OutputCacheディレクティブを使用してキャッシュしたいページがあります。ただし、URL書き換えモジュールを使用して、複数のURLをそれぞれ異なる内容のこのページに誘導しています。URLに基​​づいてOutputCacheを変更する

各URLの出力にキャッシュを使用する方法はありますか?キャッシュ結果を変更する必要がある他の基準はありません。

答えて

10

これは修正するのは非常に簡単でした。

  1. がキャッシュされる必要があるページに次のディレクティブを追加します。

    <%する@ outputcache期間= "600" の場所= "下流" varybyparam = "なし" varybycustom = "RawURL" %>

  2. public override string GetVaryByCustomString(HttpContext context, string custom) 
    { 
        switch (custom.ToUpper()) 
        { 
         case "RAWURL": 
          return context.Request.RawUrl; 
    
         default: 
          return ""; 
        } 
    } 
    
+0

これは賢いですが、ルーティングされていないURLと同じように304(Not Modified)ではなく200を返しています。だから、ページを再び生成しないかもしれませんが、クライアントはローカルキャッシュを使うのではなく、もう一度*取得する必要があります。それでも、良い質問。 – harpo

0

プログラムでは、Response.Cacheを使用してキャッシュオプションを設定できます。クエリ文字列変数をオンにすることができます。場合によっては、Response.Cacheのプロパティを適切に設定します。最後に

MSDN on Cache object
Another helpful article from aspalliance.com

+0

私もCACを変えることができGlobal.asaxファイルに、このメソッドを追加します。彼はリクエストヘッダーに基づいていますが、これらは変更されず、クエリーストリング変数は使用されません – Blatfrig

関連する問題