プログラミングマガジン

プログラミングを中心にIT技術をできるだけわかりやすくまとめます。

  • ホーム
  • Ruby on Rails
  • 【Ruby on Rails】「Turbolinks」によるページ遷移高速化
 
 
     
  • サーバー言語  
    • Python
    • Ruby
    • PHP
    • SQL
  •  
  • インフラ  
       
    • AWS
    •  
    • 基本
    • Git
  • Web
       
    • Web開発
    • JavaScript
    • Vue.js
    • React
  •  
  • 設計  
       
    • 実装設計
    • DB設計
  • 問い合わせ
  

【Ruby on Rails】「Turbolinks」によるページ遷移高速化

12.08

  • miyabisan2
  • コメントを書く

この記事は2分で読めます

Turbolinksとは?

Railsが提供するリンククリックに対するページ遷移を自動的にAjaxにする技術でページ遷移を高速化します。(なお、Turbolinks自体はRailsとは独立したライブラリになります。)、なおRailsで新しいアプリケーションを作った際に自動で有効になっているので新しく設定をする必要もありません。

Turbolinksの仕組み

  1. aタグをクリックすると遷移先のページをAjaxで取得する。
  2. 取得したページが要求するJSやCSSが現在のものと同一であればそれをそのまま利用してtitleやbodyのみ置き換える。

この流れによりリクエストごとにJavaScriptやCSSをブラウザがいちいち評価しなくなりページ遷移も発生しないためパフォーマンスが向上します。

Turbolinksの導入判断

高速化という大きなメリットがありますが、JavaScriptの動きの激しいサイトを作る場合は無効にする場合も多いです。必要に応じて判断して下さい。

プレビュー機能

1度訪れたことのあるページを再度訪問した際に前回のキャッシュを一旦表示してからリクエストを送信し取得が完了したら新しいものに置き換えるプレビュー機能があります。UXの向上には繋がるがキャッシュされた古い画面が一瞬表示されるのでそこには注意する。

サポートしているリクエストメソッド

GETのみだが、POST、PATCH、DELETE等のリクエストでもredirect_toによるリダイレクトの際は動作を最適化してくれます。

Turbolinksとイベントについて

通常のJavaScriptやjQueryのページ遷移発火イベントが動作しない。

以下のようなJavaScriptやjQueryのイベントはページ遷移が実際に行われていないため発火しません。

  • window.onload
  • DOMContentLoaded
  • $(document).ready()

なので、Turbolinks自身の処理状態に応じてイベントを発行するようにしなければなりません。

turbolinks:load

  • 「初回のページ表示時」や「ページ遷移時」に発火するイベント

Turbolinks実装時の注意点

<script>は必ず<head>内に記述をする。

  • body内に記述をするとbody要素の中身が評価される際についでにJavaScriptも評価されて動作が遅くなるため。
  • windowやdocument等のグローバルオブジェクトにイベントハンドラをを追加する場合にTurbolinsでページ遷移しても同じオブジェクトが存在しているため重複して処理されてしまうため。

Turbolinksで読み込むJavaScriptやCSSはできるだけページごとにまとめること

ページが異なってもapplication.jsとapplication.cssにできるだけ処理をまとめること。ページごとに違うファイルが読み込まれるとページ遷移の度にファイルの読み込みが発生してTurbolinksによる高速化のメリットがありません。

スポンサーリンク
  • 2019 12.08
  • miyabisan2
  • コメントを書く
  • Ruby on Rails
  • Tweets Twitter
  • このエントリーをはてなブックマークに追加
  • LINEで送る

関連記事

  1. 2020 07.26

    【Ruby on Rails】空文字、nilチェックの種類(present?、empty?、blank?、nil?)、ActiveSupport

  2. 2020 12.12

    【Ruby on Rails】「プレゼンター(デコレーター)」について

  3. 2019 12.05

    【Ruby on Rails】「検索機能」の実装(Ransack)

  4. 2019 12.07

    【Ruby on Rails】「Active Storage」の基本

  5. 2021 01.30

    【Ruby on Rails】「Enumrize」について

  6. 2019 12.02

    【Ruby on Rails】エラー処理の概要

  • コメント ( 0 )
  • トラックバック ( 0 )
  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。

返信をキャンセルする。

【Ruby on Rails】「Active Job」…

【Ruby on Rails】YarnでのJavaSc…

RETURN TOP

著者プロフィール

エンジニア歴10年で過去に業務系、Webデザイン、インフラ系なども経験あります。現在はWeb系でフロントエンド開発中心です。

詳細なプロフィールはこちら

スポンサーリンク

カテゴリー

  • Android
  • AngularJS
  • API
  • AWS
  • C++
  • CSS
  • cursor
  • C言語
  • DDD
  • DevOps
  • Django
  • Docker
  • Figma
  • Git
  • GitLab
  • GraphQL
  • gRPC
  • Hasura
  • Java
  • JavaScript
  • Kubernetes
  • Laravel
  • linux
  • MySQL
  • Next.js
  • nginx
  • Node.js
  • NoSQL
  • Nuxt.js
  • Oracle
  • PHP
  • Python
  • React
  • Redux
  • Rspec
  • Ruby
  • Ruby on Rails
  • Sass
  • Spring Framework
  • SQL
  • TypeScript
  • Unity
  • Vue.js
  • Webサービス開発
  • Webデザイン
  • Web技術
  • インフラ
  • オブジェクト指向
  • システム開発
  • セキュリティ
  • その他
  • データベース
  • デザインパターン
  • テスト
  • ネットワーク
  • プログラミング全般
  • マイクロサービス
  • マイクロソフト系技術
  • マルチメディア
  • リファクタリング
  • 副業
  • 未分類
  • 業務知識
  • 生成AI
  • 設計
  • 関数型言語
RETURN TOP

Copyright ©  プログラミングマガジン | プライバシーポリシー