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