アセットパイプラインの意味がよくわからなかったため、調べたことを残しておきます。
そもそもの話
そもそもwebブラウザはHTML,CSS,JavaScpirt,WebAssembly
を読み込むことで画面を表示している。(WebAssemblyとは大幅にパフォーマンスが向上する新しいタイプのコード)
その、HTML,CSS,JavaScpirt,WebAssembly
をブラウザが読み込めるようにする仕組みをアセットパープラインという。
アセットパイプラインとは
アセットパイプラインとは、JavaScriptやCSSのアセットを最小化 (minify: スペースや改行を詰めるなど) または圧縮して連結するためのフレームワークです。
自分なりのまとめ
人間が見てわかりやすように配置されているCSSやJavascriptなどの静的ファイルを1つにまとめる機能のこと。
なぜまとめるのか→ファイルへのリクエスト回数を減らして処理を少なくするため。
アセットパイプラインの流れ
- 高級言語のプリコンパイル→人間がわかりやすいように書いた言語を機械がわかるように翻訳する
- 連結→複数のファイルを1つにまとめる
- 圧縮→余分な改行や余白を削除して読み込みスピードをあげる
- publicに配置されたファイルを読み取ってブラウザに表示をする
実施方法
- 開発環境ではアセットパイプラインを通る仕組みが自動化されているため特に行うことはない
- 本番環境では手動で行う必要がある。
- (
rails assets:precompile RAILS_ENV=production
コマンドを実行) -
config/environments/production.rb
のconfig.assets.compile = false
のfalseをtrueに変える
- (
現在の疑問点
なぜconfig.assets.compile = false
をtrueにするのか?
そもそもconfig.assets.compile
ってなに?
どうやらconfig.assets.compileは
ファイルがないときにファイルを探して自動コンパイル
をしくてれるらしい。(Rails ドキュメント引用)
説明
「true」の場合は、public/assetsのなかに必要なファイルを見つからなかった時に、app/assetsなどからファイルを探しコンパイル
便利そうには感じるがtrueにしておくとサーバーに負荷がかかるらしい...。
処理速度を早くするためにアセットパイプラインの仕組みを使うのにtrueにして負担かけてもいいものなのか...。
考え出したら止まりません!
以上、アセットパイプラインについて現状わかったことについて記述しました。
まだ細かい部分は理解できていないため勉強していきます!
参考記事
https://railsdoc.com/page/config_assets_compile
https://developer.mozilla.org/ja/docs/WebAssembly/Concepts
https://www.transnet.ne.jp/2016/02/28/rails%E5%88%9D%E5%AD%A6%E8%80%85%E3%81%8C%E3%81%A4%E3%81%BE%E3%81%9A%E3%81%8Dcolnr%E3%80%8C%E3%82%A2%E3%82%BB%E3%83%83%E3%83%88%E3%83%91%E3%82%A4%E3%83%97%E3%83%A9%E3%82%A4%E3%83%B3/