@@ -91,7 +91,11 @@ def store(request, response, entity_store)
9191 headers . delete 'Age'
9292
9393 entries . unshift [ stored_env , headers ]
94- write key , entries
94+ if request . env [ 'rack-cache.use_native_ttl' ] && response . fresh?
95+ write key , entries , response . ttl
96+ else
97+ write key , entries
98+ end
9599 key
96100 end
97101
@@ -165,7 +169,7 @@ def read(key)
165169 # Store an Array of request/response pairs for the given key. Concrete
166170 # implementations should not attempt to filter or concatenate the
167171 # list in any way.
168- def write ( key , negotiations )
172+ def write ( key , negotiations , ttl = nil )
169173 raise NotImplementedError
170174 end
171175
@@ -198,7 +202,7 @@ def read(key)
198202 end
199203 end
200204
201- def write ( key , entries )
205+ def write ( key , entries , ttl = nil )
202206 @hash [ key ] = Marshal . dump ( entries )
203207 end
204208
@@ -236,7 +240,7 @@ def read(key)
236240 [ ]
237241 end
238242
239- def write ( key , entries )
243+ def write ( key , entries , ttl = nil )
240244 tries = 0
241245 begin
242246 path = key_path ( key )
@@ -335,9 +339,10 @@ def read(key)
335339 cache . get ( key ) || [ ]
336340 end
337341
338- def write ( key , entries )
342+ # Default TTL to zero, interpreted as "don't expire" by Memcached.
343+ def write ( key , entries , ttl = 0 )
339344 key = hexdigest ( key )
340- cache . set ( key , entries )
345+ cache . set ( key , entries , ttl )
341346 end
342347
343348 def purge ( key )
@@ -369,9 +374,10 @@ def read(key)
369374 [ ]
370375 end
371376
372- def write ( key , entries )
377+ # Default TTL to zero, interpreted as "don't expire" by Memcached.
378+ def write ( key , entries , ttl = 0 )
373379 key = hexdigest ( key )
374- cache . set ( key , entries )
380+ cache . set ( key , entries , ttl )
375381 end
376382
377383 def purge ( key )
0 commit comments