クライアント側の JavaScript で完全に生成されたコンテンツの Web ページを開発しています。index.html の唯一の目的は、Rails のアセット パイプラインで生成された JavaScript および CSS ドキュメントを参照することです。余分なリクエストを避けるために、これらの JavaScript と CSS を本番環境でインライン化したいと考えています。
アセット パイプラインで生成された JavaScript および CSS コンテンツをインライン化する方法は?
クライアント側の JavaScript で完全に生成されたコンテンツの Web ページを開発しています。index.html の唯一の目的は、Rails のアセット パイプラインで生成された JavaScript および CSS ドキュメントを参照することです。余分なリクエストを避けるために、これらの JavaScript と CSS を本番環境でインライン化したいと考えています。
アセット パイプラインで生成された JavaScript および CSS コンテンツをインライン化する方法は?
Rails.application.assets
プリコンパイル後にアセットのコンテンツを取得するために使用できます。これをあなたに追加してくださいindex.html.erb
:
<style type="text/css">
<%= raw Rails.application.assets['application.css'].to_s %>
</style>
<script type="text/javascript">
<%= raw Rails.application.assets['application.js'].to_s %>
</script>
を忘れないでください。それ以外のraw
場合はetc"
に変更されます。"
これは圧縮されていないことに注意してください。本番環境では、おそらく圧縮されたコードをインライン化したいでしょう。これを行うにはgem 'uglifier'
、Gemfile に追加し、バンドルを実行して、これを使用します。
<%= raw Uglifier.new(:copyright => false).compile Rails.application.assets['application.js'].to_s %>
以下も使用できます。Rails.application.assets.find_asset('api.css').to_s
おそらく、本番環境でのパフォーマンスのためにこれらのアセットをインライン化することは望ましくありません。CloudFrontなどのCDNからサービスを提供し、途中でキャッシュすることで、はるかに良い結果が得られる可能性があります。
これにより、めったに行われない2つのHTTP要求を切り取るよりもパフォーマンスが向上するはずです。