3

Rails サイトに Rails アセット パイプラインを使用しています。assets:precompile タスクは、css および js ファイルの gzip バージョンを自動的に適切に処理および作成します。

いくつかの xml アセットを追加しました。アセット パイプラインを使用すると、画像などのバイナリ ファイルと同じようにファイルを参照できます。ただし、「config.assets.precompile」に明示的に配置しても、プリコンパイル タスクは xml ファイルの gzip バージョンを作成しません。私の xml ファイルは大きなアセットであり、gzip を使用すると約 3 倍高速になるため、これは私のサイトにとって重要な最適化です。「.xml」などの追加の拡張子を持つ gzip ファイルにパイプラインを構成する方法はありますか?

ノート:

  • asset_sync gem を使用してすべての静的アセットを CloudFront CDN に移動しているため、ウェブサーバー (NGINX) に頼ってファイルを自動的に gzip することはできません。asset-pipeline がファイルを作成した場合、 asset_syncは gzip されたバージョンのファイルをアップロードしますが、gzip されたバージョンは作成しません。理論的には、asset_sync を fork して、アップロード前に gzip xml ファイルにハックするか、プリコンパイルと同期タスクの間に追加のタスクを挿入することもできますが、gem の fork を維持することは避けたいと思います。

  • また、.x​​ml の代わりに .js 拡張子を使用してアセット パイプラインをだますことも考えましたが、ハックの少ないソリューションを好みます。

  • 追加のファイル タイプで gzip を構成するクリーンな方法がない場合、gzip を手動で追加できるファイルにカスタムの「後処理」フィルターを追加する方法はありますか? 最終的なハッシュ化されたアセット ファイルにカスタム プリプロセッサを追加する方法についてのガイドを見たことがありますが、ポスト プロセッサは追加しません。

4

1 に答える 1

0

このオプションは Rails 4 に追加されました。XML は自動的に圧縮され、Rails は圧縮するファイルの種類を指定するための構成オプション zip_files を公開します。

https://github.com/rails/rails/commit/7cfd1bd76a41bea528c945d821a9fbc3902af479

于 2013-06-15T10:06:51.377 に答える