File tree Expand file tree Collapse file tree 2 files changed +20
-4
lines changed
lib/internal/Magento/Framework/App Expand file tree Collapse file tree 2 files changed +20
-4
lines changed Original file line number Diff line number Diff line change @@ -137,9 +137,7 @@ public function process(\Magento\Framework\App\Response\Http $response)
137
137
if (preg_match ('/public.*s-maxage=(\d+)/ ' , $ response ->getHeader ('Cache-Control ' )->getFieldValue (), $ matches )) {
138
138
$ maxAge = $ matches [1 ];
139
139
$ response ->setNoCacheHeaders ();
140
- if (($ response ->getHttpResponseCode () == 200 || $ response ->getHttpResponseCode () == 404 )
141
- && ($ this ->request ->isGet () || $ this ->request ->isHead ())
142
- ) {
140
+ if ($ this ->shouldCacheResponse ($ response )) {
143
141
$ tagsHeader = $ response ->getHeader ('X-Magento-Tags ' );
144
142
$ tags = $ tagsHeader ? explode (', ' , $ tagsHeader ->getFieldValue ()) : [];
145
143
@@ -218,4 +216,22 @@ private function getCache()
218
216
}
219
217
return $ this ->fullPageCache ;
220
218
}
219
+
220
+ /**
221
+ * Check if the response should be cached. For GET requests both 200 and 404 responses should be
222
+ * cached. For HEAD requests only 200 responses should be cached.
223
+ *
224
+ * @param \Magento\Framework\App\Response\Http $response
225
+ * @return bool
226
+ */
227
+ private function shouldCacheResponse (\Magento \Framework \App \Response \Http $ response )
228
+ {
229
+ $ responseCode = $ response ->getHttpResponseCode ();
230
+ if ($ this ->request ->isGet ()) {
231
+ return $ responseCode == 200 || $ responseCode == 404 ;
232
+ } elseif ($ this ->request ->isHead ()) {
233
+ return $ responseCode == 200 ;
234
+ }
235
+ return false ;
236
+ }
221
237
}
Original file line number Diff line number Diff line change @@ -248,7 +248,7 @@ public function testProcessSaveCacheDataProvider()
248
248
{
249
249
return [
250
250
[200 , [3 , 4 , 5 ]],
251
- [404 , [4 , 5 , 6 ]]
251
+ [404 , [3 , 4 , 5 ]]
252
252
];
253
253
}
254
254
You can’t perform that action at this time.
0 commit comments