Question

Quels sont le faire et les Don'ts sur Cache VS Session VS Cookies?

Par exemple:
J'utilise des variables de session beaucoup et parfois des problèmes dans une réservation application lorsque les utilisateurs commencent à commander des produits, puis aller déjeuner et de revenir quelques heures plus tard et continuer la réservation. Je stocke la réservation à la session jusqu'à ce que l'utilisateur confirme ou annule la réservation, donc je ne pas besoin de parler à la base de données et de gérer les réservations à mi-chemin dans la base de données lorsque les utilisateurs cliquez sur le X dans le navigateur et ne revient jamais.

Dois-je utiliser à la place le cache ou les cookies ou une combinaison pour cela?

(également quand il y a une erreur dans l'application, la session objet se remet à zéro et je reçois plus de problèmes à cause de cela)

Je suis surtout fait programmation de bureau et l'impression que je manque beaucoup de connaissances ici pour que tous ceux qui peuvent développer où utiliser le cache, session, les cookies (ou db) serait apprécié

Modifier D'après les réponses, il semble qu'une combinaison de DB et les cookies est ce que je veux.

  1. Je dois stocker la réservation dans la base de données connectée à une session-id
  2. Rangez la session id dans un cookie (crypté).
  3. Chaque chargement de la page de vérification du cookie et chercher la réservation de la base de données
  4. J'ai une procédure de nettoyage qui fonctionne une fois par semaine qui efface les réservations inachevées.

Je ne peux pas enregistrer la réservation comme un cookie, car l'utilisateur peut modifier les prix et d'autres données sensibles et je devais tout valider (ne peut pas faire confiance aux données).

Ai-je bien compris?

Et merci pour de grandes explications à vous tous!

Était-ce utile?

La solution

La gestion de l'Etat est une chose essentielle à maîtriser en venant à monde du Web à partir d'un point de vue de l'application de bureau.

  • Session est utilisé pour stocker par utilisateur informations pour la session Web en cours sur le serveur . Il prend en charge l'aide d'un serveur de base de données comme le magasin principal.
  • Cookie doit être utilisé pour stocker par utilisateur informations pour la session Web en cours ou persistante des informations sur le client , par conséquent le client a le contrôle sur le contenu d'un cookie.
  • objet Cache est partagée entre les utilisateurs dans une seule application . Son objectif principal est de mettre en cache les données à partir d'une banque de données et ne doit pas être utilisé comme un stockage primaire. Il prend en charge automatique infirmation caractéristiques.
  • objet Application est partagé entre les utilisateurs à stocker à l'échelle d'application État et doivent être utilisés en conséquence.

Si votre application est utilisée par un certain nombre d'utilisateurs non authentifiés, je vous suggère de stocker les données dans un cookie. Si elle nécessite une authentification, vous pouvez stocker les données dans la base de données manuellement ou utiliser les fonctions de gestion de profil ASP.NET.

Autres conseils

Web est par nature modèle déconnecté et aucune des options mentionnées (Session, Application, cache, ...) sont suffisamment fiables. Session de délai d'attente, processus de travail recycle, etc.

Si vous avez vraiment besoin de stocker les progrès des utilisateurs, de manière fiable et par des périodes prolongées, la base de données est votre seule solution. Si vous avez le profil des utilisateurs (si l'utilisateur doit se connecter), il est simple. Dans le cas contraire, générer un identifiant unique, le stocker dans le cookie (ou URL) et de suivre l'utilisateur en fonction de cette identification.

Assurez-vous que l'ID est crypté et chaîne base64 et non pas seulement une valeur numérique.

EDIT:

Après votre explication supplémentaire dans la question initiale et de commentaires de Mehrdad Afshari, une bonne solution pour vous serait d'utiliser la session, mais mettre le stockage à Sql Server au lieu de InProc.

Voici plus de détails et des instructions pour le configurer: http: // msdn.microsoft.com/en-us/library/ms178586.aspx

Avoir à l'esprit que vous aurez toujours les délais d'attente de la session, mais ils survivront pool d'applications recycle, même serveur redémarre.

Si vous avez vraiment besoin d'un stockage permanent, solution personnalisée avec la base de données, comme je l'origine est la seule esquissé solution.

Session est stockée sur le serveur par défaut expirer en 20 minutes (Ceci est réglable). Je le stocker dans un cookie, ou viewstate (si disponible) pour éviter que le délai d'attente.

Si votre état est stocké InProc (la configuration par défaut), puis ayant plus d'un serveur dans une batterie va causer des problèmes vous aussi à moins que vous avez mis en place une sorte de « session collante » qui gardera l'utilisateur sur le même serveur de la batterie pour les appels suivants.

J'essaie d'éviter la session si possible (met une charge supplémentaire et utilisation de la mémoire sur le serveur), et garder viewstate désactivé lorsque possible de maintenir la taille de la page faible. Les cookies sont souvent l'option la plus légère, mais vos utilisateurs pourraient avoir cette désactivé et vous aurez besoin d'un mode de repli qui leur permet encore d'utiliser le site.

Modifier (ajout de clarification basée sur la réponse du demandeur):

Viewstate est stockée dans un champ caché, et est une représentation sérialisée de tous les objets de stockage de Viewstate. Viewstate est automatiquement utilisée pour stocker l'état de la page, mais vous pouvez explicitement ajouter et récupérer vos propres objets et de Viewstate programatically si vous le désirez.

Alors oui, les jeux de données peuvent être stockées dans ViewState.

Vous ne devriez pas utiliser le cache objet aux données de session de cache, le cache est partagé entre tous les utilisateurs. Au lieu de cela, vous pouvez utiliser Asp.Net propriétés Profil pour stocker vos données ou vous pouvez ajouter un gestionnaire d'événements à l'événement Session_End et stocker les données si l'utilisateur quitte l'ordinateur trop longtemps.

La première chose que vous devez savoir! cookies sont utilisés par la session ! Le serveur sait qui est votre utilisateur grâce au cookie qui est échangé entre le client et le serveur à chaque demande (cela fonctionne avec les en-têtes HTTP Set-Cookie et les cookies).

La vraie question est la suivante:

  • Si vous souhaitez stocker les informations de l'utilisateur pendant la navigation, vous devez utiliser session.
  • Si votre client ne supporte pas les cookies, vous pouvez décider de stocker un cookie dans chaque requête, codée dans l'URL (le serveur utilisera l'URL au lieu du cookie pour trouver la bonne session de la demande).

Pensez alors où vous souhaitez enregistrer votre session: Si votre site doit avoir une haute disponibilité et haute performance, vous ne devez pas enregistrer la session à l'intérieur du processus, mais dans une base de données. De cette façon, vous serez en mesure de partager le travail entre plusieurs serveurs Web. Mais vous perdrez dans la simplicité (parce que les objets que vous stockez dans votre session doit être sérialisable), et vous avez encore un voyage de retour entre votre serveur Web et votre serveur de base de données.

  • Cookie est une information partagée entre les pièces coopérantes du logiciel, en stockant des informations spécifiques au client sur l'ordinateur du client et ensuite récupéré pour obtenir les informations d'état.

  • a choisi le terme « cookies » comme « un cookie est un terme informatique bien connu qui est utilisé pour décrire une pièce opaque des données détenues par un intermédiaire ». Le terme opaque ici implique que le contenu est intéressant et pertinent que sur le serveur et non le client. Le navigateur inclut automatiquement le cookie dans toutes ses demandes ultérieures à l'hôte d'origine du cookie. Un cookie a un nom et une valeur, et d'autres attributs tels que le domaine et le chemin, la date d'expiration, numéro de version et les commentaires. plus

Version cookie:

Cookie: cookie-name=cookie-value; Comment=text; Domain=domain-name; Path=path-name; Max-Age=seconds; Version=1; Secure
  • côté serveur données de session peuvent stocker des données volumineuses et un côté client cookies données sont limités en taille envoyé à partir d'un site Web au serveur, les cookies contient habituellement code de référence par cette taille de transfert de la sauvegarde des données. Session se ferme dès la fermeture du navigateur, mais les cookies sont existent plus. Navigateur envoie un ID de session sur le serveur en tant que param URL, cookies, ou même les en-têtes HTTP.

  • Cache est un composant matériel ou logiciel qui stocke les données futures demandes afin de ces données peut être servi plus rapidement; les données stockées dans un cache peut être le résultat d'un calcul plus tôt, ou le double des données stockées ailleurs.

Cookies sont stockés dans le navigateur comme un fichier texte est format.It quantité limite stockée de data.It ne se permet 4kb [4096bytes] .Il ne tient pas la variables multiples dans les cookies.

on peut accéder aux valeurs des cookies dans easily.So il est moins sûr .La setcookie () fonction doit apparaître avant la balise .

Sessions sont stockés dans le serveur side.It est stocké quantité de unlimit de data.It tient la variable multiple dans les sessions. nous ne pouvons pas accéder aux valeurs des cookies dans easily.So il est plus sûr .

Je suis toujours confus entre LocalStorage , SessionStorage et Cookie , mais pas plus.

Il suffit de relier les mots sont auto explicables ce qu'ils supposent à faire.

LocalStorage : stockage local, qu'est-ce que cela veut dire, chose que vous ne savez pas quoi que ce soit sur la technologie, mais par lui-même, vous pouvez deviner. Il est un espace de stockage qui stocke les données localement.

que ce qu'il est.

Il stocke les données dans le navigateur without any expiration until user clear it par le code JavaScript ou le cache du navigateur Effacer.

Session de stockage : Il semble que ce stocke également des données, mais lié à une session alors comment elle est différente de localStorage

?

La principale différence est votre session storage data will be deleted once the session is finish or browser tab is closed or the browser is closed .

Vous pouvez juste essayer dans la console du navigateur en réglant

localStorage.setItem('name' , 'alex')
sessionStorage.setItem('session','seesion value')

puis onglet fermer et ouvrir à nouveau, vous pouvez toujours trouver des données localStorage mais pas de données sessionStorage.

Cookie : Donc, ce qui est totalement différent des deux ci-dessus. Un cookie généralement utilisé dans le but côté serveur.

  • Stocke les données qui doit être renvoyé au serveur avec la suite demandes.
  • Son expiration varie en fonction du type et de l'expiration la durée peut être réglée de chaque côté serveur ou client-side (normalement du côté serveur).
  • Les cookies sont principalement pour la lecture côté serveur (peut également être lu sur côté client), localStorage et peut sessionStorage ne doit être lue côté client.
  • La taille doit être inférieure à 4 Ko.
  • Les cookies peuvent il faut sécuriser en réglant le drapeau httpOnly comme vrai pour ce cookie. Cela empêche l'accès côté client à ce cookie
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top