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
- アパッチを構成します。 - オプション + マルチビュー AddEncoding x-gzip .gz 削除タイプ .gz 
file.ext元のファイル ( ) が存在しない必要があり、削除できない (削除しない) 多くの (私には役に立たない) ヘッダー ( TCN、Content-Languageおよびその他のいくつか) を追加することを除いて、ほぼ期待どおりにHeader unset動作します。
リライト
仕組み: -file.ext.gzファイルを作成します。- Apache を構成します。
<pre>
RewriteEngine On
RewriteCond %{HTTP:Accept-Encoding} gzip
RewriteCond %{REQUEST_FILENAME}.gz -f
RewriteRule (.*)$ $1.gz [L]
AddEncoding x-gzip .gz
<Files file.ext>
    ForceType my-custom/mime-type
</FilesMatch>
</pre>
これはうまく機能しますが、ForceType圧縮ファイルごとに が必要です。前に述べたように、特定の種類のすべてのファイルが圧縮されるわけではないため、拡張子に頼ることはできません。
mod_deflate
私はあまり調査しませんでした。問題は、ファイルが大きすぎる場合、ファイルが分割されてチャンクで送信され、Content-Length提供されないことです。圧縮バッファーのサイズを大きくしても、この問題を解消することはできません。
私が望むように Apache を設定することはできますか?
を動的に取得して に設定しようとしましContent-Typeたfile.extがfile.ext.gz、これを行う方法が見つかりませんでした。