module ActionDispatch::Http::Cache::Response
Constants
- CACHE_CONTROL
- DEFAULT_CACHE_CONTROL
- ETAG
- LAST_MODIFIED
- MUST_REVALIDATE
- NO_CACHE
- PRIVATE
- PUBLIC
Attributes
cache_control[R]
etag[R]
etag?[R]
Public Instance Methods
etag=(etag)
click to toggle source
# File lib/action_dispatch/http/cache.rb, line 63 def etag=(etag) key = ActiveSupport::Cache.expand_cache_key(etag) @etag = self[ETAG] = %Q("#{Digest::MD5.hexdigest(key)}") end
last_modified()
click to toggle source
# File lib/action_dispatch/http/cache.rb, line 49 def last_modified if last = headers[LAST_MODIFIED] Time.httpdate(last) end end
last_modified=(utc_time)
click to toggle source
# File lib/action_dispatch/http/cache.rb, line 59 def last_modified=(utc_time) headers[LAST_MODIFIED] = utc_time.httpdate end
last_modified?()
click to toggle source
# File lib/action_dispatch/http/cache.rb, line 55 def last_modified? headers.include?(LAST_MODIFIED) end
Private Instance Methods
handle_conditional_get!()
click to toggle source
# File lib/action_dispatch/http/cache.rb, line 86 def handle_conditional_get! if etag? || last_modified? || !@cache_control.empty? set_conditional_cache_control! end end
prepare_cache_control!()
click to toggle source
# File lib/action_dispatch/http/cache.rb, line 74 def prepare_cache_control! @cache_control = {} @etag = self[ETAG] if cache_control = self[CACHE_CONTROL] cache_control.split(/,\s*/).each do |segment| first, last = segment.split("=") @cache_control[first.to_sym] = last || true end end end
set_conditional_cache_control!()
click to toggle source
# File lib/action_dispatch/http/cache.rb, line 98 def set_conditional_cache_control! return if self[CACHE_CONTROL].present? control = @cache_control if control.empty? headers[CACHE_CONTROL] = DEFAULT_CACHE_CONTROL elsif control[:no_cache] headers[CACHE_CONTROL] = NO_CACHE else extras = control[:extras] max_age = control[:max_age] options = [] options << "max-age=#{max_age.to_i}" if max_age options << (control[:public] ? PUBLIC : PRIVATE) options << MUST_REVALIDATE if control[:must_revalidate] options.concat(extras) if extras headers[CACHE_CONTROL] = options.join(", ") end end