class ActionDispatch::Session::CacheStore

By default, the :expires_in option of the cache is used.
* expire_after - The length of time a session will be stored before automatically expiring.
* cache - The cache to use. If it is not specified, Rails.cache will be used.
==== Options
of time.
if you don’t store critical data in your sessions and you don’t need them to live for extended periods
A session store that uses an ActiveSupport::Cache::Store to store the sessions. This store is most useful
= Action Dispatch Session CacheStore

def cache_key(id)

Turn the session id into a cache key.
def cache_key(id)
  "_session_id:#{id}"
end

def delete_session(env, sid, options)

Remove a session from the cache.
def delete_session(env, sid, options)
  @cache.delete(cache_key(sid.private_id))
  @cache.delete(cache_key(sid.public_id))
  generate_sid
end

def find_session(env, sid)

Get a session from the cache.
def find_session(env, sid)
  unless sid && (session = get_session_with_fallback(sid))
    sid, session = generate_sid, {}
  end
  [sid, session]
end

def get_session_with_fallback(sid)

def get_session_with_fallback(sid)
  @cache.read(cache_key(sid.private_id)) || @cache.read(cache_key(sid.public_id))
end

def initialize(app, options = {})

def initialize(app, options = {})
  @cache = options[:cache] || Rails.cache
  options[:expire_after] ||= @cache.options[:expires_in]
  super
end

def write_session(env, sid, session, options)

Set a session in the cache.
def write_session(env, sid, session, options)
  key = cache_key(sid.private_id)
  if session
    @cache.write(key, session, expires_in: options[:expire_after])
  else
    @cache.delete(key)
  end
  sid
end