Methods

Included Modules

Files

Padrino::Cache::Helpers::Fragment

Whereas page-level caching, described in the first section of this document, works by grabbing the entire output of a route, fragment caching gives the developer fine-grained control of what gets cached. This type of caching occurs at whatever level you choose.

Possible uses for fragment caching might include:

Public Instance Methods

cache(key, opts = nil, &block) click to toggle source

This helper is used anywhere in your application you would like to associate a fragment to be cached. It can be used in within a route:

@param [String] key

cache key

@param [Hash] opts

cache options, e.g :expires_in

@param [Proc]

Execution result to store in the cache

@example

# Caching a fragment
class MyTweets < Padrino::Application
  enable :caching          # turns on caching mechanism

  controller '/tweets' do
    get :feed, :map => '/:username' do
      username = params[:username]

      @feed = cache( "feed_for_#{username}", :expires_in => 3 ) do
        @tweets = Tweet.all( :username => username )
        render 'partials/feedcontent'
      end

      # Below outputs @feed somewhere in its markup
      render 'feeds/show'
    end
  end
end

@api public

# File lib/padrino-cache/helpers/fragment.rb, line 51
def cache(key, opts = nil, &block)
  if settings.caching?
    began_at = Time.now
    if value = settings.cache.get(key.to_s)
      logger.debug "GET Fragment", began_at, key.to_s if defined?(logger)
      concat_content(value)
    else
      value = capture_html(&block)
      settings.cache.set(key.to_s, value, opts)
      logger.debug "SET Fragment", began_at, key.to_s if defined?(logger)
      concat_content(value)
    end
  end
end

[Validate]

Generated with the Darkfish Rdoc Generator 2.