問題タブ [http-compression]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
iis - 既に圧縮されている応答で既定の IIS 圧縮を防ぐにはどうすればよいですか?
TLDR
IHttpHandler
圧縮を実行する があります。それはそれ自体でうまく機能します。しかし、その後IHttpModule
、これらの (および他のすべての) 応答に対してまったく無関係なタスクを実行する を追加したため、IIS は既に圧縮された応答を再圧縮しています。どうすればこれを防ぐことができますか?
一部始終
IHttpHandler
CSS と JS ファイルの組み合わせと圧縮 (とりわけ) を実行する実装があります。私が望んでいるように、作品のすべてがIHttpHandler
正確に機能します。
しかしその後、イベント中にすべての応答 ( によって生成される動的応答を含む) からIHttpModule
不要な応答ヘッダー ( 、 など) を削除する実装Server
をX-AspNet-Version
追加しました。IHttpHandler
PreSendRequestHeaders
ただし、単に を登録するIHttpModule
と、実際の動作に関係なく、応答が既に圧縮されている場合でも、IIS が応答に圧縮を適用するようです。
そのためIHttpHandler
、応答を明示的に圧縮してContent-Encoding
ヘッダーを設定し、(場合に限り)IHttpModule
も登録されている場合にのみ、IIS は応答を再圧縮します (したがって、ブラウザーが読み取ることができない二重に圧縮された応答があります)。
デフォルトの圧縮をすべて無効にしたくありません。ビューからの HTML を圧縮したい (そして、通過しない CSS と JSIHttpHandler
もデフォルトで圧縮したい)。
IIS のバグのように見えるので、私の問題に対する簡単な解決策はないと思います。IIS は、既に圧縮されている応答を圧縮すべきではありません。
web.config に以下を追加しようとしましたが、効果がありませんでした:
(ドキュメントの私の解釈から、動的に生成された CSS および JS の圧縮を無効にする必要があります。)
私もこれを試しましたが、効果はありませんでした:
(ドキュメントの私の解釈から、それはすべてのデフォルトの圧縮を無効にするはずです。)
アップデート
私のIHttpHandler
では、最後に呼び出しますcontext.Response.Flush
。この呼び出しを削除すると、応答は二重圧縮されません。解決策としてはこれでいいです。なぜこれが起こっているのか誰でも説明できますか?
更新 2
私の最善の推測ではFlush
、IIS が応答が既に圧縮されているとは思わないような状態に応答が置かれる (そのため、デフォルトの圧縮が適用される) ということです。私のモジュールでは両方をチェックできますが...
- ヘッダーを
Response.Headers
含むContent-Encoding
- それ
Response.Filter
は非null
であり、タイプの 1 つですSystem.IO.Compression
。
これらの事実から、IIS が応答が既に圧縮されていると判断できない理由がわかりません。
performance - IIS 7.5圧縮は、IIS6と比較して効果がありません
IIS 7.5で圧縮機能(動的および静的)をアクティブにしました。
ただし、サイトの読み込みが非常に遅く、特にSWF、JPG、CSS、JS、ASPX拡張機能の圧縮はまったく感じられません。
IIS 6では、メタベースファイルを編集して、これらの拡張機能を圧縮に追加していました。IIS 7.5でも同じことをしますか?
編集するファイルとそのセクションは正確には何ですか?
助けてください。ありがとう。
javascript - JavaScriptの縮小と圧縮
JavaScriptの縮小と圧縮のプロセスを理解しようとしていますが、これらについていくつか質問があります。
- ミニファイはコードのデバッグを困難にするので、実際にWebサイトで何かをデバッグして調査する必要がある場合に備えて、クライアント側でオンデマンドのデミニフィケーションを実行することは可能ですか?
- Apache Webサーバーでいくつかのオプションを設定することで、すべてのリソース(画像、CSS、JavaScriptなど)の圧縮を有効にできることをどこかで読んだことを覚えています。Apacheレベルで行われるJavaScript圧縮と、YUI Compressorなどのツールを使用して行われるJavaScript圧縮に違いはありますか?
誰かが私に上記を知るのを手伝ってもらえますか?
JavaScriptファイルを実際に縮小する必要があるようなケースは、JavaScriptエラーが行番号で発生したとしましょう。X.縮小されたファイルでは、行がすべて縮小されたファイルにラップされているため、どのコードブロックが本番環境でエラーを引き起こしたかを知るのは非常に困難です。このような状況で、どのように調査してデバッグしますか?別のユーザーも、IE6で失敗するパック/縮小されたJavaScriptのこのデバッグの問題について言及しました-デバッグ方法は?質問(ただし、IE6に少し固有です)。
wcf - WCFでnet.TCPをGZipテクノロジーと一緒に使用できますか
net.TCPバインディングを使用してWCFにGZipを実装できますか、それともHttpおよびWsHttpバインディングでのみ構成できますか。
c# - 例外が発生すると、「Content-encoding」ヘッダーがHttpHandler応答から消えます
次のように、出力圧縮を手動で有効にするカスタムHttpHandlerがあります。
これはほとんどのリクエストでうまく機能しますが、例外が発生すると、「Content-encoding」ヘッダーが応答から消え、圧縮フィルターはそのまま残ります。その結果、エラーページはgzipで圧縮されますが、ブラウザはその事実を示すヘッダーを受け取りません。次に、ブラウザはまだ圧縮されているデータをテキストとして表示しようとします。これはgobbledygookです。
完全なテストケースコードを以下に示します。代わりに、圧縮を無効にするか、例外をスローしないようにしてください。
「Content-encoding」ヘッダーが消える理由を誰かが明らかにすることはできますか?
ハンドラーが最後に行うように単純に圧縮を有効にできると思います。そのため、例外が発生した場合、圧縮フィルターが追加されるポイントに到達することはありません。しかし、私が見ている振る舞いはバグとして私を襲います。誰でも確認できますか?
編集:テストケースで見たまだエンコードされた応答のスクリーンショット:http://i.imgur.com/49Vcl.png
http - GZIP圧縮を使用してファイルをダウンロードするときに「コンテンツのデコードに失敗しました」エラー
私のWebアプリはその場でCSVファイルを生成しますが、GZIP圧縮を使用すると、ダウンロードが失敗します。
ダウンロードはGoogleChromeで「中断」と表示され、InternetExplorerでは「コンテンツのデコードに失敗しました」というエラーが表示されます。
解決策は、そのアクションの圧縮を無効にすることですが、なぜこれが発生するのですか?
乾杯。
更新:私が使用する圧縮フィルター:
gzip - 主要な Web サイトが gzip を使用しているのはなぜですか?
gzipとDeflateについて検索したところ、Deflate の方が優れていることがわかりました。
- HTTP 圧縮用の GZip または Deflate
- Apache が提供するテキスト ファイルに gzip の代わりに deflate を使用するのはなぜですか?
- http 圧縮に deflate ではなく gzip を選択すると、パフォーマンスに影響がありますか?
- Deflate 圧縮ブラウザーの互換性と GZIP に対する利点
しかし、Google、Facebook、StackExchange の応答ヘッダーを確認したところ、すべて GZIP を使用していました。Deflate の代わりに gzip を使用するのはなぜですか?
javascript - 複数のCSS/JSファイルを組み合わせて縮小する
CSSファイルとJSファイルを統合して圧縮することにより、サイトのパフォーマンスを最適化しようとしています。私の質問は、私が直面している実際の状況を考慮して、これを達成するための(具体的な)手順についてです(ただし、他の開発者の間でも一般的であるはずです)。
私のページは、次のようないくつかのCSSおよびJSファイルを参照しています。
本番リリースでは、3つのCSSファイルを1つに結合し、YUICompressorなどを使用して縮小したいと思います。しかし、次に、新しく縮小されたCSSを参照するために、これら3つのファイルを必要とするすべてのページを更新する必要があります。これはエラーが発生しやすいようです(たとえば、多くのファイルでいくつかの行を削除および追加している場合)。他のリスクの少ないアプローチはありますか?JSファイルについても同じ問題です。
performance - ノードのSDCH圧縮?
Node用のSDCH (Shared Dictionary Compression over HTTP)ライブラリはありますか?(または、そのことに関する他の実装はありますか?)
npmをすばやく検索しても、何も得られませんでした。
compression - Web ページの圧縮
私はウェブサイトの圧縮とその方法に慣れていません。css、JS、画像などのすべてのページ コンテンツとソースを圧縮する方法を知りたいです。これが大きなトピックになる可能性があることは承知していますが、最初は常に簡単な質問と回答から始まります。
特定の形式で物事を圧縮する必要がありますか、それを行う方法はありますか?
更新 #1
最適化サイトで自分の Web ページのいくつかをテストして状況を確認しましたが、多くのコンテンツ圧縮が必要であることがわかりました。それでは、Apacheで圧縮を行う正しい方法は何ですか?