Sha256: 31565dd545ba8c921fd6b4cd80a5ba9dd85fa9a6191cb20cb80127a063b266c6

Contents?: true

Size: 1.45 KB

Versions: 2

Compression:

Stored size: 1.45 KB

Contents

## 0.4

  - liberal, conservative, sane caching configs
  - Sample apps: Rack, Rails, Sinatra, Merb, etc.
  - busters.rb and no-cache.rb doc and tests
  - Canonicalized URL for cache key:
    - sorts params by key, then value
    - urlencodes /[^ A-Za-z0-9_.-]/ host, path, and param key/value
  - Custom cache keys
  - Cache invalidation on PUT, POST, DELETE.
    - Invalidate at the request URI; or, anything that's "near" the request URI.
    - Invalidate at the URI of the Location or Content-Location response header.

## Backlog

  - Add missing Expires header if we have a max-age.
  - Purge/invalidate specific cache entries
  - Purge/invalidate everything
  - Maximum size of cached entity
  - Last-Modified factor: requests that have a Last-Modified header but no Expires
    header have a TTL assigned based on the last modified age of the response:
    TTL = (Age * Factor), or, 1h  = (10h * 0.1)
  - Run under multiple-threads with an option to lock before making requests
    to the backend. The idea is to be able to serve requests from cache in
    separate threads. This should probably be implemented as a separate
    middleware component.
  - Consider implementing ESI (http://www.w3.org/TR/esi-lang). This should
    probably be implemented as a separate middleware component.
  - Sqlite3 (meta store)
  - stale-while-revalidate
  - Serve cached copies when down (see: stale-if-error) - e.g., database
    connection drops and the cache takes over what it can. 

Version data entries

2 entries across 2 versions & 2 rubygems

Version Path
rtomayko-rack-cache-0.3.0 TODO
rack-cache-0.3.0 TODO