クッキー・キャッシュ
キャッシュについて
キャッシュの種類
キャッシュには主に以下の6種類の方法がある
- ページキャッシュ
- アクションキャッシュ
- フラグメントキャッシュ
- ロシアンドールキャッシュ
- 低レベルキャッシュ
- SQLキャッシュ
キャッシュの保存場所
- メモリ
- ファイル
- memcached
フラグメントキャッシュ
説明
ページ全体ではなく、ページの一部をキャッシュするときに使う
使い方
cache(キャッシュキー={}, オプション={}, ブロック引数)
オプション
オプション | 説明 |
---|---|
:skip_digest | digestの付与をスキップ |
例
<% cache [ project, current_user ] do %>
<b>All the topics on this project</b>
<%= render project.topics %>
<% end %>
ソースコード
フラグメントキャッシュを破棄
説明
フラグメントキャッシュを破棄
使い方
expire_fragment(キャッシュキー, オプション=nil)
キャッシュキー
キャッシュキーは次の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])
セッション情報を削除
説明
セッション情報を削除
使い方
すべて
reset_session
一部
session[キー] = nil
例
すべてのセッション情報を削除
reset_session
user_nameのセッション情報を削除
session[:user_name] = nil
現在のセッション情報を取得
使い方
session.session_id
セッションが安全なHTTPSリクエストか指定
説明
セッションが安全なHTTPSリクエストか指定
使い方
session.https!(セッションが安全なHTTPSリクエストか=true)
例
session.https!
session.https!(false)
ソースコード
セッションが安全なHTTPSリクエストか
説明
セッションが安全なHTTPSリクエストか
使い方
session.https?()
例
if session.https?
end
ソースコード
新しいセッションインスタンスを開く
説明
新しいセッションインスタンスを開く
使い方
session = open_session do |sess|
// 処理内容
end
例
session = open_session do |sess|
sess.extend(CustomAssertions)
end
ソースコード
実際のリクエストを実行
説明
実際のリクエストを実行
使い方
process(HTTPメソッド, リクエストを実行するためのURI, params: パラメータ=nil, headers: 追加のヘッダー=nil, env: 追加のenv=nil, xhr: Ajaxリクエストを行いたいか=false, as: リクエストを異なるコンテントタイプでエンコード=nil)
例
process :get, '/author', params: { since: 201501011400 }
ソースコード
フラグメントキャッシュキーのプレフィックス
説明
フラグメントキャッシュキーのプレフィックス
使い方
fragment_cache_key(値=nil, キー引数)
例
fragment_cache_key "v1"
ブロック指定
fragment_cache_key do
@account.id.odd? ? "v1" : "v2"
end
ソースコード
フラグメントキャッシュの参照
説明
フラグメントキャッシュの配列を取得
使い方
combined_fragment_cache_key(キー名)
ソースコード
フラグメントキャッシュが存在するか確認
説明
フラグメントキャッシュが存在するか
使い方
fragment_exist?(キー名, オプション=nil)
例
fragment_exist? 'ratings_cache'
ソースコード
フラグメントキャッシュの保存
説明
フラグメントキャッシュの保存
使い方
write_fragment(キー名, 保存場所, オプション=nil)
ソースコード
クライアントの暗号化処理
説明
クライアントに送信する前にクッキーの値を自動的に暗号化し、読み取り時には復号化するjarを返す
クッキーがユーザ(または第三者)によって改ざんされていた場合はnil
使い方
cookies.encrypted[クッキー名] = 値
例
cookies.encrypted[:discount] = 45
#=> Set-Cookie: discount=DIQ7fw==--K3n//8vvnSbGq9dA--7Xh91HfLpwzbj1czhBiwOg==; path=/
cookies.encrypted[:discount] #=> 45