70

IIS7に静的圧縮と動的圧縮をインストールweb.configし、アプリケーションVirtual Folderレベルで2つの値を設定しました。私が理解しているように、サーバーまたはサイトレベルで圧縮を有効にする必要はなくなり、web.configファイルを使用してフォルダーごとに圧縮を管理できます。

.configアプリのgzipをカスタマイズするために設定した2つの設定がファイルにあります。

<httpCompression dynamicCompressionDisableCpuUsage="90"
    dynamicCompressionEnableCpuUsage="0">
  <scheme name="gzip" dll="%Windir%\system32\inetsrv\gzip.dll" />
  <dynamicTypes>
    <remove mimeType="*/*"/>
    <add mimeType="*/*" enabled="true" />
  </dynamicTypes>
</httpCompression>
<urlCompression doDynamicCompression="true"
    dynamicCompressionBeforeCache="true" />

ただし、アプリケーションを実行すると、ページサイズが同じであるため、gzipが使用されていないことがはっきりとわかります。また、FireFoxにYSlowを使用しています。これにより、ページがgzipされていないことも確認されます。

ここで何が欠けていますか?IIS6では、ファイルタイプを指定し、圧縮レベルを0〜10の間に設定するだけで済みました。デフォルトではファイルタイプがカバーされているようで、レベルがどこにも表示されないため、ファイルタイプまたは圧縮レベルを指定する必要性が文書化されていません。

4

7 に答える 7

64

これについては、iis 7 ベータ版で forums.iis.net にスレッドがありました。その男はモジュールをインストールしていなかったことが判明しましたが、冒頭の文からそれを除外したようです.

彼に対する Microsoft の主なアドバイスは、失敗した要求のトレースを有効にして、何が問題なのかを突き止めることでした。これはおそらく IIS7 の最も過小評価されている機能の 1 つですが、確かに最も強力な機能の 1 つです。

  • IIS マネージャーを開きます。
  • サイトに移動し、アクション ペイン (一番右) で、[構成] セクションの下の [失敗した要求トレース...] をクリックします。
  • 「有効にする」をクリックします。
  • 次に、機能ビューで、[失敗したリクエスト トレース ルール] をクリックします。[追加] をクリックし、次へ、ステータス コードに 200 を入力して、[完了] をクリックします。

操作ウィンドウに "Failed Request Tracing" が表示されない場合は、"Add Role Services" ウィザード (Health and Diagnostics\Tracing) を使用するか、Web Platform Installer を使用して、機能をサーバーに追加する必要があります。 (Products\Server\IIS: Tracing)、IIS マネージャーを閉じてから再度開きます。

次に、テストを再実行します。これにより、調査するためのログ情報が生成されます。

c:\inetpub\logs\FailedReqLogFiles\w3svcx を調べます。fr000xx.xml という名前の一連のファイルが表示されます。ブラウザでそれらのいずれかを開きます。(ちなみに、これらのファイルをどこかにコピーする場合は、freb.xsl がそこにあることを確認してください。また、freb.xsl を削除しないでください。削除する場合は、ディレクトリ全体を削除するか、別の場所からコピーしてください。IIS は作成するだけなので、フォルダごとに 1 回)。

[リクエストの詳細] タブをクリックし、[完全なリクエスト トレース] を選択します。ページで「compress」を検索してください。いくつかの領域で見つけることができます。1 回は静的コンテンツ用、もう 1 回は動的コンテンツ用です。

どちらも見つからない場合、IIS は正しく構成されていません。それらが見つかった場合は、それらに続いてcompression_successとcompression_doが表示されるはずです。成功は自明です。「do」はそれが何をしたかを示します-私の場合、「OriginalSize 1462784 CompressedSize 179482」と表示されました

あなたのものは機能していないので、うまくいけば、問題の解決に役立つ別のものが表示されるでしょう.

Web サイトの操作ウィンドウで失敗した要求の追跡を無効にして、完了したらこれをオフにしてください。

于 2009-04-24T19:34:47.897 に答える
28

同様の問題があり、IIS7 がここで動的な CPU ベースのスロットリングを行っていることが判明しました。

http://www.iis.net/ConfigReference/system.webServer/httpCompression

dynamicCompressionDisableCpuUsage

オプションの uint 属性。

動的圧縮が無効になる CPU 使用率のパーセンテージを指定します。

注: この属性は、動的圧縮がオフになる CPU の上限として機能します。CPU 使用率が dynamicCompressionEnableCpuUsage 属性で指定された値を下回ると、動的圧縮が再度有効になります。

デフォルト値は 90 です。


dynamicCompressionEnableCpuUsage

オプションの uint 属性。

動的圧縮が有効になる CPU 使用率のパーセンテージを指定します。値は 0 から 100 の間でなければなりません。平均 CPU 使用率は 30 秒ごとに計算されます。

注: この属性は、動的圧縮が有効になる CPU 制限の下限として機能します。CPU 使用率が dynamicCompressionDisableCpuUsage 属性で指定された値を超えると、動的圧縮が無効になります。

デフォルト値は 50 です。

デフォルトに注意してください。IIS7 の CPU 使用率が 90% に達すると、CPU 使用率が 50% を下回るまで、すべての動的 gzip コンテンツが無効になります。

また、GZIP の実際の CPU コストに関するいくつかの優れた推奨事項とベンチマークもここにあります。

http://weblogs.asp.net/owscott/archive/2009/02/22/iis-7-compression-good-bad-how-much.aspx

簡単に言えば、200kb をはるかに超える動的ページを定期的に持っていない限り、問題にはなりません。

于 2009-07-07T17:24:04.750 に答える
21

JohnW の優れたアドバイスに従って、私もロギングを有効にして原因を特定しましたが、失敗の理由は別のものであることが判明しました。

STATIC_COMPRESSION_NOT_SUCCESS 
Reason 14 
Reason NOT_FREQUENTLY_HIT

要するに、ページに十分な頻度でアクセスしないと、IIS7 はページを圧縮する価値がないと判断するようです。これは私には少し奇妙に思えます。それでも、ローカル マシンでテストしようとしただけなので、この場合は理にかなっています。

このページによると、デフォルトでは、「頻繁にヒット」するには、ページが 10 秒以内に 2 回ヒットする必要があるようです。本当に必要な場合は、applicationHost.config (%systemroot%\Windows\System32\inetsrv\config) で既定値をオーバーライドできます。少なくとも私にとってはロックされた属性であるため、独自の web.config でオーバーライドすることはできません。

<serverRuntime frequentHitThreshold="1" />

また、ここで SO が既にこの回答を持っていることに注意してください: In IIS7, gzipped files do not stay that way .

于 2010-10-16T14:13:40.690 に答える
5

プログラムの追加と削除で動的圧縮をインストールすることで問題を解決しました。

于 2010-03-01T02:38:25.743 に答える
5

Web.config ファイルの system.webServer セクションに、次の行を追加します。

<remove fileExtension=".js" />  
<mimeMap fileExtension=".js" mimeType="application/x-javascript" />  

IIS7 の圧縮スキームはデフォルトで有効になっていますが、単一の JavaScript MIME タイプ application/x-javascript のみを圧縮対象としてマップします。上記の行を追加すると、すべての .js ファイルにその MIME タイプを指定するよう IIS に指示され、圧縮が機能します。

于 2009-05-05T13:15:16.830 に答える
3

静的圧縮をオンにします。動的圧縮は、asp、php、aspxなどの動的ページ用です。

圧縮用のIIS構成リファレンスへのリンクは次のとおりです。

于 2009-04-24T16:35:38.140 に答える
0

私にとっては、それが設定であることが判明しました

noCompressionForProxies

ここではプロキシを使用しているため...プロキシと出来上がり、圧縮を解除しました。

于 2013-01-23T00:20:18.770 に答える