Quiconque a écrit un ASP légèrement plus grand sait que la session est vraiment utile. Mais savez-vous vraiment comment fonctionne la session? Peut-être qu'après avoir compris, vous n'oserez plus jamais utiliser cet objet d'amour-haine. Bien que la méthode de passage aux alternatives soit un peu gênante, après des considérations à long terme, je dois le faire.
Tout d'abord, parlons des avantages de la session, qui peuvent être utilisés pour enregistrer les variables de données détenues par le client et ne disparaîtront pas dans la plage de temps. Il s'agit vraiment d'une fonction importante, en particulier celles qui doivent être utilisées par les systèmes avec des membres. Par exemple, le compte de connexion du membre, le temps, le statut et de nombreuses données en temps réel enregistrées (comme le système d'achat enregistre les produits du panier de l'utilisateur), ces informations sont les besoins privés de chaque utilisateur, et généralement le développeur utilise Traitement d'enregistrement de la session.
Cependant, la session dans ASP est composée de cookies et le serveur transmet toutes les informations enregistrées dans la session au navigateur de l'utilisateur sous forme de cookies. Habituellement, les navigateurs enregistrent ces cookies. Il s'agit du principe de fonctionnement de la session. reconfigurer la mémoire, etc. Action initiale. Maintenant, vous pouvez penser: "Je dois utiliser cette fonction, je dois donc sacrifier un peu." Cependant, cet article parle de session. cours il y a des alternatives.
L'application est également bonne pour enregistrer et traiter les données temporaires. L'application n'est pas comme la session, qui ne transmet pas les données à l'utilisateur et attend la prochaine fois pour la lire en ligne.
Étant donné que les objets d'application sont publics, la première chose qui doit être faite est de planifier un domaine commun pour chaque utilisateur, afin que chaque utilisateur ait sa propre zone pour enregistrer des données pour atteindre l'objectif d'une session de simulation. Il y a deux façons de le faire maintenant:
1. Initialiser et allouer l'espace mémoire de l'utilisateur à l'avance lorsque le serveur est activé. . Cependant, il y a une limitation. De petits programmes tels que des salles de chat.
2. Cette méthode doit être considérée comme plus appropriée pour les grandes applications. Le but de ces deux solutions de session simulées est de réduire la consommation de ressources de session, mais après tout, il est toujours irremplaçable.
■ Premier plan
Nous commençons d'abord la mise en œuvre de la première solution.
L'initialisation est terminée, mais comment l'utiliser? Nous avons juste besoin de modifier les informations stockées dans la session, telles que le compte et le temps de connexion, dans l'objet d'application que nous avons créé, où l'utilisateur se connecte:
| 'À la recherche d'un espace inutilisé Pour i = 1 à l'application (clientmax) Si application (user_status_ & i) = 0 alors 'Numéro temporaire de l'utilisateur Session (index) = i 'verrouillage Application application.lock 'Réglé sur l'état d'occasion Application (user_status_ & i) = 1 'mettre des données variables Application (user_account_ & i) = compte Application (user_logtime_ & i) = maintenant () 'Déverrouillé Application.unlock Sortir pour Terminer si Suivant |
Pour obtenir les données variables pertinentes de l'utilisateur, c'est comme ce qui suit:
| Réponse.write (application (user_account_ & session (index)) |
Vous pouvez constater que vous ne voulez pas utiliser la session? Alors pourquoi la session existe-t-elle dans le code d'origine ci-dessus? Comme mentionné précédemment, cette alternative ne peut pas remplacer la session. À ce moment, nous devons compter sur la session. . Cette méthode a quelques améliorations, mais elle suffit pour les petites applications.
■ Deuxième plan
En ce qui concerne la solution précédente, vous pouvez également penser que notre numéro personnalisé utilise la session pour enregistrer. C'est vrai, peu importe si nous voulons l'utiliser ou non, le serveur aidera automatiquement chaque utilisateur à affecter un nombre, et ce numéro ne sera pas répété. Cette numérotation est une action que la session fera certainement, nous pouvons donc l'utiliser pour remplacer le programme de numérotation que nous écrivons nous-mêmes, ce qui permet d'économiser un autre effort et a même une plus grande expansion. Mais en gros, la première solution ci-dessus est toujours utile, comme les salles de chat qui limitent le nombre de personnes et d'autres petites applications.
Si un site Web avec des centaines, des milliers ou même des dizaines de milliers de personnes sur un site Web à chaque seconde, cela ne fonctionnera certainement pas s'il utilise la solution précédente. Supposons que vous fixiez la limite supérieure de 10 000 personnes, une fois le serveur activé, cela vous aidera à couper 10 000 zones pour préparer 10 000 utilisateurs. Il ne représente que 320 000 K (320 Mo). Peu, je pense que 512 Mo seront suffisants. Par conséquent, la solution consiste à configurer dynamiquement l'espace variable de l'utilisateur et à couper une zone lorsqu'un utilisateur est en ligne avec le serveur, il n'est donc pas nécessaire de configurer à l'avance une mémoire énorme.
La deuxième solution est relativement simple à faire.
| «Verrouiller ApplicationApplication.lock» Put la variable Data Application (user_account_ & session.SessionId) = compte Application (user_logtime_ & session.SessionId) = maintenant () 'déverrouiller l'application de déverrouillage.unlock |
Pour obtenir les données variables pertinentes de l'utilisateur, c'est comme ce qui suit:
| Réponse.write (application (user_account_ & session.SessionId)) |
Dans le passé, j'ai lu de nombreux livres que ladite session était très difficile à manger des ressources, alors essayez de ne pas les utiliser, mais je dois encore les utiliser quand ils le doivent, et les livres n'ont pas enseigné une solution plus appropriée. Maintenant, lorsque vous comprenez comment remplacer la session, faites-en bon usage! Peut-être que les problèmes d'efficacité qui sont toujours troublés peuvent être beaucoup améliorés!