2011-08-01 10 views
5

静的および動的圧縮を有効にしたIIS 7.5があります。動的なファイルではうまくいくようですが、静的なものでは動作が不安定になり、コンテンツが圧縮されていないときにhttpヘッダー "Content-Encoding:gzip"を送信することがよくあります。これにより、ブラウザは圧縮解除を試み、無効なマジックナンバーエラーをスローします。ここに私の設定です:IIS7のGZip圧縮は機能しませんが、コンテンツエンコーディングヘッダーはgzipに設定されます

<httpCompression dynamicCompressionDisableCpuUsage="95" dynamicCompressionEnableCpuUsage="70" > 
    <scheme name="gzip" dll="%Windir%\system32\inetsrv\gzip.dll" /> 
    <dynamicTypes> 
    <add mimeType="text/*" enabled="true" /> 
    <add mimeType="application/javascript" enabled="true" /> 
    <add mimeType="application/x-javascript" enabled="true" /> 
    <add mimeType="application/json" enabled="true" /> 
<add mimeType="*/*" enabled="false" /> 
    </dynamicTypes> 
    <staticTypes> 
<add mimeType="text/*" enabled="true" /> 
<add mimeType="message/*" enabled="true" /> 
    <add mimeType="application/javascript" enabled="true" /> 
    <add mimeType="application/x-javascript" enabled="true" /> 
<add mimeType="*/*" enabled="false" /> 
    </staticTypes> 

私はいくつかのHTTPモジュールは、パイプの下のどこかにコンテンツを解凍されたと思ったが、それらのどれも疑わしいように見えるん。何か案は?

答えて

2

デフォルトで無効になっているキャッシュの前に動的圧縮を有効にしてください。

<urlCompression dynamicCompressionBeforeCache="true" doDynamicCompression="true" doStaticCompression="true" /> 
+1

ありがとうございます。私はその行をの下に置こうとしましたが、違いはありませんでした。何か案が? – sboisse

0

これもわかりました。 applicationHost.configファイル内のsystem.webServer/serverRuntimeノードでfrequentHitThreshold属性を1に設定すると、http://www.iis.net/ConfigReference/system.webServer/serverRuntimeに記載されているように、このトリックを行う必要があります。

あなたは、管理者として次のコマンドを実行してこれを行うことができます。

%windir%\system32\inetsrv\appcmd set config /section:serverRuntime /frequentHitThreshold:1 /commit:apphost 

警告の言葉 - 「頻繁にヒット」のコンセプトは、圧縮に特有のようではありません。これを設定した結果、他の結果があるかどうかはわかりません!

2

私の調査では、静的ファイルでHttpContext.RewritePath()を使用するとこの問題が発生することがわかりました。

+0

これは奇妙なことですが、少なくとも私のQAサーバー(W2K8/IIS 7.5)では、これも真実であると考えています。 – rsbarro

関連する問題