おもしろwebサービス開発日記

Ruby や Rails を中心に、web技術について書いています

Rails 4.0 に入る予定の turbolinks について調べた

Rails 4.0 のデフォルト Gemfile に入るらしい、pjax っぽいことをして画面遷移を高速化する gem turbolinks について軽く調べてみました。

実態は100行ほどの coffee script なのでざっくり読んでみるとどんな挙動をするのかわかりやすいです。

turbolinks/lib/assets/javascripts/turbolinks.js.coffee at master · rails/turbolinks · GitHub

以下簡単なメモ。

  • 普通にリンククリックで画面遷移していたところをajax化する
  • pjaxと違ってbodyタグ以下決めうちで差し替える
  • リンクをクリックすると xhr で GET → body タグ差し替え → pushState。
  • 複雑な設定がいらない。これまで動かしていたサービスにすぐ投入できるっぽい。
  • bodyタグ配下だけ差し替えると言うことはJavaScript や CSS ファイルへリクエストが飛ばない&解釈しない分早い
    • Rails3.1 以降であれば Asset Pipeline で全部の JavaScript や CSS をそれぞれ一つにまとめているはずなので問題ない
    • サーバ側はこれまでとかわらず普通にレスポンスを返すので、サーバ側に重たい処理が早く返せるとかそういう話しじゃない
  • pushState が使えないブラウザでは使えない。その場合は普通に遷移する