IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Symfony PHP Discussion :

pas de cache navigateur sur image retourné par BinaryFileResponse


Sujet :

Symfony PHP

  1. #1
    Membre éprouvé Avatar de Jérémy Lefevre
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juin 2004
    Messages
    898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 898
    Points : 969
    Points
    969
    Par défaut pas de cache navigateur sur image retourné par BinaryFileResponse
    Bonjour à tous,
    Alors déjà la base, je suis sur Symfony 3.4, php 7.2.
    voila mon problème, dans un de mes controleurs je renvoie une image en chargeant le fichier via BinaryFileResponse .

    Voila le code qui me permet de faire ca
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    $response = new BinaryFileResponse($src); // src contient le chemin vers une image d'un dossier sur mon serveur inaccessible au grand public$response->setAutoEtag(true);
    $response->headers->set('Content-Type', 'image/jpeg');
    $response->setCache(array(
        'max_age'       => 315360000,
    ));
    return $response;
    

    Jusque la tout fonctionne très bien le fichier se charge bien lorsque j'appel l'adresse dans mon navigateur.

    Cependant j'aimerai que mon navigateur met en cache cette image pour ne pas la recharger à chaque foisNom : Capture d’écran 2019-04-12 à 18.16.26.png
Affichages : 202
Taille : 44,9 Ko

    et c'est la ou je bloque j'ai un peu tout essayé mais rien a faire... si quelqu'un un a une piste ??

    Merci d'avance,
    jerem
    Rien ne se perd, rien ne se crée, tout se transforme

    ------- -------

  2. #2
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2012
    Messages
    631
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2012
    Messages : 631
    Points : 1 220
    Points
    1 220
    Par défaut
    Bonjour,

    je pense que c'est max-age mais je n'en suis pas certain à 100%. Ce dont je suis sûr c'est que tu peux appeler la méthode setMaxAge(int $value) sur l'objet response pour fixer la durée du cache:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $response = new BinaryFileResponse($src); // src contient le chemin vers une image d'un dossier sur mon serveur inaccessible au grand public$response->setAutoEtag(true);
    $response->headers->set('Content-Type', 'image/jpeg');
    $response->setMaxAge(120);// 120s
    return $response;

  3. #3
    Membre éprouvé Avatar de Jérémy Lefevre
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juin 2004
    Messages
    898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 898
    Points : 969
    Points
    969
    Par défaut
    C'est justement la ou ca coince car j'ai deja essayé ca mais ca n'a pas vraiment d'influence sur le header...
    Nom : Capture d’écran 2019-04-12 à 19.24.39.png
Affichages : 439
Taille : 288,4 Ko
    Rien ne se perd, rien ne se crée, tout se transforme

    ------- -------

  4. #4
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2012
    Messages
    631
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2012
    Messages : 631
    Points : 1 220
    Points
    1 220
    Par défaut
    je viens de tester avec le code précédent ça marche. en rafraîchissant mon navigateur j’obtiens bien le code reponse 304.

    Même avec la nouvelle méthode( file() ) de streaming de fichiers ça marche aussi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    public function displayFile(Request $request, string $src): Response
    {
         return $this->file($src)->setMaxAge(120);
     
    }
    le cache de ton navigateur ne serait pas désactivé par hasard?

  5. #5
    Membre éprouvé Avatar de Jérémy Lefevre
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juin 2004
    Messages
    898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 898
    Points : 969
    Points
    969
    Par défaut
    justement non et j'ai la même chose depuis n'importe quel navigateur... je vais voir si il n'y a pas quelque chose dans la configuration de symfony qui surcharge le max age. Tu es sur quelle version de symfony?
    Rien ne se perd, rien ne se crée, tout se transforme

    ------- -------

  6. #6
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2012
    Messages
    631
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2012
    Messages : 631
    Points : 1 220
    Points
    1 220
    Par défaut
    Citation Envoyé par Jérémy Lefevre Voir le message
    justement non et j'ai la même chose depuis n'importe quel navigateur... je vais voir si il n'y a pas quelque chose dans la configuration de symfony qui surcharge le max age. Tu es sur quelle version de symfony?
    j'ai la version 4.2 qui théoriquement n'est pas fondamentalement différent de la 3.4

    Concernant le problème de cache pour la 3.4, plusieurs développeurs ont reporté ce problème sur cette page github.

    Sur stackoverflow il y a un contributeur qui a initialisé son cache au sein d'un Listener.

Discussions similaires

  1. Réponses: 0
    Dernier message: 26/04/2014, 10h23
  2. IIOException sur image générées par ImageMagick
    Par goony dans le forum Graphisme
    Réponses: 3
    Dernier message: 28/09/2010, 12h21
  3. Réponses: 5
    Dernier message: 29/08/2008, 22h25
  4. question sur pointeur retourné par malloc()
    Par gauguin dans le forum C
    Réponses: 8
    Dernier message: 21/02/2007, 18h34
  5. gerer lien sur image par css : possible ou pas?
    Par michka999 dans le forum Mise en page CSS
    Réponses: 6
    Dernier message: 17/08/2006, 16h01

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo