キャッシュについて
layout: page
キャッシュの種類
キャッシュには主に以下の6種類の方法がある
- ページキャッシュ
- アクションキャッシュ
- フラグメントキャッシュ
- ロシアンドールキャッシュ
- 低レベルキャッシュ
- SQLキャッシュ
キャッシュの保存場所
- メモリ
- ファイル
- memcached
フラグメントキャッシュ
layout: page
説明
ページ全体ではなく、ページの一部をキャッシュするときに使う
使い方
<% cache([キャッシュキー, オプション]) do %>
キャッシュ
<% end %>
オプション
オプション | 説明 |
---|---|
:skip_digest | digestの付与をスキップ |
例
ページの一部をキャッシュ
<% cache [ project, current_user ] do %>
<b>All the topics on this project</b>
<%= render project.topics %>
<% end %>
ソースコード
フラグメントキャッシュを破棄
layout: page
説明
フラグメントキャッシュを破棄
使い方
expire_fragment(キャッシュキー [, オプション])
キャッシュキー
キャッシュキーは次の3つの形式
- 文字列
- ハッシュ
- 正規表現
例
文字列
expire_fragment "detail"
ハッシュ
expire_fragment :controller => 'posts', :action => 'show', :id => post.id
正規表現
expire_fragment %r{/*/user/home}
ソースコード
クッキーを保存
layout: page
説明
クッキーとは、クライアント側に保存されるファイルのこと
使い方
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 }
永続化クッキー
layout: page
説明
永続化クッキー(有効期間が20年に設定されたクッキー)を設定
使い方
cookies.permanent[クッキー名] = 値
例
cookies.permanent[:user_name] = "Jamie"
署名付きクッキー
layout: page
説明
署名付きクッキーを設定
使い方
cookies.signed[クッキー名] = 値
例
cookies.signed[:user_id] = 45
クッキーを削除
layout: page
説明
クッキーを削除
使い方
cookies.delete(:クッキー名 [, 対象のドメイン、またはパス])
例
クッキーを削除
cookies.delete :user_name
セッションに保存
layout: page
説明
セッションに情報を保存
使い方
session[キー] = 値
例
基本形(オプションなし)
session[:user_name] = 'test'
@userがnilかfalseだったら、@userにUser.find(session[:user_id])を代入
@user ||= User.find(session[:user_id])
セッション情報を削除
layout: page
説明
セッション情報を削除
使い方
すべて
reset_session
一部
session[キー] = nil
例
すべてのセッション情報を削除
reset_session
user_nameのセッション情報を削除
session[:user_name] = nil
現在のセッション情報を取得
layout: page
使い方
session.session_id
フラグメントキャッシュの参照
layout: page
説明
フラグメントキャッシュの配列を取得
使い方
combined_fragment_cache_key(キー名)
ソースコード
フラグメントキャッシュが存在するか確認
layout: page
説明
フラグメントキャッシュが存在するか
使い方
fragment_exist?(キー名 [, オプション])
例
フラグメントキャッシュが存在するか
fragment_exist? 'ratings_cache'
ソースコード
フラグメントキャッシュの保存
layout: page
説明
フラグメントキャッシュの保存
使い方
write_fragment(キー名, 保存場所 [, オプション])