Per qualche motivo, Laravel sembra manipolare le intestazioni di risposta 'Cache-Control' all'ultimo momento. Voglio rendere possibile il caching del browser.Laravel response Intestazioni Cache-Control che contengono sempre '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;
}
}
Anche quando uso un 'dopo-middleware' e morire e scaricare la risposta, ho ancora ottenere questo, quello che sembra essere giusto per me.
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
}
Il metodo $ response-> isCacheable() restituisce true. Ma quando ricevo la risposta, Firebug mostra la seguente:
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
Io uso XAMPP, ma su questo stesso server quando ho appena caricare una pagina HTML (senza laravel/PHP), non invia questi Cache Controlla le intestazioni.
Come posso ottenere che il browser non riceva le intestazioni di Cache-Control "no-store, no-cache" quando imposto le intestazioni dell'ultimo modificato e scade?
Grazie!
Grazie per la risposta. Mentre stavo cercando di usare il "modo Laravel", non ho provato questo: header ('Cache-Control: max-age ='. Config ('imagecache.lifetime') * 60). ', pubblico'); Ora l'ho fatto e sembra funzionare. Tuttavia, quando cerco di impostarlo nell'oggetto IlluminateResponse, ho ancora la stessa situazione descritta nel post iniziale sopra.Pensi ancora che possa avere a che fare con la configurazione di Apache? – Riesjart