web-dev-qa-db-ja.com

IIS 6でURLルーティングと連携するHTTP圧縮(GZip)の取得

この特定の問題に具体的に対処する質問は見たことがありません。

URLルーティングが使用されている場合、リクエストはIISに送られ、Aspxページにルーティングされます。たとえば、サイト:www.site.com/productsがリクエストをwwwroot/inetpubにルーティングする場合があります。 /mysite/pages/productsPage.aspx

ページはリダイレクトではなくルーティングされていることに注意することが重要です。

IIS 6でURLを正しく機能させるには、ワイルドカード拡張機能を設定する必要があることに注意してください。すべてのリソースをAsp.Netに(Asp.Netは静的リソースを引き渡します)これはここに文書化されています: http://blog.codeville.net/2008/07/04/options-for-deploying-aspnet -mvc-to-iis-6 /

IISは、コンテンツを返送するときにコンテンツをGZipで圧縮しないようです。ここの手順に従いました: http://www.kavinda.net/2007/02 /17/how-to-enable-http-compression-iis6.html

IIS 6圧縮を有効にします。

Http圧縮が機能しないように見える理由はありますか?サーバー上の他のサイトでは正常に機能しているようです。 URLルーティングのあるものだけが機能していません

3
Armstrongest

this one のようなメソッドを使用して、ASP.NETアプリケーションの出力自体をgzipで圧縮します。

1
crb

最善の方法は、Bel Loweryによる HttpCompress を使用することです。これは、ページのHTTP圧縮を処理するシンプルで無料のオープンソースのHttpModuleです。 IIS Http圧縮オプションと組み合わせて使用​​できます。

HttpCompressをViciMVCと組み合わせて使用​​すると、スムーズに動作します。

私は何時間もネットを検索していて、HttpCompressを使用するか、商用プロジェクトを購入するか(Port80ソフトウェアにソリューションがあります)、独自のHttpModuleを作成しました。

PS:IISはファイル拡張子に基づいてHTTP圧縮を行います。そのため、URLルーティングを使用するWebサイトでは機能しません。

1
Niels R.

この方法を試しましたか? MS KB3226

IIS 5.0で.aspxページを圧縮できるようにするには、次の手順に従います。

  1. コマンドプロンプトを開きます。
  2. Net stop iisadminと入力し、Enterキーを押します。
  3. Cd C:\ InetPub\adminscriptsと入力し、Enterキーを押します。
  4. 次のように入力して、Enterキーを押します。CSCRIPT.EXEADSUTIL.VBSSET W3Svc/Filters/Compression/GZIP/HcScriptFileExtensions "asp" "dll" "exe" "aspx"
  5. 次のように入力して、Enterキーを押します。CSCRIPT.EXEADSUTIL.VBSSET W3Svc/Filters/Compression/DEFLATE/HcScriptFileExtensions "asp" "dll" "exe" "aspx"
  6. Net start w3svcと入力し、Enterキーを押します。
0
Mathieu Chateau

議論が遅くなって申し訳ありませんが、MVCサイトでIIS 6圧縮を有効にする必要があるため、ここに私が見つけたIIS6ネイティブソリューションを示します。圧縮された拡張機能ではaxd。これは、.Net Framework4からのIIS6拡張子の少ないURLサポートが正しく有効になっていることを前提としています。

私はそれをIISメタベースで直接行いました。 (説明どおり ここ ; %windir%\systems32\inetsrv\metabase.xml。編集する前に、IISを停止するか、IISで「メタベースホット編集」を有効にしてバックアップします。)

私の構成からの抜粋:

<IIsCompressionScheme   Location ="/LM/W3SVC/Filters/Compression/deflate"
    HcCompressionDll="%windir%\system32\inetsrv\gzip.dll"
    HcCreateFlags="0"
    HcDoDynamicCompression="TRUE"
    HcDoOnDemandCompression="TRUE"
    HcDoStaticCompression="TRUE"
    HcDynamicCompressionLevel="9"
    HcFileExtensions="htm
        html
        txt
        xml
        css
        js"
    HcOnDemandCompLevel="10"
    HcPriority="1"
    HcScriptFileExtensions="asp
        dll
        exe
        cgi
        aspx
        asmx
        ashx
        axd"
>
</IIsCompressionScheme>
<IIsCompressionScheme   Location ="/LM/W3SVC/Filters/Compression/gzip"
    HcCompressionDll="%windir%\system32\inetsrv\gzip.dll"
    HcCreateFlags="1"
    HcDoDynamicCompression="TRUE"
    HcDoOnDemandCompression="TRUE"
    HcDoStaticCompression="TRUE"
    HcDynamicCompressionLevel="9"
    HcFileExtensions="htm
        html
        txt
        xml
        css
        js"
    HcOnDemandCompLevel="10"
    HcPriority="1"
    HcScriptFileExtensions="asp
        dll
        exe
        cgi
        aspx
        asmx
        ashx
        axd"
>
</IIsCompressionScheme>
<IIsCompressionSchemes  Location ="/LM/W3SVC/Filters/Compression/Parameters"
    HcCacheControlHeader="max-age=86400"
    HcCompressionBufferSize="8192"
    HcCompressionDirectory="%windir%\IIS Temporary Compressed Files"
    HcDoDiskSpaceLimiting="TRUE"
    HcDoDynamicCompression="TRUE"
    HcDoOnDemandCompression="TRUE"
    HcDoStaticCompression="TRUE"
    HcExpiresHeader="Wed, 01 Jan 1997 12:00:00 GMT"
    HcFilesDeletedPerDiskFree="256"
    HcIoBufferSize="8192"
    HcMaxDiskSpaceUsage="99614720"
    HcMaxQueueLength="1000"
    HcMinFileSizeForComp="1"
    HcNoCompressionForHttp10="FALSE"
    HcNoCompressionForProxies="FALSE"
    HcNoCompressionForRange="FALSE"
    HcSendCacheHeaders="FALSE"
>
</IIsCompressionSchemes>

合理的:内部的には、IIS 6では、eurl.axdページを呼び出すことにより、拡張子の少ないURLが機能します。 fx4を使用したIIS6の拡張子のないURLの詳細については、これを参照してください blog

0
Frédéric