2008-11-18 5 views
7

Je sais que le consensus général pour les informations comme les articles de panier est de les stocker en session. Mais qu'en est-il des objets appartenant à un utilisateur qui peuvent être modifiés par d'autres utilisateurs? Dites, par exemple, un site semblable à eBay. Si vous stockez les «éléments» d'un utilisateur dans la session, qui contiennent le montant de l'enchère actuelle et qu'un autre utilisateur entre et place une enchère sur cet élément, vous devez mettre à jour l'élément dans la base de données ainsi que l'élément en session, n'est-ce pas? Dans ce type de cas, les seules options à stocker dans la session et à actualiser chaque fois qu'une action d'un autre utilisateur affecte les valeurs de session d'une personne ou stockent tout dans la base de données et la récupèrent à chaque fois (par exemple avoir les offres affichées sur le panneau latéral de chaque page).Stockage panier dans la session

Répondre

6

Je voudrais stocker tout dans la base de données et le récupérer à chaque fois. Selon la volatilité de la mise en cache des données pendant quelques secondes peut être dans l'ordre. Le plus gros problème est de garder les deux cohérents.

Je pense que ce n'est pas aussi cher que vous pensez pour récupérer les données à chaque fois. Les bases de données sont très efficaces si vous cherchez en fonction d'une clé. Je pécherais du côté de la simplicité (stocker dans la base de données et récupérer) jusqu'à ce que les problèmes de performance apparaissent sous charge (c.-à-d. Dans le test de charge). Si le nombre de tentatives est faible, vous pouvez utiliser le cache d'applications (sauf si vous avez plusieurs processus/serveurs de travail) et vous assurer que la base de données et le cache restent synchronisés.

4

Je le stocke personnellement dans une base de données. Premièrement, parce que vos données y sont beaucoup plus sûres et qu'il est plus facile de les partager dans le cas où vous avez besoin d'une ferme Web. En outre, vous n'avez pas besoin d'avoir les données sur chaque page. Juste quand l'utilisateur va au panier. L'autre avantage de le stocker dans la base de données est que vous pouvez analyser plus tard, les choses que les gens ajoutent au panier, mais pas réellement l'achat.