Railsドキュメント

キャッシュについて

キャッシュの種類

キャッシュには主に以下の6種類の方法がある

  • ページキャッシュ
  • アクションキャッシュ
  • フラグメントキャッシュ
  • ロシアンドールキャッシュ
  • 低レベルキャッシュ
  • SQLキャッシュ

キャッシュの保存場所

  • メモリ
  • ファイル
  • memcached

フラグメントキャッシュ

説明

ページ全体ではなく、ページの一部をキャッシュするときに使う

使い方

<% cache([キャッシュキー, オプション]) do %>
  キャッシュ
<% end %>

オプション

オプション 説明
:skip_digest digestの付与をスキップ

ページの一部をキャッシュ

<% cache [ project, current_user ] do %>
  <b>All the topics on this project</b>
  <%= render project.topics %>
<% end %>

ソースコード

フラグメントキャッシュを破棄

説明

フラグメントキャッシュを破棄

使い方

expire_fragment(キャッシュキー [,  オプション])

キャッシュキー

キャッシュキーは次の3つの形式

  • 文字列
  • ハッシュ
  • 正規表現

文字列

expire_fragment "detail"

ハッシュ

expire_fragment :controller => 'posts', :action => 'show', :id => post.id

正規表現

expire_fragment %r{/*/user/home}

ソースコード

クッキーを保存

説明

クッキーとは、クライアント側に保存されるファイルのこと

使い方

cookies[:クッキー名] = { key: クッキー情報 }

オプション

オプション 説明 デフォルト値
:value クッキーの値  
:path クッキーが有効なパス  
:domain クッキーが有効なドメイン 現在のホスト
:expires クッキーの有効期限 /
:secure 暗号化通信でのみクッキーを送信 false
:httponly HTTPクッキーを有効 false

クッキーに保存

cookies[:user_name] = "david"

クッキーに配列を保存

cookies[:lat_lon] = [47.68, -122.37]

クッキーにハッシュを保存

cookies[:login] = { value: "XJ-122", expires: 1.hour.from_now }

永続化クッキー

説明

永続化クッキー(有効期間が20年に設定されたクッキー)を設定

使い方

cookies.permanent[クッキー名] = 値

cookies.permanent[:user_name] = "Jamie"

署名付きクッキー

説明

署名付きクッキーを設定

使い方

cookies.signed[クッキー名] = 値

cookies.signed[:user_id] = 45

クッキーを削除

説明

クッキーを削除

使い方

cookies.delete(:クッキー名 [, 対象のドメイン、またはパス])

クッキーを削除

cookies.delete :user_name

セッションに保存

説明

セッションに情報を保存

使い方

session[キー] = 値

基本形(オプションなし)

session[:user_name] = 'test'

@userがnilかfalseだったら、@userにUser.find(session[:user_id])を代入

@user ||= User.find(session[:user_id])

セッション情報を削除

説明

セッション情報を削除

使い方

すべて

reset_session

一部

session[キー] = nil

すべてのセッション情報を削除

reset_session

user_nameのセッション情報を削除

session[:user_name] = nil

現在のセッション情報を取得

使い方

session.session_id

フラグメントキャッシュの参照

説明

フラグメントキャッシュの配列を取得

使い方

combined_fragment_cache_key(キー名)

ソースコード

フラグメントキャッシュが存在するか確認

説明

フラグメントキャッシュが存在するか

使い方

fragment_exist?(キー名 [,  オプション])

フラグメントキャッシュが存在するか

fragment_exist? 'ratings_cache'

ソースコード

フラグメントキャッシュの保存

説明

フラグメントキャッシュの保存

使い方

write_fragment(キー名, 保存場所 [,  オプション])

ソースコード