Bonjour,
Dans Play il n'y a plus de session. Donc, pour la gestion d'un panier par exemple, je me demandais quelle était la manière de procéder ?
Comment feriez-vous ?
Bonjour,
Dans Play il n'y a plus de session. Donc, pour la gestion d'un panier par exemple, je me demandais quelle était la manière de procéder ?
Comment feriez-vous ?
Avec play tu as toujours des sessions, Cf la doc :
http://www.playframework.org/documen...ollers#session
Pour garder des infos en cache côté serveur, tu as aussi un cache :
http://www.playframework.org/documentation/1.1RC1/cache
a+
Bonjour.
Je rajouterais même qu'il est préférable d'utiliser les caches pour garder des informations :
Play est basé sur une architecture RESTFUL et par ce fait il est important de respecter les principes RESTFUL pour en tirer tout les bénéfices.
Un des principes est la non sauvegarde d'information sur le serveur (Stateless) et d'utiliser les caches comme moyen de sauvegarde. L'avantage est de permettre de gérer plus facilement le serveur hebergeant, par exemple quand tu rajoute un répartiteur de charge (pas d'informations sauvegarder sur un serveur particulier), ou quand tu souhaite améliorer les performances de réponse, etc.
Sinon niveau cache Play utilise des cookies encryptés qui sont invalidés si tu les modifies donc niveau sécurité c'est plus que pas mal.
Ouaip!
Tu stoque l'identifiant unique de ton client en session, et les données éphémères ou longues à calculer en cache avec cet identifiant en clef.
Et en bdd les données à conserver durablement.
Merci pour vos réponses.
Cependant je ne suis pas convaincu.
Il est bien précisé dans la doc que le cache ne garantit pas de récupérer les données que l'on a mises dedans ("when you put data in a cache, you can’t expect that data to remain there forever"). Donc je pourrais perdre toutes les infos du panier.
Pour le scope session, il est aussi indiqué qu'il est très limité (4k), donc je ne peux pas compter dessus non plus.
Non ?
Ca veut pas dire que le cache est pas fiable, mais que dans le cache les données ont une date d'expiration bien précise.
Ce qui est le cas, je pense, d'un panier qu'il faut bien supprimer si l'utilisateur revient pas au bout d'un certain temps.
Et 4k, c'est bien assez pour stoker des identifiants,souvent c'est des Long (32bits). Donc on pourrait stoker 128 Long.
sur le forum play, il y a un post qui ressemble à ta question :
http://groups.google.com/group/play-...ect+in+session
justement il s'agit d'un panier sur un site marchand. L'utilisation du cache ou de la base de données est recommandé. Pour le cache, effectivement l'indication dans la doc me laisse perplexe. Tu peux éventuellement poster à la suite pour demander une précision sur ce point.
a+
Très bien le lien vers le groupe google
Le thread suivant répond aussi assez bien à la problématique : http://groups.google.com/group/play-...3189d6b8b9dcd6
Donc je suis bien convaincu par vos réponses
Pour terminer la dessus, quand tu rajoutes une info dans le cache, tu peux spécifier sa durée de validité.
Vu sur le site de Play!
Cache.set("products", products, "30mn");
Si tu veux vraiment persister une données il faut effectivement utiliser la base mais je ne pense pas que ce soit forcément ton cas.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager