Lors de l'ouverture d'une page asp, la page doit accéder à la base de données, puis afficher le contenu qui répond aux exigences de la page. S'il y a de nombreux enregistrements dans la base de données, la vitesse d'accès à la page sera relativement lente. Les méthodes suivantes peuvent être utilisées pour améliorer la vitesse d'accès à la page.
Premier conseil : Améliorez l’efficacité de l’utilisation de la collection Request
L’accès à une collection ASP pour extraire une valeur est un processus long et gourmand en calcul. Cette opération impliquant une série de recherches dans des collections associées, elle est beaucoup plus lente que l'accès à une variable locale. Par conséquent, si vous envisagez d'utiliser une valeur de la collection Request plusieurs fois sur la page, vous devez envisager de la stocker en tant que variable locale.
Par exemple, écrivez le code sous la forme suivante pour accélérer le traitement du moteur de script :
Copiez le code comme suit :
strTitle=Request.Form("Titre")
strFirstName=Request.Form("Prénom")
strLastName=Request.Form("LastName")
Si Len(strTitle) Alors strTitle=strTitle & " "
Si strFirstName="" Alors strFullName=strTitle & " " & strLastName
Sinon si Len(strFirstName)=1 Alors
strFullName=strTitle & strFirstName & ". " & strLastName
Autre
strFullName=strTitle & strFirstName & " " & strLastName
Fin si
Astuce 2 : Accédez directement à la collection appropriée
Si vous n'avez pas le choix, n'utilisez pas strPage=Request("page") pour obtenir les paramètres, car cela recherchera toute la collection dans l'ordre - QueryString, Form, Cookies, ClientCertificate, ServerVarible jusqu'à ce que la première correspondance soit trouvée. Le nom du valeur. Cela est moins efficace que d'accéder directement à la collection appropriée et n'est pas sûr à moins qu'il n'y ait une garantie absolue que la valeur n'apparaîtra pas dans une autre collection.
Par exemple, vous souhaiterez peut-être rechercher le nom d'un serveur WEB qui répond à la demande d'un client. Pour ce faire, recherchez « SERVER_NAME » dans la collection Request.ServerVarables qui apparaît dans chaque requête. Cependant, si d'autres collections contiennent également des valeurs nommées "SERVER_NAME" (les noms de clés ne sont pas sensibles à la casse), vous obtiendrez des résultats incorrects lors de l'utilisation de Request("server_Name"). En résumé, la collection appropriée doit être accessible directement autant que possible.
Astuce 3 : utilisez la propriété Response.IsClientConnected avant les opérations fastidieuses
L'utilisation de Response.IsClientConnected est un moyen utile d'observer si l'utilisateur est toujours connecté au serveur et charge la page Web créée par ASP. Si l'utilisateur se déconnecte ou arrête le téléchargement, nous n'avons plus à gaspiller les ressources du serveur pour créer la page Web car le contenu du tampon sera supprimé par IIS. Ainsi, pour les pages qui nécessitent beaucoup de temps de calcul ou qui utilisent beaucoup de ressources, il convient de vérifier à chaque étape si le visiteur est hors ligne :
Copiez le code comme suit :
… Code pour créer la première partie de la page
Si Response.IsClientConnected alors
Réponse.Flush
Autre
Réponse.Fin
Fin si
… Code pour créer la partie suivante de la page
Astuce 4 : Optimisez les opérations ADO dans ASP
D'une manière générale, les données constituent le contenu même d'un site WEB. Par conséquent, il est très utile d’optimiser les opérations ADO pour accélérer l’exécution du code ASP :
a. Sélectionnez uniquement les colonnes requises : lors de l'ouverture d'un jeu d'enregistrements ADO, vous ne devez pas utiliser automatiquement le nom de la table (c'est-à-dire SELECT *), sauf si vous devez obtenir toutes les colonnes. L'utilisation de colonnes séparées signifie que la quantité de données envoyées ou récupérées depuis le serveur est réduite. Même si vous devez utiliser toutes les colonnes, nommer chaque colonne individuellement permettra d'obtenir les meilleures performances, car le serveur n'a pas besoin d'interpréter les noms des colonnes.
b. Utilisez des procédures stockées autant que possible. Les procédures stockées sont des programmes précompilés qui contiennent un plan d'exécution préparé, de sorte qu'elles s'exécutent plus rapidement que les instructions SQL.
c. Utilisez des modèles de curseur et de verrouillage appropriés. Si tout ce que vous faites est de lire les données du jeu d'enregistrements et de les afficher à l'écran, utilisez le jeu d'enregistrements par défaut en lecture seule et en avant uniquement. Moins ADO doit effectuer de travail pour conserver les détails des enregistrements et des verrous, plus ses performances sont élevées.
d. Utilisez des variables d'objet. Un moyen sûr d'améliorer les performances lors d'une itération sur un jeu d'enregistrements consiste à utiliser des variables d'objet pour pointer vers les membres de la collection. Par exemple:
Copiez le code comme suit :
Bien que ce ne soit pas RsGc.EOF
Réponse.Écrivez "Nom du projet :" & RsGc("GcMC") & "(Code du projet :" & RsGc("GcCode") & ")"
RsGc.MoveNext
Wende
Cela peut être réécrit comme le code suivant pour accélérer l'exécution :
Copiez le code comme suit :
définir GcMc=RsGc("GcMc")
définir GcCode=RsGc("GcCode")
Bien que non rsGc.EOF Response.Write "Nom du projet :" & GcMc & "(Code du projet : " & GcCode & ")"
RsGc.MoveNext
Wende
Le nouveau code établit une référence à la variable objet, de sorte que la variable objet peut être utilisée à la place de la variable réelle, ce qui signifie que le moteur de script a moins de travail à faire car il y a moins d'index dans la collection.
Astuce 5 : Ne mélangez pas les moteurs de script
Nous savons que VBScript et JScript peuvent être utilisés dans les pages ASP. Mais il est déconseillé d’utiliser JScript et VBScript en même temps sur la même page. Étant donné que le serveur doit instancier et tenter de mettre en cache deux moteurs de script (au lieu d'un), cela augmente dans une certaine mesure la charge sur le système. Par conséquent, pour des raisons de performances, vous ne devez pas mélanger plusieurs moteurs de script sur la même page.