@@ -76,10 +76,8 @@ public function handleRequest(RequestInterface $request, callable $next, callabl
76
76
}
77
77
78
78
// Add headers to ask the server if this cache is still valid
79
- if ($ mod = $ this ->getModifiedAt ($ cacheItem )) {
80
- $ mod = new \DateTime ('@ ' .$ mod );
81
- $ mod ->setTimezone (new \DateTimeZone ('GMT ' ));
82
- $ request = $ request ->withHeader ('If-Modified-Since ' , sprintf ('%s GMT ' , $ mod ->format ('l, d-M-y H:i:s ' )));
79
+ if ($ modifiedSinceValue = $ this ->getModifiedSinceHeaderValue ($ cacheItem )) {
80
+ $ request = $ request ->withHeader ('If-Modified-Since ' , $ modifiedSinceValue );
83
81
}
84
82
85
83
if ($ etag = $ this ->getETag ($ cacheItem )) {
@@ -117,13 +115,14 @@ public function handleRequest(RequestInterface $request, callable $next, callabl
117
115
}
118
116
119
117
$ maxAge = $ this ->getMaxAge ($ response );
118
+ $ currentTime = time ();
120
119
$ cacheItem
121
120
->expiresAfter ($ this ->config ['cache_lifetime ' ] + $ maxAge )
122
121
->set ([
123
122
'response ' => $ response ,
124
123
'body ' => $ body ,
125
- 'expiresAt ' => time () + $ maxAge ,
126
- 'createdAt ' => time () ,
124
+ 'expiresAt ' => $ currentTime + $ maxAge ,
125
+ 'createdAt ' => $ currentTime ,
127
126
'etag ' => $ response ->getHeader ('ETag ' ),
128
127
]);
129
128
$ this ->pool ->save ($ cacheItem );
@@ -232,7 +231,7 @@ private function getMaxAge(ResponseInterface $response)
232
231
private function configureOptions (OptionsResolver $ resolver )
233
232
{
234
233
$ resolver ->setDefaults ([
235
- 'cache_lifetime ' => 2592000 , // 30 days
234
+ 'cache_lifetime ' => 86400 * 30 , // 30 days
236
235
'default_ttl ' => null ,
237
236
'respect_cache_headers ' => true ,
238
237
'hash_algo ' => 'sha1 ' ,
@@ -261,20 +260,23 @@ private function createResponseFromCacheItem(CacheItemInterface $cacheItem)
261
260
}
262
261
263
262
/**
264
- * Get the timestamp when the cached response was stored .
263
+ * Get the value of the "If-Modified-Since" header .
265
264
*
266
265
* @param CacheItemInterface $cacheItem
267
266
*
268
- * @return int |null
267
+ * @return string |null
269
268
*/
270
- private function getModifiedAt (CacheItemInterface $ cacheItem )
269
+ private function getModifiedSinceHeaderValue (CacheItemInterface $ cacheItem )
271
270
{
272
271
$ data = $ cacheItem ->get ();
273
272
if (!isset ($ data ['createdAt ' ])) {
274
273
return ;
275
274
}
276
275
277
- return $ data ['createdAt ' ];
276
+ $ modified = new \DateTime ('@ ' .$ data ['createdAt ' ]);
277
+ $ modified ->setTimezone (new \DateTimeZone ('GMT ' ));
278
+
279
+ return sprintf ('%s GMT ' , $ modified ->format ('l, d-M-y H:i:s ' ));
278
280
}
279
281
280
282
/**
0 commit comments