2017-07-05 1 views
1

J'ai une application Symfony 3 qui est déployée sur une instance AWS Beanstalk avec une instance EC2 derrière un équilibreur de charge d'application puisque j'utilise HTTP/2. J'ai trouvé un problème étrange avec l'équilibreur de charge cependant. Je sais qu'il ne devrait pas placer des en-têtes de mise en cache, mais pour une certaine raison il le fait. Sur mon machine d'essai, utilisant le même code, j'ai cet en-tête envoyé avec la réponse:Paramètre AWS ALB En-tête max-age privé Cache-Control

cache-control:private 

Mais sur le serveur AWS cet en-tête est envoyé à la place:

cache-control:private, max-age=86400 

bREAK ma demande puisque je ne veux pas le navigateur du client pour mettre en cache la réponse puisque ma demande ne devrait être accès par les utilisateurs connectés. La seule façon dont j'ai trouvé pour résoudre ce problème est en appelant cette fonction dans mon fichier app.php avant d'envoyer la réponse au client:

$response->headers->removeCacheControlDirective('private'); 

Cela ajoute la directive no-cache à l'en-tête cache-control qui empêche le navigateur de mettre en cache la réponse, mais Je ne suis pas sûr si c'est la bonne approche puisque l'application AWS envoie toujours la directive max-age et je ne suis pas sûr que la directive no-cache écrase les autres dans tous les navigateurs.

Après le correctif ce que je reçois de mon serveur:

cache-control:no-cache, private 

Et ce AWS:

cache-control:no-cache, private, max-age=86400 

TL/DR: Alors, ce que je vous demande, est-il possible supprimer la directive max-age à partir de ce que le serveur AWS envoie?

Merci, j'ai utilisé StackOverflow depuis de nombreuses années mais c'est la première fois que je pose des questions puisque je n'ai pas trouvé la réponse à ça n'importe où.

Répondre

0

J'ai finalement trouvé la réponse et il se trouve qu'il n'a rien à voir avec AWS ... La raison est que dans mon fichier .htaccess j'avais une directive mod_expires avec cette ligne là-dessus:

ExpiresByType text/html "access plus 1 days" 

qui a ajouté que la tête de cache à toutes les pages html ... et pour une raison quelconque, ni mon Apache sous Linux ou sous Windows a mod_expires sur mais le serveur web AWS a ... il