This plugin is available through the Rails plugin mechanism as
‘action_cache’
From the README:
=== Action Cache update
This is a drop in replacement for the Rails Action Cache. When this
plugin is
installed, the new behavior will take effect without any further
configuration.
All documentation for the Rails Action Cache is still relevant.
=== Features
-
Store cache entries as YAML streams so the Response headers from the
originalresponse can be returned with cache hits
-
Add a ‘last-modified’ header to the response to get the client to use
aget-if-modified request
-
If the client has the response we have cached, don’t send it again,
send a‘304 Not Modified’ response to reduce data on the wire
-
Fix a bug in the original Rails code where responses other than ‘200
OK’ are cached(since the headers aren’t cached in the original, all the clients
would getis an empty ‘200 OK’ response from subsequent requests)
-
Allow clients to provide their own implementation of the cache key
for the actions, e.g.- environment.rb
ActionController::Caching::Actions::ActionCacheFilter.fragment_key =
Proc.new {|controller|
“AC:#{controller.request.host_with_port}:#{controller.params.sort.join(’
:’).gsub(’ ', ‘-’)}”
}
-
Allow an action to specify a Time To Live for the cached item. Set
‘response.time_to_live’ tothe number of seconds before this cached item will be expired. If
not set, the default settingof ‘never’ will be used and the item will only be expired by using
the regular action cacheexpiry mechanism.
def my_action
@response.time_to_live = 10.minutes ...
end
=== Performance
If a client requests an action whose output hasn’t changed since their
last request, the returning of
a 304 response instead of the full response greatly reduces the load on
the server.