forked from rtomayko/rack-cache
-
Notifications
You must be signed in to change notification settings - Fork 0
/
TODO
31 lines (30 loc) · 1.61 KB
/
TODO
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
## Backlog
- Move breakers.rb configuration file into rack-contrib as a middleware
component.
- Sample apps: Rack, Rails, Sinatra, Merb, etc.
- Use Bacon instead of test/spec
- Work with both memcache and memcached gems (memcached hasn't built on MacOS
for some time now).
- Fast path pass processing. We do a lot more than necessary just to determine
that the response should be passed through untouched.
- Don't purge/remove cache entries when invalidating. The entries should be
marked as stale and be forced revalidated on the next request instead of
being removed entirely.
- Add missing Expires header if we have a max-age.
- Purge/invalidate everything
- Invalidate at the URI of the Location or Content-Location response header
on POST, PUT, or DELETE that results in a redirect.
- 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.