Ce que j'ai écrit auparavant : Cet article est toujours lié à ASP. Je pense que tous ceux qui jouent à ASP ressentent cela lorsqu'il y a plus de 50 000 éléments de données - tout comme le réseau musical, les 10 derniers éléments doivent être appelés et affichés. la page. Le problème est que lorsque plusieurs utilisateurs ouvrent la page pour y accéder, chaque utilisateur doit lire la base de données une fois à chaque fois, ce qui réduit sans aucun doute l'efficacité, si les données peuvent être enregistrées en mémoire puis lues. , Cela accélère sans aucun doute le processus. Le soi-disant cache consiste en fait à ouvrir un espace dans la mémoire pour sauvegarder les données. En utilisant le cache, vous n'avez pas besoin d'accéder fréquemment aux données que vous enregistrez sur le disque dur, car nous l'espérons. que chaque utilisateur peut voir ces données. L'effet est le même. Pensez à utiliser l'objet application car il s'agit d'un objet commun à tous les visiteurs. Les informations stockées et les événements définis peuvent être utilisés par le visiteur propriétaire. objet intégré APPLICATION. Concernant l'application, il y a 2 Une méthode [lock and unlock], deux collections [content et staticobjects], deux événements [application_onstart et application_end], la variable d'application ne disparaîtra pas car l'utilisateur quitte. il attendra que le site soit fermé et que le programme soit désinstallé., Pour cette raison, vous devez être particulièrement prudent lorsque vous l'utilisez !, Sinon, cela occupera de la mémoire. Vérifiez les informations pertinentes. C'est à peu près comme ça. Nous écrivons les données dans une application personnalisée. L'idée générale est de lire et d'actualiser à l'heure spécifiée.
Créez d'abord une base de données simple, écrivez une fonction pour la lire. , et écrivez-le dans une variable temp temp :
Ce qui suit est un fragment de référence :
Fonction DisplayRecords()
'Cette fonction attribuait à l'origine la valeur enregistrée Dim sql, conn, rs à une variable temp
'Instruction SQL conditionnelle sql = "SELECT id, [szd_f], [szd_t] FROM admin"
'Ouvrir la connexion à la base de données Set conn = Server.CreateObject("ADODB.Connection")
conn.Open "DRIVER={Pilote Microsoft Access (*.mdb)}; DBQ="&Server.MapPath("db.mdb")
Définir rs = Server.CreateObject("ADODB.Recordset")
rs.Open SQL, conn, 1, 3
'Lorsque les données correspondant à l'instruction sq l n'ont pas été affichées, If Not rs.EOF Then
'Attribuer Dim temp à la variable temp
temp = "<table width=""90%"" align=""center"""
temp = temp & " border=""1"" bordercolor=""argent"""
temp = temp & " cellpacing=""2"" cellpadding=""0"">"
temp = temp & "<tr bgcolor=""#CCDDEE""><td width=""5%"""
temp = temp & ">ID</td><td>Opération</td>"
temp = temp & "<td>Numéro</td></tr>"
Bien que ce ne soit pas rs.EOF
temp = temp & "<tr><td bgcolor=""#CCDDEE"">"
temp = temp & rs("ID") & "</td><td>" & rs("szd_f")
temp = temp & "</td><td>" & rs("szd_t")
temp = temp & "</td></tr>"
rs.MoveNext
Wende
temp = temp & "</table>"
'Une fois l'affectation temporaire terminée, renvoyez-la à la fonction DisplayRecords = temp
Autre
DisplayRecords = "Données non disponibles."
Fin si
'Libérer la mémoire rs.Fermer
conn.Fermer
Setrs=Rien
Définir la connexion = Rien
Fonction de fin
ok, la fonction ci-dessus a été transformée, et c'est DisplayRecords lorsqu'elle est appelée.
C'est ici que l'application entre en jeu :
'Cette fonction consiste à écrire dans le cache Function DisplayCachedRecords(Secs)
Dim retVal, datVal, temp1
'Secs est le temps nécessaire pour actualiser les données à chaque fois, retVal est les données, datVal est le temps restant retVal = Application("cache_demo") 'Obtenir la valeur de l'application datVal = Application("cache_demo_date") 'Obtenir la valeur de l'application ' Jugez la valeur de datVal , c'est-à-dire pour calculer si le temps s'est écoulé Si datVal = "" Alors.
'Si elle est vide, la valeur datVal est l'heure actuelle en secondes plus l'heure définie par secs datVal = DateAdd("s",Secs,Now)
Fin si
'temp1 est la deuxième différence entre l'heure actuelle et datVal temp1 = DateDiff("s", Now, datVal)
'Si retVal est déjà la valeur de retour de la fonction ci-dessus et que le temps est supérieur à 0
Si temp1 > 0 Et retVal <> "" Alors
'Cette fonction renvoie le nombre d'enregistrements DisplayCachedRecords = retVal
Response.Write "<b><font color=""green"">Utiliser le cache pour lire les données"
Response.Write " ... (" & temp1 & " secondes restantes)</font></b>"
Réponse.Écrivez "<br><br>"
Autre
Si 'retVal est vide, attribuez la valeur de DisplayRecords à la variable temp2
Faible temp2
temp2 = AfficherEnregistrements()
'Enregistrer dans l'application.------------------>Focus Application.Lock
Application("cache_demo") = temp2
Application("cache_demo_date") = DateAdd("s",Secs,Now)
Application.UnLock
DisplayCachedRecords = temp2
' L'heure passée du cache enregistré est écrite ici avec désinvolture, et la différence par rapport au nombre total de secondes est :
Response.Write "<b><font color=""red"">Actualiser l'affichage du cache..."
Réponse.Écrivez "</font></b><br><br>"
Fin si
Fonction de fin
%>
L'explication est complète.
Voici la
méthode d'appel de code complète non commentée : <%=DisplayCachedRecords(20)%>
Écrit à la fin : Si vous estimez que la mémoire de votre serveur n'est pas assez grande, n'utilisez pas une grande quantité de cache.