7

すべての静的コンテンツにgzipを追加し、.net4サイトからのhtml出力を追加しています。

また、IIS 7.5(静的および動的の両方)で圧縮を有効にしています。IISで圧縮を有効にすると、これらのリソースのVary:Accept-Encodingヘッダーが上書きされることがわかりました。

それで、私が疑問に思っているのは、私はすでに物事を圧縮しているので、IISで圧縮を有効にする必要があるのでしょうか?

だから、私はいくつかのテストを行いました、そして私が見つけたものは次のとおりです:

Utilizing IIS Static and Dynamic Compression, with code compression:
CPU Load: 35%
Memory Load: 28M

Utilizing IIS Static and Dynamic Compression, without code compression:
CPU Load: 34%
Memory Load: 28M

Non-Utilizing Static and Dynamic Compression In IIS, with code compression:
CPU Load: 14%
Memory Load: 32M

したがって、私の調査結果に基づいて、コードでこれを行う場合、IIS圧縮を利用する必要はないことに同意します。メモリ消費量は少し高くなりますが、CPU負荷は大幅に低くなり、ファイルを提供するためのコード内圧縮がはるかに効率的になります。

さて、これの私の全体的なポイントは、Vary:Accept-EncodingヘッダーのIIS上書きを見つけて取り除くことでした。これは、IIS圧縮が有効になっているかどうかに関係なく効果がないようです。ヘッダーはまだ追加されていません...それで、あなたはそれを手伝ってもらえますか?

これが私が実装しているキャッシングのコードです。このコードを含むメソッドを起動する前に、context.Response.ClearHeaders()を介してヘッダーをクリアしていることに注意してください。

    With context.Response
        .AddHeader("Cache-Control", "store, cache")
        .AddHeader("Pragma", "cache")
        .AddHeader("Cache-Control", "max-age=21600")
        .AddHeader("ETag", Date.Now.Ticks)
        .AddHeader("Expires", DateTime.Now.AddYears(1).ToString("ddd, dd MMM yyyy hh:mm:ss") + " GMT")
        .AddHeader("Vary", "Accept-Encoding")
        .AppendHeader("Vary", "Accept-Encoding")
        .Cache.SetVaryByCustom("Accept-Encoding")
        .Cache.SetOmitVaryStar(True)
        .Cache.VaryByParams.IgnoreParams = True
        .Cache.SetAllowResponseInBrowserHistory(True)
        .Cache.SetCacheability(Web.HttpCacheability.Public)
        .Cache.SetValidUntilExpires(True)
        .Cache.SetLastModified(DateTime.Now.AddYears(-1).ToString("ddd, dd MMM yyyy hh:mm:ss") + " GMT")
        .CacheControl = "public" '
        .Expires = 24 * 60 * 366
        .ExpiresAbsolute = DateTime.Now.AddYears(1).ToString("ddd, dd MMM yyyy hh:mm:ss") + " GMT"
    End With
4

1 に答える 1

5

コードで圧縮を適用しているMIMEタイプを具体的に知る必要があります。次に、これらのMIMEタイプのIIS圧縮を無効にできます。

ファイル.configは次のようになります。圧縮が適用されているMIMEタイプがすべてリストされていることに注意してください。コードまたはIISのいずれかでMIMEタイプの圧縮を慎重にオフにして、コードで圧縮されたコンテンツがIISによって圧縮されないようにします。その逆も同様です。

たとえば、HTMLがすべてコードで圧縮されている場合は、次のように指定できます。

    <add mimeType="text/html" enabled="false" />

applicationHosts.configファイルからの抜粋:

<system.webServer>
<httpCompression
    directory="%SystemDrive%\inetpub\temp\IIS Temporary Compressed Files"
    dynamicCompressionDisableCpuUsage="90"
    dynamicCompressionEnableCpuUsage="80"
    maxDiskSpaceUsage="100" minFileSizeForComp="2700"
    noCompressionForRange="true"
    sendCacheHeaders="false"
    staticCompressionDisableCpuUsage="100"
    staticCompressionEnableCpuUsage="80"
    >
    <scheme name="gzip"
        dll="%Windir%\system32\inetsrv\gzip.dll"
        dynamicCompressionLevel=”4”
        staticCompressionLevel=”7” />
    <dynamicTypes>
        <add mimeType="text/*" enabled="true" />
        <add mimeType="message/*" enabled="true" />
        <add mimeType="application/javascript" enabled="true" />
        <add mimeType="application/json" enabled="true" />
        <add mimeType="application/xml" 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/json" enabled="true" />
        <add mimeType="application/atom+xml" enabled="true" />
        <add mimeType="application/rss+xml" enabled="true" />
        <add mimeType="application/xaml+xml" enabled="true" />
        <add mimeType="application/xml" enabled="true" />
        <add mimeType="image/svg+xml" enabled="true" />
        <add mimeType="*/*" enabled="false" />
    </staticTypes>
</httpCompression>
<urlCompression doDynamicCompression="true"
    dynamicCompressionBeforeCache=”true” />
</system.webServer>

変更するapplicationHosts.configと、サーバー上のすべてのWebサイトに影響するため、コードで圧縮を適用しないWebサイトはまったく圧縮されないことに注意する必要があります。

また、バイナリコンテンツは通常、圧縮しないでください(つまり、画像、ビデオ)。これらのリソースは、それぞれのコンテナ(つまり、.JPG、.MP4)ですでに圧縮されています。すでに圧縮されているコンテンツタイプを圧縮していないことを確認してください。

圧縮設定に関する詳細については、https ://stackoverflow.com/a/10051876/733805の回答で確認してください。

于 2012-04-07T03:09:33.960 に答える