class Rack::AcornCache::CacheController
Attributes
app[R]
request[R]
Public Class Methods
new(request, app)
click to toggle source
# File lib/acorn_cache/cache_controller.rb, line 3 def initialize(request, app) @request = request @app = app end
Public Instance Methods
response()
click to toggle source
# File lib/acorn_cache/cache_controller.rb, line 8 def response if request.no_cache? server_response = get_response_from_server else cached_response = check_for_cached_response if cached_response.must_be_revalidated? request.update_conditional_headers!(cached_response) server_response = get_response_from_server elsif !cached_response.fresh_for_request?(request) server_response = get_response_from_server end end CacheMaintenance .new(request.cache_key, server_response, cached_response) .update_cache .response end
Private Instance Methods
check_for_cached_response()
click to toggle source
# File lib/acorn_cache/cache_controller.rb, line 48 def check_for_cached_response CacheReader.read(request.cache_key) || NullCachedResponse.new end
get_response_from_server()
click to toggle source
# File lib/acorn_cache/cache_controller.rb, line 32 def get_response_from_server begin status, headers, body = @app.call(request.env) rescue => e raise AppException.new(e) end server_response = ServerResponse.new(status, headers, body) if request.page_rule? server_response.update_with_page_rules!(request.page_rule) else server_response end end