メニュー

リファレンス

HTMLタグ逆引き

検索

クッキー・キャッシュ

キャッシュの設定

説明

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

ソースコード検索

ページキャッシュの破棄(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
:httponlyHTTPクッキーを有効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)とは

ページ間で変数の内容を維持するための仕組み

特徴

セッションに保存

適応バージョン

  • 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

ソースコード検索