123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126 |
- Rack::Cache
- ===========
- Rack::Cache is suitable as a quick drop-in component to enable HTTP caching for
- Rack-based applications that produce freshness (Expires, Cache-Control) and/or
- validation (Last-Modified, ETag) information:
- * Standards-based (RFC 2616)
- * Freshness/expiration based caching
- * Validation (If-Modified-Since / If-None-Match)
- * Vary support
- * Cache-Control: public, private, max-age, s-maxage, must-revalidate,
- and proxy-revalidate.
- * Portable: 100% Ruby / works with any Rack-enabled framework
- * Disk, memcached, and heap memory storage backends
- For more information about Rack::Cache features and usage, see:
- http://tomayko.com/src/rack-cache/
- Rack::Cache is not overly optimized for performance. The main goal of the
- project is to provide a portable, easy-to-configure, and standards-based
- caching solution for small to medium sized deployments. More sophisticated /
- high-performance caching systems (e.g., Varnish, Squid, httpd/mod-cache) may be
- more appropriate for large deployments with significant throughput requirements.
- Installation
- ------------
- From Gem:
- $ sudo gem install rack-cache
- With a local working copy:
- $ git clone git://github.com/rtomayko/rack-cache.git
- $ rake package && sudo rake install
- Basic Usage
- -----------
- Rack::Cache is implemented as a piece of Rack middleware and can be used with
- any Rack-based application. If your application includes a rackup (`.ru`) file
- or uses Rack::Builder to construct the application pipeline, simply require
- and use as follows:
- require 'rack/cache'
- use Rack::Cache,
- :metastore => 'file:/var/cache/rack/meta',
- :entitystore => 'file:/var/cache/rack/body',
- :verbose => true
- run app
- Assuming you've designed your backend application to take advantage of HTTP's
- caching features, no further code or configuration is required for basic
- caching.
- Using with Rails
- ----------------
- Add this to your `config/environment.rb`:
- config.middleware.use Rack::Cache,
- :verbose => true,
- :metastore => 'file:/var/cache/rack/meta',
- :entitystore => 'file:/var/cache/rack/body'
- You should now see `Rack::Cache` listed in the middleware pipeline:
- rake middleware
- See the following for more information:
- http://snippets.aktagon.com/snippets/302
- Using with Dalli
- ----------------
- Dalli is a high performance memcached client for Ruby.
- More information at: https://github.com/mperham/dalli
- require 'dalli'
- require 'rack/cache'
- use Rack::Cache,
- :verbose => true,
- :metastore => "memcached://localhost:11211/meta",
- :entitystore => "memcached://localhost:11211/body"
- run app
- Links
- -----
- Documentation:
- http://tomayko.com/src/rack-cache/
- Mailing List:
- http://groups.google.com/group/rack-cache
- GitHub:
- http://github.com/rtomayko/rack-cache/
- License
- -------
- Copyright (c) 2008 Ryan Tomayko <http://tomayko.com/about>
- Permission is hereby granted, free of charge, to any person obtaining a copy
- of this software and associated documentation files (the "Software"), to
- deal in the Software without restriction, including without limitation the
- rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
- sell copies of the Software, and to permit persons to whom the Software is
- furnished to do so, subject to the following conditions:
- The above copyright notice and this permission notice shall be included in
- all copies or substantial portions of the Software.
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
- IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|