IIS(デフォルトで有効になっているはずですが、有効になっていない)で静的ファイルのGZip圧縮をサポートしようとしていますが、今のところ機能していません。<system.webServer>
ノードの下のセクションを次に示します。 Webアプリのweb.configファイル内。
<httpCompression directory="%SystemDrive%\inetpub\temp\IIS Temporary Compressed Files">
<scheme name="gzip" dll="%Windir%\system32\inetsrv\gzip.dll" staticCompressionLevel="9" />
<dynamicTypes>
<add mimeType="text/*" enabled="true" />
<add mimeType="message/*" 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/x-javascript" enabled="true" />
<add mimeType="application/atom+xml" enabled="true" />
<add mimeType="application/xaml+xml" enabled="true" />
<add mimeType="*/*" enabled="false" />
</staticTypes>
</httpCompression>
<urlCompression doStaticCompression="true" />
GoogleChromeで試してみました。リクエストヘッダーは次のとおりです。
Accept:text/html、application/xhtml + xml、application/xml; q = 0.9、/; q = 0.8
Accept-Charset:ISO-8859-1、utf-8; q = 0.7、*; q = 0.3
Accept-Encoding:gzip、deflate、sdch
Accept-Language:en-US、en; q = 0.8
Cache-Control:no-cache
接続:キープアライブ
Host:my-website-url
プラグマ:キャッシュなし
User-Agent:Mozilla/5.0(Windows NT 6.0)AppleWebKit/534.30(KHTML、like Gecko)Chrome/12.0.742.122 Safari/534.30
これらは応答ヘッダーです。
Accept-Ranges:bytes
コンテンツの長さ:232651
Content-Type:application/x-javascript
日付:2011年8月4日木曜日08:58:19 GMT
ETag: "a69135734a50cc1:0"
最終変更日:2011年8月1日月曜日12:56:37 GMT
サーバー:Microsoft-IIS/7.5
X-Powered-By:ASP.NET
ApplicationHost.configファイルを確認したところ、以下のようなノードが見つかりました。
----
<section name="httpCompression" allowDefinition="AppHostOnly" overrideModeDefault="Deny" />
----
<section name="urlCompression" overrideModeDefault="Allow" />
----
<httpCompression directory="%SystemDrive%\inetpub\temp\IIS Temporary Compressed Files">
<scheme name="gzip" dll="%Windir%\system32\inetsrv\gzip.dll" />
<staticTypes>
<add mimeType="text/*" enabled="true" />
<add mimeType="message/*" enabled="true" />
<add mimeType="application/x-javascript" enabled="true" />
<add mimeType="application/atom+xml" enabled="true" />
<add mimeType="application/xaml+xml" enabled="true" />
<add mimeType="*/*" enabled="false" />
</staticTypes>
</httpCompression>
----
<urlCompression />
ここで何が欠けていますか?
一時圧縮フォルダに権限が正しく設定されていない可能性があります。 IISインストール(またはアプリケーション)が圧縮フォルダーへの書き込み権限を持っているため、ユーザーが実行されていることを確認する必要があります。
多くの検索を行った後、最終的に圧縮が機能しているものが見つかりましたIIS 7.5。まず、IISは、頻繁にロードされない限り、ファイルを圧縮しません「IISは十分な頻度で何を考慮しますか?」という質問が表示されます。デフォルトは10秒ごとに2回です。
この設定はweb.configで変更できますが、最初にapplicationHost.configでセクションのロックを解除する必要があります。コマンドは次のとおりです。
最初にセクションのロックを解除します。
C:\ Windows\System32\inetsrv\appcmd.exeロック解除構成/section:system.webServer/serverRuntime
構成パス「MACHINE/WEBROOT/APPHOST」のセクション「system.webServer/serverRuntime」のロックを解除しました。
これで、web.configファイルを編集し、serverRuntime要素を追加します。
<?xml version="1.0" encoding="UTF-8"?> <configuration>
<system.webServer>
<serverRuntime frequentHitThreshold="1" frequentHitTimePeriod="10:00:00" />
...
この場合、10時間に1回ファイルをヒットするように設定しました。必要に応じて値を調整できます。 serverRuntime要素を説明するドキュメントは次のとおりです。
http://www.iis.net/configreference/system.webserver/serverruntime
これが圧縮を機能させるのに役立つことを願っています。
注:serverRuntime要素はapplicationHost.configファイルで設定することもできますが、さまざまなサイトを持つサーバーとファームが多数あるため、web.configで変更することにしました。このレベルの粒度から制御する方が簡単です。