Laravel réponse-tête Cache-Control contenant toujours "no-cache"
Pour quelque raison Laravel semble être la manipulation de l'en-tête "Cache-Control" sur le tout dernier moment. Je veux faire de la mise en cache du navigateur possible.
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;
}
}
Même lorsque j'utilise un après-middleware " et de mourir et de vidage de la réponse, je reçois toujours ce qui semble être le droit de 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
}
La méthode $response->isCacheable() als renvoie la valeur true. Mais quand je reçois la réponse, Firebug affiche les éléments suivants:
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
J'utilise xampp, mais sur ce même serveur quand je viens de charger une page html (pas de Laravel/PHP), il n'envoie pas ces-tête Cache-Control.
Comment puis-je réaliser que le navigateur n'a pas reçu l'-tête Cache-Control "no-store, no-cache" lorsque j'ai mis la dernière modification et expire en-têtes?
Merci!
OriginalL'auteur Riesjart | 2015-09-02
Vous devez vous connecter pour publier un commentaire.
Je crois que votre fantôme-tête cache-control sont à venir à partir de PHP.
http://php.net/manual/en/function.session-cache-limiter.php
lorsque php.ini a session.cache_limiter définie sur désactiver (par défaut), PHP définit les en-têtes suivants:
J'ai été aux prises avec cache-control dans laravel sur apache pour quelques jours: j'ai trouvé que le réglage de l'en-tête dans laravel simplement apposé sur les en-têtes définis par php.ini. J'ai essayé de configurer certaines règles de apache.conf afin de permettre la mise en cache de .js et .les fichiers css qui étaient accessibles via laravel tout en empêchant la mise en cache de requêtes .php les fichiers, mais ces règles ont échoué en tant qu'apache va voir n'importe quel fichier servi via laravel comme une .fichier php (car il est accessible via index.php).
À la fin, je me suis installé pour le réglage de la session.cache_limiter " en php.ini (en sautant ainsi PHPs la manipulation des en-têtes de cache), et en ajoutant ce qui suit à filters.php en application:après()
OriginalL'auteur Geoff Salmon
Bien que je ne connais pas votre configuration exacte, je suppose que cela est dû à votre configuration d'Apache, en tant que valeurs d'en-tête peut être écrasé.
Jetez un oeil à travers tous les fichiers de configuration d'Apache et de regarder dehors pour les lignes commençant par
Header Set Cache-Control
, par exempleHeader Set Cache-Control "no-store, no-cache, must-revalidate, post-check=0, pre-check=0"
Probablement une telle directive est définie à seulement affecter vos fichiers PHP, ce qui serait la raison pour laquelle les autres fichiers sont livrés avec d'autres en-têtes.
Cependant: attention lors de la modification de cette. Peut-être que vous voulez de ce jeu pour des raisons de sécurité. Envisager la des problèmes avec la mise en cache dynamique, le contenu authentifié par procuration (lien pour les détails)
OriginalL'auteur Jan D