Scaling Rails Episode #1 - Page Responsiveness
http://railslab.newrelic.com/2009/01/22/page-responsiveness
How do you measure responsiveness?
How do you improve responsiveness?
By Improving Browser Load Time
- firefoxのyslowアドオンを使ってみよう
- 問題点が分かるぞ
- make fewer http request
- javascript libraryとかcssファイルを取るリクエスト減らそう
- javascript_include_tag、stylesheet_link_tagに:cache => trueオプションをつけよう
- 複数のファイルを1つにまとめてくれるのでリクエストを減らすことができるよ
- production環境で有効だけどdevelopment環境でもconfig/environments/development.rbで
config.action_controller.perform_caching = true
に設定すれば動作する
-
- asset_packager plugin(minify your javascript and css)を使ってみよう
- javascriptファイルとcssファイルを圧縮してくれるぞ
- google ajax librariesを使ってみよう
- prototype.jsとかのcommonなlibraryをgoogleのサーバーからとってこれるぞ
- asset_packager plugin(minify your javascript and css)を使ってみよう
- Use a Content Delivery Network
- imageとかのコンテンツをクライアントから近いサーバーからとってきて応答速度あげるぞ
- akamaiとかCSNetworksとかLimelightとかあるけど、おすすめはamazon cloudfront
- ActionController::Base.asset_hostにCDNのサーバーを設定しよう
- 例)ActionController::Base.asset_host = "assets.example.com"
- こうしとくとimage_tagを出力したときにasset_hostからのURLで出るぞ
- Add an Expires header
- http headerのExpiresを書いてブラウザのキャッシュを使うようにしよう
- Webサーバーのconfigrationで設定しておこう
- railsはFile.mtimeをファイル名のあとにつけるからファイルが変更されたときも新しいファイルがちゃんとクライアントに返されるぞ(mtime は最終更新時刻)