問題タブ [mod-deflate]
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.
php - Apache mod_deflate とチャンク転送
私のウェブサイトは Apache 2.2.24 + PHP 5.3.22 で実行されています。Apache は mod_deflate でインストールされ、.htaccess は次のようになります。
ファイルは送信前に圧縮されます。理想的にはhtmlページのヘッド部分をブラウザに送信するために、チャンク転送を使用する方法があるかどうか疑問に思っています。
残念ながら、DEFLATE がオンの場合、これは機能しません。ヘッドは 10 秒後、つまりページ全体が受信されたときにロードされます。一方、.htaccess ファイルからオプションを削除して DEFLATE をオフにしようとすると、sleep() 関数が呼び出される前に head が送信されます。
最新の Apache と PHP のバージョンで、mod_deflate とチャンク転送を連携させる方法はありますか? http://www.phpied.com/progressive-rendering-via-multiple-flushes/によると、そのはずですが、かなり古い記事なので、時間を無駄にする前にあなたの考えを聞きたいです。
apache - Apache でのコンテンツの手動圧縮
Apache で手動圧縮ソリューションが必要です。私の目標:
- サーバー上で gzip エンコードされたコンテンツを非圧縮と共に提供します。
- ファイルは事前に圧縮されています。
- すべてのファイルが圧縮されて提供されるわけではありません。これらのファイルを指定したいのですが、選択はタイプ (拡張子) ベースではありません。
- 多くのコンテンツ タイプ (カスタム タイプ) が提供されており、新しいタイプが時々登場しています。また、ファイル拡張子は、圧縮されるかどうかを決定しません ( !!! )。
- オーバーヘッドを最小限に抑えます (余分なヘッダーが少ないほど良い)。
- 常に Content-Length ヘッダーを提供し、チャンクされた応答を送信しない (これは不適格となり
mod_deflate
ます)。
理想的な機能
理想的な機能は次のように機能します。
- Web クライアントが file を要求します
file.ext
。 file.ext.gz
サーバーに存在する 場合:Content-Encoding
に設定されていgzip
ます。Content-Type
file.ext
( !!! )の値に設定されます。- サーバーが を返します
file.ext.gz
。
- それ以外の場合
file.ext
は返されます。
私はいくつかのソリューションをテストしました。この記事には適切な編集が含まれていますが、( !!! )でマークされた部分には常に問題がありました。ForceType
何十万ものファイルと何十ものコンテンツ タイプがあるため、ファイルごとに追加する必要のない自動ソリューションを探しています。
私が試したこと
マルチビュー
仕組み:
- ファイル名
file.ext
をfile.ext.en
- ファイルを作成する
file.ext.gz
アパッチを構成します。
/li>
file.ext
元のファイル ( ) が存在しない必要があり、削除できない (削除しない) 多くの (私には役に立たない) ヘッダー ( TCN
、Content-Language
およびその他のいくつか) を追加することを除いて、ほぼ期待どおりにHeader unset
動作します。
リライト
仕組み: -file.ext.gz
ファイルを作成します。- Apache を構成します。
これはうまく機能しますが、ForceType
圧縮ファイルごとに が必要です。前に述べたように、特定の種類のすべてのファイルが圧縮されるわけではないため、拡張子に頼ることはできません。
mod_deflate
私はあまり調査しませんでした。問題は、ファイルが大きすぎる場合、ファイルが分割されてチャンクで送信され、Content-Length
提供されないことです。圧縮バッファーのサイズを大きくしても、この問題を解消することはできません。
私が望むように Apache を設定することはできますか?
を動的に取得して に設定しようとしましContent-Type
たfile.ext
がfile.ext.gz
、これを行う方法が見つかりませんでした。
apache - gzip すべきではない MIME タイプの mod_deflate gzip 応答
Red Hat 6.4 上の Tomcat アプリケーションの前に、プロキシとして Apache 2.2.15 インスタンスがあります。クライアントへの特定の (ホワイト リストに登録されたコンテンツ タイプ) 応答を gzip するように Apache インスタンスを構成しようとしています。Apache は mod_jk を使用して Tomcat に接続しています (ただし、mod_proxy を使用する場合も同じ問題が発生するため、私の問題は mod_jk または Tomcat に関連しているとは思いません)。
私はこの非常に単純な mod_deflate 構成を持っています:
AddOutputFilterByType DEFLATE text/html
これにより、text/html
応答が期待どおりに gzip されます。ただし、Tomcat によって生成されたファイル ( content type のスプレッドシートなど) をダウンロードしようとするとapplication/vnd.ms-excel
、それらのファイルも gzip されます。
Tomcat からファイルを直接ダウンロードする場合の応答ヘッダーは次のとおりです。
そして、これはApache経由でファイルをダウンロードするときです:
mod_deflate がこの応答 (上記) を gzip する理由がわかりません。
行をコメントアウトした後AddOutputFilterByType DEFLATE text/html
、ファイルはもはやgzipされていないので、mod_deflateをトリガーしているのはその行であると確信しています. content-type および場合によってはその他のファイルのダウンロードでも、同じ問題が発生しますapplication/vnd.openxmlformats-officedocument.spreadsheetml.sheet
。ただし、Tomcat から (Apache 経由で) JavaScript ファイルをダウンロードすると、gzip されません (コンテンツ タイプがルールに一致しないため、予想どおり)。
mod_deflate がこれらのスプレッドシートを gzip するという事実は問題です。応答がバッファリングされ、チャンク エンコーディングがトリガーされるためです。これは、ブラウザーに進行状況モニターを表示させたい (これらは非常に大きなファイルである可能性がある) ため、望ましくありません。
何か案は?
apache - Redhat システムの Apache 2.2.3 でチャンクを有効にする方法
私の Apache (redhat のバージョン 2.2.3) サーバーはチャンク エンコーディングを受け入れず、次のエラーをスローします。
chunked Transfer-Encoding forbidden: /services/soap
.
何人かの人々が同じ問題を抱えているのを見ました。彼らは mod_deflate.so を無効にすることを提案しました。その行にコメントしました:
#LoadModule deflate_module modules/mod_deflate.so
Apacheを再起動しましたが、それでも同じ問題があります。
何が恋しい?!
php - PHPスクリプトのGZIP圧縮を有効にする
これを行うことで、phpスクリプトでgzipを有効にしました:
これはいくつかのホストで機能していますが、Hosting24 に移行すると機能しなくなります。
また、cPanel のウェブサイトの最適化セクションで「すべてのコンテンツを圧縮」を有効にし、.htaccess ファイルを次のように編集しました: https://stackoverflow.com/a/8262235/2237587
Hosting24は私にこれを保証しました:
私はこれを行っていますが、Hosting24 では機能しません。別のサービス (000webhost と Arvixe でテスト済み) で同じスクリプトを使用すると、応答が圧縮されます。
圧縮するために次に何を試すことができますか。正直なところ、なぜまだ機能していないのかわかりません。
.htaccess - 圧縮に関する Google ページ速度の提案への対応
Google ページ速度ツールは、 「gzip または deflate でリソースを圧縮すると、ネットワーク経由で送信されるバイト数を減らすことができます」と教えてくれ ます。
もちろん、すべての .js および .css ファイルを一覧表示します。
ここで調査した結果、次の質問にたどり着きました。
.htaccess に「Vary: Accept-Encoding」ヘッダーを指定する方法
.js と .css ファイルだけで、私がする必要があるのはこれだけだと言っているようです:
ユーザーが最新のブラウザを使用していると仮定して、これがこの目的の現在の「ベストプラクティス」であり、フェイルセーフであることを誰かが確認できますか (たとえば、< IE7 ではありません)。
ありがとう!
apache - Apache GZIP 圧縮が他のディレクトリの js/css を圧縮しない
「mod_deflate」(およびその他には拡張機能が必要) を使用して、GZIP 圧縮をローカル ホスト サイト (Apache、2.4.4.0) に適用しようとしています。
これは私が使用しているコードです(.htaccess):
以下を追加して修正しようとしました:
タイプを認識しないと思っていたので、うまくいきませんでした。JS ファイルと CSS ファイルは両方とも rootfolder/js と rootfolder/css にありますが、それはプログラムでしょうか?
編集: YSlow @ Chrome を使用して、動作しているかどうかを確認しています。
php - HTMLページのgzipされた部分をフラッシュする方法
私は自分のページに < head > + いくつかの本文を出力させ、それをブラウザに送信しようとしています。
次に、いくつかの長い mysql クエリを作成し、ページの残りを出力します。
コンテンツを gzip しない限り、これは完全に機能します。
例:
私が使用するコードの簡単な例は次のとおりです。
ここでライブを見るが、gzipはない
または私が働こうとしているもの:
動作しないものを参照してください:こちら
私はこれを私のアプリケーションで動作させる必要がありますが、すべてのページで動作させる必要はありません (gzip を必要としないものや、caldav ライブラリなど、それ自体を処理するライブラリもあります)。
gzip されたコンテンツのフラッシュを機能させるにはどうすればよいですか?