module ActionController::Caching::Pages::ClassMethods
def cache_page(content, path, extension = nil)
Manually cache the +content+ in the key determined by +path+. Example:
def cache_page(content, path, extension = nil) return unless perform_caching path = page_cache_path(path, extension) instrument_page_cache :write_page, path do FileUtils.makedirs(File.dirname(path)) File.open(path, "wb+") { |f| f.write(content) } end end
def caches_page(*actions)
# cache the index action except for JSON requests
caches_page :index
# cache the index action
Usage:
matches the triggering url.
Caches the +actions+ using the page-caching approach that'll store the cache in a path within the page_cache_directory that
def caches_page(*actions) return unless perform_caching options = actions.extract_options! after_filter({:only => actions}.merge(options)) { |c| c.cache_page } end
def expire_page(path)
Expires the page that was cached with the +path+ as a key. Example:
def expire_page(path) return unless perform_caching path = page_cache_path(path) instrument_page_cache :expire_page, path do File.delete(path) if File.exist?(path) end end
def instrument_page_cache(name, path)
def instrument_page_cache(name, path) ActiveSupport::Notifications.instrument("#{name}.action_controller", :path => path){ yield } end
def page_cache_file(path, extension)
def page_cache_file(path, extension) name = (path.empty? || path == "/") ? "/index" : URI.unescape(path.chomp('/')) unless (name.split('/').last || name).include? '.' name << (extension || self.page_cache_extension) end return name end
def page_cache_path(path, extension = nil)
def page_cache_path(path, extension = nil) page_cache_directory + page_cache_file(path, extension) end