Aus irgendeinem Grund scheint Laravel im letzten Moment die Antwort-Header 'Cache-Control' zu manipulieren. Ich möchte Browser-Caching ermöglichen.Laravel-Antwort Cache-Control-Header enthalten immer 'no-cache'
class TestController extends Controller
{
public function getTest()
{
$response = new \Illuminate\Http\Response('test', 200, array(
'Cache-Control' => 'max-age='.(config('imagecache.lifetime')*60).', public',
'Content-Length' => strlen('test'),
));
$response->setLastModified(new \DateTime('now'));
$response->setExpires(\Carbon\Carbon::now()->addMinutes(config('imagecache.lifetime')));
return $response;
}
}
Selbst wenn ich eine ‚After-Middleware‘ und sterben, und die Antwort Dump, bekomme ich immer noch das, was mir richtig sein scheint.
Response {#625 ▼
+original: "test"
+exception: null
+headers: ResponseHeaderBag {#626 ▼
#computedCacheControl: array:2 [▼
"max-age" => "2592000"
"public" => true
]
#cookies: []
#headerNames: array:5 [▶]
#headers: array:5 [▼
"cache-control" => array:1 [▼
0 => "max-age=2592000, public"
]
"content-length" => array:1 [▼
0 => 4
]
"date" => array:1 [▶]
"last-modified" => array:1 [▼
0 => "Sun, 16 Aug 2015 15:42:08 GMT"
]
"expires" => array:1 [▶]
]
#cacheControl: array:2 [▼
"max-age" => "2592000"
"public" => true
]
}
#content: "test"
#version: "1.0"
#statusCode: 200
#statusText: "OK"
#charset: null
}
Die Methode $ response-> isCacheable() gibt true zurück. Aber wenn ich die Antwort erhalten, zeigt Firebug folgendes:
Cache-Control
no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Connection
Keep-Alive
Content-Type
text/html
Date
Sun, 16 Aug 2015 15:42:08 GMT
Expires
Thu, 19 Nov 1981 08:52:00 GMT
Keep-Alive
timeout=5, max=98
Pragma
no-cache
Server
Apache/2.4.10 (Win32) OpenSSL/1.0.1i PHP/5.5.15
Transfer-Encoding
chunked
X-Powered-By
PHP/5.5.15
Ich benutze xampp, aber auf dem gleichen Server, wenn ich laden Sie einfach eine HTML-Seite (kein Laravel/PHP), ist es nicht diese cache- schicken Steuerkopfzeilen.
Wie kann ich erreichen, dass der Browser die Cache-Control-Header "no-store, no-cache" nicht erhält, wenn ich die zuletzt geänderten und abgelaufenen Header setze?
Danke!
Danke für Ihre Antwort. Da ich versucht habe, den "Laravel-Weg" zu benutzen, habe ich das nicht versucht: header ('Cache-Control: max-age ='. Config ('imagecache.lifetime') * 60). ', Öffentlichkeit'); Jetzt tat ich es und es scheint zu funktionieren. Aber immer noch, wenn ich versuche, es im IlluminateResponse-Objekt zu setzen, habe ich immer noch die gleiche Situation, wie sie im ersten Post oben beschrieben wurde.Denkst du immer noch, dass es vielleicht mit der Apache-Konfiguration zu tun hat? – Riesjart