2009-07-22 9 views
2

パブリッシングサイトでBLOBキャッシュを有効にしました。匿名ユーザーのキャッシュ制御/最大有効期限は常に0に設定されています

Cache-Control HTTPヘッダーのmax-ageプロパティはw​​eb.configのblobCache要素の設定に従って適切に設定され、匿名ユーザーの場合は0に設定されます。 これにより、304ブラウザーが画像が変更されたかどうかを確認しようとする要求で、パフォーマンスに悪影響を及ぼします。 これは "/ Style Library"内のファイルにのみ問題です。

ブログではこの問題についていくつか言及していますが、これまで解決策は見つかりませんでした。私がこれを修正したり、このヘッダーの設定を何か他の方法で強制する方法はありますか?私はこれを行うためにHTTPハンドラを実装しようとしましたが、それはまだ0になります。

答えて

3

あなたは匿名ユーザを望まないページ全体とサイト全体にキャッシュを設定するとあなたはこの線に沿って何かを追加したコンテンツをキャッシュし見るには:これは、Webページがキャッシュされるが、画像に適用されているもののキャッシングではない作るべき

HTTP/1.1 200 OK 
Cache-Control: no-cache, no-store 
Pragma: no-cache 
Content-Length: 15965 
Content-Type: text/html; charset=utf-8 
Expires: -1 
Server: Microsoft-IIS/7.0 
X-Powered-By: ASP.NET 
Date: Mon, 03 Aug 2009 01:07:26 GMT 

これを生成します
protected override void OnInit(EventArgs e) 
{ 
    if (user.IsAnonymous()) 
    { 
     Response.Cache.SetCacheability(HttpCacheability.NoCache); 
     Response.Cache.SetNoStore(); 
     Response.Cache.SetExpires(DateTime.MinValue); 
    } 
    base.OnInit(e); 
} 

css、jsなどは残るべきです。イメージにキャッシュヘッダーが適用されていない場合は、カスタムHTTPハンドラーを作成してそのイメージの要求を傍受し、適切なキャッシュヘッダーを適用してページ単位で設定する必要があるように聞こえますあなたはキャッシュされたくありません。

+0

サイト全体のキャッシュを設定したいのですが、/ Styleライブラリのファイルでは機能しません。 私はそこのファイルを_layoutsパス内の場所に移動することでこれを解決しました。少なくとも私はIISを通してキャッシュを制御できます。 – ArjanP

関連する問題