6

私は ASP.Net Web サイトに取り組んでおり、現在最適化中です。動的コンテンツ圧縮を有効にしようとしていますが、うまくいきません。

私は得る

エラー 330 (net::ERR_CONTENT_DECODING_FAILED): 不明なエラーです。

  • 私の開発環境では問題なく動作しています。

    • プロジェクトをリリース モードでビルドしました。動的コンテンツ圧縮モジュールを追加し、動的コンテンツ圧縮を有効にして、これが受信したものであることを確認しました。
  • IIS がインストールされた AWS EC2 サーバー Windows 2008 R2 があります。

    • プロジェクトをリリース モードでビルドし、サーバーにデプロイするフォルダーに公開しました。
    • 開発者のマシンと同じ web.config ファイルを試してみましたが、うまくいきませんでした

これを web.config に追加しました:

<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" />
    <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" />

誰が何が間違っている可能性があるか考えていますか?

前もって感謝します。

編集: フィドラーを介してリクエストを実行しようとしたところ、応答が返されました:「コンテンツを解凍できませんでした。

GZip ヘッダーのマジック ナンバーが正しくありません。GZip ストリームを渡していることを確認してください。」

4

4 に答える 4

8

ディスクの空き容量が不足しているため、IIS 一時圧縮ファイルが破損または切り捨てられるという問題が発生しました。

  1. 走るinetmgr
  2. マシン、圧縮機能に移動
  3. Cache ディレクトリの内容を削除する
于 2015-08-18T10:02:04.913 に答える
1

dynamicCompressionBeforeCache="false" を指定してみてください

dynamicCompressionBeforeCache="true" を使用しようとしていたのは、キャッシュされたオブジェクトが圧縮されて保存されると考えたためです。これにより、小さいファイルとして提供できるようになりますが、同じエラーが発生しました...

<!--http://www.iis.net/configreference/system.webserver/urlcompression-->
<urlCompression doStaticCompression="true" doDynamicCompression="true" dynamicCompressionBeforeCache="false" />
<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" />
    <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>

http://www.iis.net/configreference/system.webserver/urlcompression

dynamicCompressionBeforeCache 属性は、IIS がキャッシュされていないコンテンツを動的に圧縮するかどうかを指定します。dynamicCompressionBeforeCache 属性が true の場合、IIS は最初に要求が行われたときに応答を動的に圧縮し、圧縮のためにコンテンツをキューに入れます。圧縮された応答がキャッシュ ディレクトリに追加されるまで、後続の要求は動的に処理されます。圧縮された応答がキャッシュ ディレクトリに追加されると、キャッシュされた応答が後続の要求のためにクライアントに送信されます。dynamicCompressionBeforeCache が false の場合、圧縮された応答がキャッシュ ディレクトリに追加されるまで、IIS は圧縮されていない応答を返します。

注: 出力キャッシュ応答がフラッシュされたときに dynamicCompressionBeforeCache 属性が true の場合、応答が出力キャッシュに入れられる前に動的圧縮は実行されません。ただし、doDynamicCompression 属性が true の場合、出力キャッシュが応答でいっぱいになった後も動的圧縮が行われます。

于 2015-01-12T22:53:19.257 に答える