Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Newer
Older
100644 192 lines (147 sloc) 8.618 kB
0e1afef @rtomayko update CHANGES for 1.0
authored
1 ## 1.0 / December 2010
2
3 * Rack::Cache is 1.0 and will now maintain semantic versioning <http://semver.org/>
4
5 * Add Dalli memcache client support and removed support for the unmaintained
6 memcache-client library. You will need to move your apps to Dalli before
7 upgrading rack-cache to 1.0.
8
5dc55f2 @rtomayko update CHANGES for 0.5.1 - 0.5.3 releases
authored
9 ## 0.5.3 / September 2010
10
11 * A matching If-Modified-Since is ignored if an If-None-Match is also provided
12 and doesn't match. This is in line with RFC 2616.
13
14 * Converts string status codes to integers before returns to workaround bad
15 behaving rack middleware and apps.
16
17 * Misc doc clean up.
18
19 ## 0.5.2 / September 2009
20
21 * Exceptions raised from the metastore are not fatal. This makes a lot of
22 sense in most cases because its okay for the cache to be down - it
23 shouldn't blow up your app.
24
25 ## 0.5.1 / June 2009
05d2336 @rtomayko Advanced memcached config, including server clusters
authored
26
27 * Added support for memcached clusters and other advanced
28 configuration provided by the memcache-client and memcached
29 libraries. The "metastore" and "entitystore" options can now be
30 set to a MemCache object or Memcached object:
31
32 memcache = MemCache.new(['127.1.1.1', '127.1.1.2'], :namespace => "/foo")
33 use Rack::Cache,
34 :metastore => memcache,
35 :entitystore => memcache
36
37 * Fix "memcached://" metastore URL handling. The "memcached" variation
38 blew up, the "memcache" version was fine.
39
c5308be @rtomayko 0.5 release
authored
40 ## 0.5.0 / May 2009
dc350d8 @rtomayko Use memcache-client lib unless memcached already required
authored
41
42 * Added meta and entity store implementations based on the
43 memcache-client library. These are the default unless the memcached
44 library has already been required.
45
d268152 @rtomayko Disable client reload and revalidate requests by default
authored
46 * The "allow_reload" and "allow_revalidate" options now default to
47 false instead of true. This means we break with RFC 2616 out of
48 the box but this is the expected configuration in a huge majority
49 of gateway cache scenarios. See the docs on configuration
50 options for more information on these options:
51 http://tomayko.com/src/rack-cache/configuration
52
f1b0fcc @rtomayko Note the addition of GAE memcache storage backends in CHANGES
authored
53 * Added Google AppEngine memcache entity store and metastore
54 implementations. To use GAE's memcache with rack-cache, set the
55 "metastore" and "entitystore" options as follows:
56
57 use Rack::Cache,
58 :metastore => 'gae://cache-meta',
59 :entitystore => 'gae://cache-body'
60
61 The 'cache-meta' and 'cache-body' parts are memcache namespace
62 prefixes and should be set to different values.
63
522dc31 @rtomayko 0.4 release
authored
64 ## 0.4.0 / March 2009
b9ad873 @nakajima Added :cache_key option - customizable cache key logic
nakajima authored
65
6f5b43d @rtomayko Ruby 1.9.1 / Rack 1.0 compatibility fixes
authored
66 * Ruby 1.9.1 / Rack 1.0 compatible.
67
5a48ad5 @rtomayko Update CHANGES and TODO files for invalidation
authored
68 * Invalidate cache entries that match the request URL on non-GET/HEAD
69 requests. i.e., POST, PUT, DELETE cause matching cache entries to
e4a7b58 Invalidate instead of purge on non-GET/POST requests
Daniel Mendler authored
70 be invalidated. The cache entry is validated with the backend using
71 a conditional GET the next time it's requested.
5a48ad5 @rtomayko Update CHANGES and TODO files for invalidation
authored
72
ce15dc7 @rtomayko Implement Cache-Control max-age request directive
authored
73 * Implement "Cache-Control: max-age=N" request directive by forcing
74 validation when the max-age provided exceeds the age of the cache
129d982 @rtomayko allow_revalidate option; set false to ignore max-age directives in re…
authored
75 entry. This can be disabled by setting the "allow_revalidate" option to
76 false.
ce15dc7 @rtomayko Implement Cache-Control max-age request directive
authored
77
0e53ba4 @rtomayko Implement no-cache request directive properly by forcing a reload
authored
78 * Properly implement "Cache-Control: no-cache" request directive by
79 performing a full reload. RFC 2616 states that when "no-cache" is
80 present in the request, the cache MUST NOT serve a stored response even
81 after successful validation. This is slightly different from the
82 "no-cache" directive in responses, which indicates that the cache must
83 first validate its entry with the origin. Previously, we implemented
84 "no-cache" on requests by passing so no new cache entry would be stored
85 based on the response. Now we treat it as a forced miss and enter the
481a0f0 @rtomayko allow_reload option; set false to ignore no-cache directives in requests
authored
86 response into the cache if it's cacheable. This can be disabled by
87 setting the "allow_reload" option to false.
0e53ba4 @rtomayko Implement no-cache request directive properly by forcing a reload
authored
88
ce62307 @rtomayko Conform to RFC 2616 regarding 'Pragma: no-cache' request header
authored
89 * Assume identical semantics for the "Pragma: no-cache" request header
90 as the "Cache-Control: no-cache" directive described above.
91
322d722 @rtomayko Add X-Rack-Cache trace header and simplify logging
authored
92 * Less crazy logging. When the verbose option is set, a single log entry
93 is written with a comma separated list of trace events. For example, if
94 the cache was stale but validated, the following log entry would be
95 written: "cache: stale, valid, store". When the verbose option is false,
96 no logging occurs.
97
98 * Added "X-Rack-Cache" response header with the same comma separated trace
99 value as described above. This gives some visibility into how the cache
100 processed the request.
101
b9ad873 @nakajima Added :cache_key option - customizable cache key logic
nakajima authored
102 * Add support for canonicalized cache keys, as well as custom cache key
103 generators, which are specified in the options as :cache_key as either
104 any object that has a call() or as a block. Cache key generators get
105 passed a request object and return a cache key string.
106
d9ddbeb @rtomayko use s-maxage in preference to max-age cache control directive
authored
107 ## 0.3.0 / December 2008
01e96ed @rtomayko fix various issues with 304 response generation
authored
108
dcc66ab @rtomayko proper support for private/public Cache-Control directives
authored
109 * Add support for public and private cache control directives. Responses
110 marked as explicitly public are cached even when the request includes
111 an Authorization or Cookie header. Responses marked as explicitly private
112 are considered uncacheable.
113
114 * Added a "private_headers" option that dictates which request headers
115 trigger default "private" cache control processing. By default, the
116 Cookie and Authorization headers are included. Headers may be added or
117 removed as necessary to change the default private logic.
118
e89cc29 @rtomayko respect must-revalidate cache control directives
authored
119 * Adhere to must-revalidate/proxy-revalidate cache control directives by
120 not assigning the default_ttl to responses that don't include freshness
121 information. This should let us begin using default_ttl more liberally
122 since we can control it using the must-revalidate/proxy-revalidate directives.
dcc66ab @rtomayko proper support for private/public Cache-Control directives
authored
123
d9ddbeb @rtomayko use s-maxage in preference to max-age cache control directive
authored
124 * Use the s-maxage Cache-Control value in preference to max-age when
125 present. The ttl= method now sets the s-maxage value instead of max-age.
126 Code that used ttl= to control freshness at the client needs to change
127 to set the max-age directive explicitly.
dcc66ab @rtomayko proper support for private/public Cache-Control directives
authored
128
d9ddbeb @rtomayko use s-maxage in preference to max-age cache control directive
authored
129 * Enable support for X-Sendfile middleware by responding to #to_path on
1ae4fc5 @rtomayko disk entity store produces a body that responds to #to_file
authored
130 bodies served from disk storage. Adding the Rack::Sendfile component
131 upstream from Rack::Cache will result in cached bodies being served
132 directly by the web server (instead of being read in Ruby).
dcc66ab @rtomayko proper support for private/public Cache-Control directives
authored
133
a98e7c4 @rtomayko fix meta-store hit, entity-store miss bug
authored
134 * BUG: MetaStore hits but EntityStore misses. This would 500 previously; now
135 we detect it and act as if the MetaStore missed as well.
dcc66ab @rtomayko proper support for private/public Cache-Control directives
authored
136
abf4ffc @rtomayko implement #purge for all entity store classes
authored
137 * Implement low level #purge method on all concrete entity store
138 classes -- removes the entity body corresponding to the SHA1 key
139 provided and returns nil.
dcc66ab @rtomayko proper support for private/public Cache-Control directives
authored
140
0739802 @rtomayko basically sane handling of HEAD requests
authored
141 * Basically sane handling of HEAD requests. A HEAD request is never passed
142 through to the backend except when transitioning with pass!. This means
143 that the cache responds to HEAD requests without invoking the backend at
144 all when the cached entry is fresh. When no cache entry exists, or the
145 cached entry is stale and can be validated, the backend is invoked with
d9ddbeb @rtomayko use s-maxage in preference to max-age cache control directive
authored
146 a GET request and the HEAD is handled right before the response
0739802 @rtomayko basically sane handling of HEAD requests
authored
147 is delivered upstream.
dcc66ab @rtomayko proper support for private/public Cache-Control directives
authored
148
ac1c305 @rtomayko fix incorrect Age header values after validation
authored
149 * BUG: The Age response header was not being set properly when a stale
150 entry was validated. This would result in Age values that exceeded
151 the freshness lifetime in responses.
dcc66ab @rtomayko proper support for private/public Cache-Control directives
authored
152
6bcb590 @rtomayko fix accidental header deletion when using heap meta store
authored
153 * BUG: A cached entry in a heap meta store could be unintentionally
154 modified by request processing since the cached objects were being
155 returned directly. The result was typically missing/incorrect header
156 values (e.g., missing Content-Type header). [dkubb]
dcc66ab @rtomayko proper support for private/public Cache-Control directives
authored
157
01e96ed @rtomayko fix various issues with 304 response generation
authored
158 * BUG: 304 responses should not include entity headers (especially
159 Content-Length). This is causing Safari/WebKit weirdness on 304
160 responses.
dcc66ab @rtomayko proper support for private/public Cache-Control directives
authored
161
01e96ed @rtomayko fix various issues with 304 response generation
authored
162 * BUG: The If-None-Match header was being ignored, causing the cache
163 to send 200 responses to matching conditional GET requests.
164
3381abc @rtomayko tidy things up a bit for release
authored
165 ## 0.2.0 / 2008-10-24 / Initial Release
69c764e @rtomayko auxiliary files
authored
166
3381abc @rtomayko tidy things up a bit for release
authored
167 * Document events and transitions in `rack/cache/config/default.rb`
168 * Basic logging support (`trace`, `warn`, `info`, `error` from within Context)
169 * EntityStore: store entity bodies keyed by SHA
170 * MetaStore: store response headers keyed by URL
171 * Last-Modified/ETag validation
172 * Vary support
173 * Implement error! transition
174 * New Rack::Cache::Core
175 * memcached meta and entity store implementations
176 * URI based storage configuration
177 * Read options from Rack env if present (rack-cache.XXX keys)
178 * `object` is now `entry`
179 * Documentation framework and website
180 * Document storage areas and implementations
181 * Document configuration/events
182
183 ## 0.1.0 / 2008-07-21 / Proof of concept (unreleased)
69c764e @rtomayko auxiliary files
authored
184
3381abc @rtomayko tidy things up a bit for release
authored
185 * Basic core with event support
186 * `#import` method for bringing in config files
187 * Freshness based expiration
188 * RFC 2616 If-Modified-Since based validation
189 * A horribly shitty storage back-end (Hash in mem)
190 * Don't cache hop-by-hop headers: Connection, Keep-Alive, Proxy-Authenticate,
191 Proxy-Authorization, TE, Trailers, Transfer-Encoding, Upgrade
Something went wrong with that request. Please try again.