目次
- キャッシュの設定
- ページキャッシュ(caches_page)
- ページキャッシュの破棄(expire_page)
- アクションキャッシュ(caches_action)
- アクションキャッシュの破棄(expire_action)
- フラグメントキャッシュ(cache)
- フラグメントキャッシュを破棄(expire_fragment)
- クッキーを保存(cookies)
- 永続化クッキー(cookies.permanent)
- 署名付きクッキー(cookies.signed)
- クッキーを削除(cookies.delete)
- セッションについて(session)
- セッションに保存
- セッション情報を削除(reset_session)
- 現在のセッション情報を取得(session.session_id)
クッキー・キャッシュ
キャッシュの設定
説明
Railsで標準で使用するキャッシュは3種類
種類
| キャッシュ | 説明 |
|---|---|
| ページキャッシュ | ページ単位のキャッシュ |
| アクションキャッシュ | アクション単位のキャッシュ |
| フラグメントキャッシュ | ビューによる部分単位のキャッシュ |
環境ごとのデフォルトの設定
| 環境 | 設定 |
|---|---|
| development | 無効 |
| test | 有効 |
| production | 有効 |
設定の有効化
config.action_controller.perform_caching = true
ページキャッシュ(caches_page)
適応バージョン
- 1.0.0
- 1.1.0
- 1.1.1
- 1.1.6
- 1.2.0
- 1.2.6
- 2.0.0
- 2.0.1
- 2.0.3
- 2.1.0
- 2.2.1
- 2.3.2
- 2.3.8
- 3.0.0
- 3.0.5
- 3.0.7
- 3.0.9
- 3.1.0
- 3.2.3
- 3.2.8
- 3.2.13
- 4.0.0
説明
ページ単位のキャッシュ
ヘルプページなど動的にページの表示内容がかわらないページなどに利用する
使い方
caches_page アクション名... [, オプション]
オプション
| オプション | 説明 |
|---|---|
| :if | 条件式がtrueのときキャッシュを利用 |
| :unless | 条件式がfalseのときキャッシュを利用 |
設定
ページキャッシュファイルの配置場所や拡張子を変更
config.action_controller.page_cache_directory = "#{RAILS_ROOT}/public/cache/"
config.action_controller.page_cache_extension = ".html.erb
ソースコード
ソースコードを見る
# File actionpack/lib/action_controller/caching/pages.rb, line 106
def caches_page(*actions)
return unless perform_caching
options = actions.extract_options!
gzip_level = options.fetch(:gzip, page_cache_compression)
gzip_level = case gzip_level
when Symbol
Zlib.const_get(gzip_level.to_s.upcase)
when Fixnum
gzip_level
when false
nil
else
Zlib::BEST_COMPRESSION
end
after_filter({:only => actions}.merge(options)) do |c|
c.cache_page(nil, nil, gzip_level)
end
endソースコード検索
- Search: config.action_controller.page_cache_directory - GitHub
- Search: config.action_controller.page_cache_extension - GitHub
ページキャッシュの破棄(expire_page)
説明
ページキャッシュを破棄する
使い方
expire_page キャッシュキー
アクションキャッシュ(caches_action)
適応バージョン
- 1.0.0
- 1.1.0
- 1.1.1
- 1.1.6
- 1.2.0
- 1.2.6
- 2.0.0
- 2.0.1
- 2.0.3
- 2.1.0
- 2.2.1
- 2.3.2
- 2.3.8
- 3.0.0
- 3.0.5
- 3.0.7
- 3.0.9
- 3.1.0
- 3.2.3
- 3.2.8
- 3.2.13
- 4.0.0
使い方
caches_action アクション名... [, オプション]
テーブル
| オプション | 説明 |
|---|---|
| :if | 条件式がtrueのときキャッシュを利用 |
| :unless | 条件式がfalseのときキャッシュを利用 |
| :cache_path | キー情報 |
| :expires_in | 有効期限 |
例
基本形(オプションなし)
caches_action :index, :show, :feed
ソースコード検索
アクションキャッシュの破棄(expire_action)
説明
アクションキャッシュを破棄する
使い方
expire_action キャッシュキー
フラグメントキャッシュ(cache)
適応バージョン
- 1.0.0
- 1.1.0
- 1.1.1
- 1.1.6
- 1.2.0
- 1.2.6
- 2.0.0
- 2.0.1
- 2.0.3
- 2.1.0
- 2.2.1
- 2.3.2
- 2.3.8
- 3.0.0
- 3.0.5
- 3.0.7
- 3.0.9
- 3.1.0
- 3.2.3
- 3.2.8
- 3.2.13
- 4.0.0
説明
ページ全体ではなく、ページの一部をキャッシュするときに使う
使い方
<% cache([キャッシュキー]) do %>
キャッシュ
<% end %>
オプション
| オプション | 説明 |
|---|---|
| :skip_digest |
例
<% cache [ project, current_user ] do %>
<b>All the topics on this project</b>
<%= render project.topics %>
<% end %>
ソースコード
ソースコードを見る
# File /usr/local/lib/ruby/gems/2.0.0/gems/actionpack-4.0.0.beta1/lib/action_view/helpers/cache_helper.rb, line 113
def cache(name = {}, options = nil, &block)
if controller.perform_caching
safe_concat(fragment_for(cache_fragment_name(name, options), options, &block))
else
yield
end
nil
endソースコード検索
フラグメントキャッシュを破棄(expire_fragment)
説明
フラグメントキャッシュを破棄する
使い方
expire_fragment キャッシュキー
クッキーを保存(cookies)
説明
クッキーとは、クライアント側に保存されるファイルのこと
使い方
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 }
ソースコード検索
永続化クッキー(cookies.permanent)
説明
永続化クッキー(有効期間が20年に設定されたクッキー)を設定する。
使い方
cookies.permanent[クッキー名] = 値
例
署名付きクッキー(cookies.signed)
説明
署名付きクッキーを設定する。
使い方
cookies.signed[クッキー名] = 値
例
クッキーを削除(cookies.delete)
説明
クッキーを削除
使い方
cookies.delete(:クッキー名 [, 対象のドメイン、またはパス])
例
クッキーを削除
cookies.delete :user_name
ソースコード検索
セッションについて(session)
セッション(session)とは
ページ間で変数の内容を維持するための仕組み
特徴
- セッション情報は、Railsのデフォルトの設定ではクッキーに保存
- 4KB以上のデータは保存できない
セッションに保存
適応バージョン
- 1.0.0
- 1.1.0
- 1.1.1
- 1.1.6
- 1.2.0
- 1.2.6
- 2.0.0
- 2.0.1
- 2.0.3
- 2.1.0
- 2.2.1
- 2.3.2
- 2.3.8
- 3.0.0
- 3.0.5
- 3.0.7
- 3.0.9
- 3.1.0
- 3.2.3
- 3.2.8
- 3.2.13
- 4.0.0
説明
セッションに情報を保存する
使い方
session[キー] = 値
例
基本形(オプションなし)
session[:user_name] = 'test'
@userがnilかfalseだったら、@userにUser.find(session[:user_id])を代入
@user ||= User.find(session[:user_id])
ソースコード検索
セッション情報を削除(reset_session)
適応バージョン
- 1.0.0
- 1.1.0
- 1.1.1
- 1.1.6
- 1.2.0
- 1.2.6
- 2.0.0
- 2.0.1
- 2.0.3
- 2.1.0
- 2.2.1
- 2.3.2
- 2.3.8
- 3.0.0
- 3.0.5
- 3.0.7
- 3.0.9
- 3.1.0
- 3.2.3
- 3.2.8
- 3.2.13
- 4.0.0
説明
セッション情報を削除する
使い方
すべて
reset_session
一部
session[キー] = nil
例
すべてのセッション情報を削除
reset_session
user_nameのセッション情報を削除
session[:user_name] = nil
ソースコード検索
現在のセッション情報を取得(session.session_id)
適応バージョン
- 1.0.0
- 1.1.0
- 1.1.1
- 1.1.6
- 1.2.0
- 1.2.6
- 2.0.0
- 2.0.1
- 2.0.3
- 2.1.0
- 2.2.1
- 2.3.2
- 2.3.8
- 3.0.0
- 3.0.5
- 3.0.7
- 3.0.9
- 3.1.0
- 3.2.3
- 3.2.8
- 3.2.13
- 4.0.0
使い方
session.session_id