カテゴリー別アーカイブ: ruby on rails

Rails開発中にjs,cssファイルが多すぎて激重な場合の対処法


Railsで開発していると、jsファイルやcssファイルが大量に増えていった場合、開発環境でページの表示が激重になるというもんだいがある。
これの原因は、css,jsファイル毎にHTTPリクエストが行われるから。
Chromeのデベロッパーツールでリクエストを見てみると、見事にファイルごとにHTTPリクエストが走っている。
これはヤバイ。

tmp2

対処法その1 application.js,cssにまとめてしまう

ファイルの数が大から問題なのであって、本番環境のようにapplication.jsにまとめてしまえば解決!
下の設定をconfig/environments/development.rbに記述すると、jsとcssはapplication.jsとapplication.cssにまとめられる。

1
config.assets.debug = false

でも、application.jsにまとめられるとjsでエラーの発生箇所を突き止めるのが難しくなる問題もある。

* jsもcssも全く触らない
* jsをまったく触らなくて、cssはそもそもいつでもapplication.cssにまとめている
* エラー箇所なんて気合で探すぜ!とにかくページ表示を早くしてくれ!

などの場合には有効なんじゃないかな。

`config/environments/development.rb`の変更はrailsの再起動が必要になるので、include_tagヘルパのdebugオプションを使用する手もある。
以下のようにすると、disable_assets_debugパラメータがtruthyの時には、config.assets.debug = trueを設定した時と同じ動作になる。

1
= javascript_include_tag "application", debug: params[:disable_assets_debug].blank?

falseを設定前のページロード時間はこれで、
tmp3

falseを設定した後のページロード時間はこれ。
tmp4

リクエスト激減で明らかに待ち時間が減っている。快適!

対処法2 pjaxにする

turbolinksを使うとか?
リンクでの移動の度にassetsの再読み込みが行われなくなるので、遷移時のイライラは減る。
初めてページを読み込む時は同様に遅いけど。。
対処法というのかは疑問。