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 :

Cache HTTP et utilisateur anonyme/connecté


Sujet :

Symfony PHP

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2011
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 33
    Points : 19
    Points
    19
    Par défaut Cache HTTP et utilisateur anonyme/connecté
    Bonjour à tous,

    J'essaye de mettre en place un cache http basique pour mon appli sur OVH mutualisé.
    Voici la page explicative de la documentation :
    http://symfony.com/fr/doc/master/book/http_cache.html

    Pour l'instant, je ne me lance pas dans l'ESI. Je veux juste que ma page d'accueil soit cachée 10min.

    Donc je code ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     $response = $this->render('MyBundle:Main:index.html.twig');
    $response->setETag(md5($response->getContent()));
    $response->setPublic();
    $response->setMaxAge(600);
    $response->setSharedMaxAge(600);
    $response->isNotModified($this->getRequest());
    Ca fonctionne nickel.

    Le problème est le suivant :
    En haut de ma page d'accueil, j'ai un bouton "Connexion - Inscription" pour les anonymes et "Bienvenue machin - Mon compte - Déconnexion" pour les membres.

    Bien évidemment, avec mon code, si on arrive sur mon site et que l'on se connecte, que se passe-t-il ?
    Et bien la page d'accueil affiche "Connexion - Inscription" au lieu de "Bienvenue machin" comme sur les autres pages du site.
    Logique puisque le premier affichage a été caché.

    Depuis tout à l'heure, je me bats avec cette magnifique documentation, pourtant en français et mon environnement. Je n'arrive à rien

    Question 1 : comment annuler le cache lorsqu'un utilisateur est connecté ?

    Question 2 : faut-il annuler le cache lorsqu'un utilisateur est connecté ou peut-on (faut-il/est-ce conseillé de) générer un cache pour lui ?

    Question 3 : help !

    Merci beaucoup

  2. #2
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    725
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juin 2011
    Messages : 725
    Points : 1 050
    Points
    1 050
    Par défaut
    Bonjour,

    Pour l'instant, je ne me lance pas dans l'ESI.
    ce serait pourtant la meilleure solution, c'est justement fait pour résoudre le genre de problème que tu évoques.

    Sinon as tu essayé quelque chose comme cela:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     $response = $this->render('MyBundle:Main:index.html.twig');
    $response->setETag(md5($response->getContent()));
    if($this->get('security.context')->isGranted('ROLE_USER')){
    //si un utilisateur est connecté, la réponse en cache est privée
       $response->setPrivate();
    }else{
    //sinon tout le monde a accés à la réponse en cache
       $response->setPublic();
    }
    $response->setMaxAge(600);
    $response->setSharedMaxAge(600);
    $response->isNotModified($this->getRequest());

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2011
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 33
    Points : 19
    Points
    19
    Par défaut
    Merci Arno mais cela ne fonctionne pas.
    Ma page d'accueil n'affiche toujours pas le nom de l'utilisateur.

    Je vais me lancer dans l'ESI alors mais il faut que je fasse un controller que pour ma toolbar avec un render c'est ça ?
    Parce que jusqu'à présent, ce n'était que du twig avec un {{app.user}} et les liens qui vont bien.

  4. #4
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    725
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juin 2011
    Messages : 725
    Points : 1 050
    Points
    1 050
    Par défaut
    Aprés réflexion, ça ne peut effectivement pas marcher car la réponse est déjà en cache lorsque l'utilisateur est connecté, donc l'appli continue de renvoyer le cache partagé.

    sinon oui il faut créer une action spécifique pour la partie de la page liés à l'utilisateur, et inclure cette sous-réponse via le tag twig "render", enfin tout est dans la doc...

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2011
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 33
    Points : 19
    Points
    19
    Par défaut
    Yep, c'est exactement ça, ou presque.
    La doc est en français, j'ai de la chance. Mais niveau exemple concret, ils sont avares

    Ma page d'accueil affiche :
    A/ "Connexion" ou "Bienvenue machin" (selon utilisateur connecté)
    B/ Les trois derniers articles
    C/ Les trucs statiques (logo, slogan, etc.)

    C/ ==> Je peux cacher sur 24h
    A/ ==> Je fais un twig render ESI sans cache
    B/ ==> Je fais un twig render ESI avec cache 24h -- que je voudrais supprimer lors de l'ajout d'un nouvel article (action D/)

    Comment faire ? Dur dur avec la doc

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2011
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 33
    Points : 19
    Points
    19
    Par défaut
    Quelqu'un a déjà utilisé le cache ?

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2011
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 33
    Points : 19
    Points
    19
    Par défaut
    Toujours le même problème
    Cela m'étonne à être le seul à y être confronté

Discussions similaires

  1. afficher des informations différentes aux utilisateurs anonymes et connectés
    Par Kirikou12 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 6
    Dernier message: 09/05/2012, 11h26
  2. Réponses: 20
    Dernier message: 02/03/2007, 14h48
  3. [Tableaux] utilisateur (dé)connecté ?
    Par Hayabusa dans le forum Langage
    Réponses: 2
    Dernier message: 28/10/2006, 20h29
  4. [Active Directory] Savoir si un utilisateur est connecté
    Par bl4ckwolf dans le forum Windows Serveur
    Réponses: 1
    Dernier message: 15/08/2006, 16h14
  5. Savoir si l'utilisateur est connecté au Web
    Par Spartan03 dans le forum C++
    Réponses: 14
    Dernier message: 27/07/2006, 21h17

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