Module: Padrino::Cache::Helpers::Fragment
- Includes:
- Helpers::OutputHelpers
- Defined in:
- padrino-cache/lib/padrino-cache/helpers/fragment.rb
Overview
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:
-
a ‘feed’ of some items on a page
-
output fetched (by proxy) from an API on a third-party site
-
parts of your page which are largely static/do not need re-rendering every request
-
any output which is expensive to render
Instance Method Summary collapse
-
#cache(key, opts = {}, &block) ⇒ Object
This helper is used anywhere in your application you would like to associate a fragment to be cached.
Methods included from Helpers::OutputHelpers
#block_is_template?, #capture_html, #concat_content, #concat_safe_content, #content_for, #content_for?, handlers, register, #yield_content
Instance Method Details
#cache(key, opts = {}, &block) ⇒ Object
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:
51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 |
# File 'padrino-cache/lib/padrino-cache/helpers/fragment.rb', line 51 def cache(key, opts = {}, &block) if settings.caching? began_at = Time.now if settings.cache.key?(key.to_s) value = settings.cache[key.to_s] logger.debug "GET Fragment", began_at, key.to_s if defined?(logger) concat_content(value.to_s.html_safe) else value = capture_html(&block) settings.cache.store(key.to_s, value, opts) logger.debug "SET Fragment", began_at, key.to_s if defined?(logger) concat_content(value) end else value = capture_html(&block) concat_content(value) end end |