Scaling Rails Episode #1 - Page Responsiveness

http://railslab.newrelic.com/2009/01/22/page-responsiveness

How do you measure responsiveness?

  • firefoxのアドオンfirebugをつかってみよう
    • netタブの情報をみてみよう
  • safariでもdevelop menuを有効にすれば同じ情報はみれるよ

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のサーバーからとってこれるぞ
  • Use a Content Delivery Network
    • imageとかのコンテンツをクライアントから近いサーバーからとってきて応答速度あげるぞ
    • akamaiとかCSNetworksとかLimelightとかあるけど、おすすめはamazon cloudfront
    • ActionController::Base.asset_hostにCDNのサーバーを設定しよう
    • こうしとくとimage_tagを出力したときにasset_hostからのURLで出るぞ
  • Add an Expires header
    • http headerのExpiresを書いてブラウザのキャッシュを使うようにしよう
    • Webサーバーのconfigrationで設定しておこう
    • railsはFile.mtimeをファイル名のあとにつけるからファイルが変更されたときも新しいファイルがちゃんとクライアントに返されるぞ(mtime は最終更新時刻)