Railsドキュメント

クッキー・キャッシュ

キャッシュについて

キャッシュの種類

キャッシュには主に以下の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

ソースコード