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