|
一、何谓ASP缓存/为什么要缓存 四、实例分析 其实实现方法特别的简单,大家只要看看下面这个简单的例子就明白了。 DisplayBooks.ASP文件: <%@ LANGUAGE=javascript %>
<html> <body> <form method=post> 书籍分类; <%= getBooksListBox() %> <p> <input type=submit> <% function getBooksListBox(){ BooksListBox = Application("BooksListBox") if (BooksListBox != null) return BooksListBox; crlf = String.fromCharCode(13, 10) BooksListBox = "<select name=Books>" + crlf; QL = "Select * FROM Books orDER BY Name"; cnnBooks = Server.CreateObject("ADODB.Connection"); cnnBooks.Open("Books", "Admin",""); rstBooks = cnnBooks.Execute(SQL); fldBookName = rstBooks("BookName"); while (!rstBooks.EOF){ BooksListBox = BooksListBox + " <option>" + fldBookName + "" + crlf; rstBooks.MoveNext(); } BooksListBox = BooksListBox + "" Application("BooksListBox") = BooksListBox return BooksListBox; } %> 很简单吧,其实就是用了很简单的Application技术,而且就一句话的不同: Application("BooksListBox") = BooksListBox
你可以验证一下你就会发现服务器上的请求数量会降低不少的。这种情况尤其适合与那些更新不是很频繁的网站内容,例如你一天(或则很长时间)只更新一次。 文件GLOBAL.ASA: <!--METADATA TYPE="TypeLib" FILE="C:\Program Files\Common Files\system\ado\msado15.dll"-->
<SCRIPT LANGUAGE=VBScript RUNAT="Server"> Sub Application_OnStart SQL = "Select UserName, Password FROM UserInfo" cnnUsers = "DSN=User" Set rsUsers = Server.CreateObject("ADODB.Recordset") ‘注意下面这两句话,就是用来实现那个叫可用的断开连接的ADO技术 rsUsers.CursorLocation = adUseClient rsUsers.Open SQL, cnnAdvWorks, adOpenStatic, AdLockReadOnly ‘ 断开RecordSet的和数据库的连接 rsUsers.ActiveConnection = Nothing Set Application("rsUsers") = rsUsers End Sub 文件Users.ASP: <%
‘Clone方法使得每个用户拥有自己的一个RecordSet集合 Set yourUsers = Application("rsUsers").Clone Set UserName = yourUsers("UserName" Set Password = yourUsers("Password") Do Until yourUsers.EOF %> 用户姓名:<%= UserName %> 用户密码:<%= Password %> <% yourUsers.MoveNext Loop %> 五、动网三大人物写的缓存类 '********************************************** class Cache private sub class_initialize() private sub class_terminate() public property get blEmpty public property get valid public property let name(str) public property let expires(tm) public sub add(var,expire) public property get value public sub makeEmpty() public function equal(var2) 木鸟 类例子 vbs Cache类 ‘ 属性valid,是否可用,取值前判断 set myCache=New Cache 迷城浪子写的 Rem ==================使用说明==================== Class Cls_Cache Private Sub Class_Initialize() Private Sub makeEmpty(SetName) Public Property Let Name(ByVal vNewValue) Public Property Let Value(ByVal vNewValue) Public Property Get Value() Public Function ObjIsEmpty() Public Sub DelCahe(MyCaheName) End Class 迷城浪子 类例子 Set WydCache=New Cls_Cache WydCache.DelCahe("缓存名") ‘删除缓存 ‘======================== Class JayCache ‘======================== Public PREFIX Private Sub Class_Initialize() Private Sub Class_Terminate ‘ 设置变量 ‘ 取出变量 计数器++ ‘ 检查缓存对象是否存在 ‘ 得到计数器数值 ‘ 设置计数器时间 ‘ 得到计数器时间 ‘ 重置计数器 ‘ 删除某以缓存 ‘ 清空所有缓存 End Class Set Wyd=New JayCache |
留言区(共0条)