Class: Rack::AcornCache::Request

Inherits:
Request
  • Object
show all
Extended by:
Forwardable
Defined in:
lib/acorn_cache/request.rb

Instance Method Summary collapse

Constructor Details

#initialize(env) ⇒ Request

Returns a new instance of Request.



9
10
11
12
# File 'lib/acorn_cache/request.rb', line 9

def initialize(env)
  super
  @cache_control_header = CacheControlHeader.new(@env["HTTP_CACHE_CONTROL"])
end

Instance Method Details

#cache_keyObject



37
38
39
40
# File 'lib/acorn_cache/request.rb', line 37

def cache_key
  return base_url + path if page_rule? && page_rule[:ignore_query_params]
  url
end

#cacheable?Boolean

Returns:

  • (Boolean)


29
30
31
# File 'lib/acorn_cache/request.rb', line 29

def cacheable?
  get? && (config.cache_everything || page_rule?)
end

#max_age_more_restrictive?(cached_response) ⇒ Boolean

Returns:

  • (Boolean)


24
25
26
27
# File 'lib/acorn_cache/request.rb', line 24

def max_age_more_restrictive?(cached_response)
  cached_response.stale_time_specified? &&
    max_age && max_age < cached_response.time_to_live
end

#page_ruleObject Also known as: page_rule?



33
34
35
# File 'lib/acorn_cache/request.rb', line 33

def page_rule
  @page_rule ||= config.page_rule_for_url(url) if config
end

#update_conditional_headers!(cached_response) ⇒ Object



14
15
16
17
18
19
20
21
22
# File 'lib/acorn_cache/request.rb', line 14

def update_conditional_headers!(cached_response)
  if cached_response.etag_header
    self.if_none_match = cached_response.etag_header
  end

  if cached_response.last_modified_header
    self.if_modified_since = cached_response.last_modified_header
  end
end