| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1366 人关注过本帖
标题:[转载]ASP缓存技术
只看楼主 加入收藏
conn
Rank: 2
等 级:新手上路
威 望:5
帖 子:420
专家分:0
注 册:2005-11-27
收藏
 问题点数:0 回复次数:21 
[转载]ASP缓存技术
使用ASP中的缓存技术可以很大程度上提高你的网站性能,其实这些实现方法是非常的简单,它将说明如何在服务器上的缓存是如何工作以及你如何使用一种被称为断开连接的ADO连接技术。
   在介绍这些技术之前先说明一下到底什么是ASP的缓存技术。
   所谓缓存其实就是在内存中开辟一个用来保存数据的空间,使用缓存你就不用频繁的访问你保存在硬盘上的数据了,灵活的使用缓存你就免去了心疼的看着可怜的硬盘饱受读数据时的折磨了。当你一旦执行了一个查询动作,并且将查询结果放入缓存中后,你就可以很迅速的重复访问这些数据了。而如果你不把数据放入缓存的话,当你再次执行这个查询时,服务器会将进程耗费在从数据库中获取并排序上了。
   当数据保存在缓存中时,再次查询时耗费的时间主要是在显示数据的时间上了。也就是说,我们不应该把经常需要改变的数据放到服务端的缓存中,我们应该把改变少,但是又需要经常访问的数据放到缓存中。

  现在我们先讨论ASP在服务端使用缓存的技术,过会再讨论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;
SQL = "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
   你可以验证一下你就会发现服务器上的请求数量会降低不少的。这种情况尤其适合与那些更新不是很频繁的网站内容,例如你一天(或则很长时间)只更新一次。

  下面再讨论一种客户端的缓存技术这种技术也叫断开连接的ADO连接技术(翻译水平太次,听上去怎么这么别扭)。这种技术主要使用在用来保存用户个人信息,例如用户的密码,代号等等上面。它主要使用了ADO的一些属性。同时也回答了一些网友曾经提到过的能否在Applocation中使用ADO对象的问题。解释不清楚,下面让代码来发言:
文件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技术
rsCustomers.CursorLocation = adUseClient
rsCustomers.Open SQL, cnnAdvWorks, adOpenStatic, AdLockReadOnly
' 断开RecordSet的和数据库的连接
rsCustomers.ActiveConnection = Nothing
Set Application("rsCustomers") = rsCustomers
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
% >

搜索更多相关主题的帖子: 缓存技术 ASP 内存 服务器 硬盘 
2006-01-04 09:58
conn
Rank: 2
等 级:新手上路
威 望:5
帖 子:420
专家分:0
注 册:2005-11-27
收藏
得分:0 
想了解缓存技术,在网上找的资料就是这些。可不太详细啊。有谁有更详细一点的?跟帖啊

我是新手,但我很虚心,对我发的问题请不要取笑,谢谢
2006-01-04 10:00
conn
Rank: 2
等 级:新手上路
威 望:5
帖 子:420
专家分:0
注 册:2005-11-27
收藏
得分:0 

问一下作者在写服务器端的缓存技术的时候为什么用的是JS?我觉得在服务器端VBS应该比它更好用吧。


我是新手,但我很虚心,对我发的问题请不要取笑,谢谢
2006-01-04 10:34
我晕
Rank: 1
等 级:新手上路
帖 子:100
专家分:0
注 册:2006-1-1
收藏
得分:0 
[QUOTE]
'注意下面这两句话,就是用来实现那个叫可用的断开连接的ADO技术
rsCustomers.CursorLocation = adUseClient [/QUOTE]
这句实现功能?能不能给解释解释,详细的,谢谢

一个民族的落后首先是其精英的落后。而其精英落后最显著的标志就是他们经常指责人民的落后。
2006-01-04 11:46
conn
Rank: 2
等 级:新手上路
威 望:5
帖 子:420
专家分:0
注 册:2005-11-27
收藏
得分:0 

偶也看的不是很明白。研究中ING,希望有大虾指点,嘿嘿~


我是新手,但我很虚心,对我发的问题请不要取笑,谢谢
2006-01-04 11:49
我晕
Rank: 1
等 级:新手上路
帖 子:100
专家分:0
注 册:2006-1-1
收藏
得分:0 
我自己也收集了类似代码,呵呵,一起等吧,大虾快来~~~

一个民族的落后首先是其精英的落后。而其精英落后最显著的标志就是他们经常指责人民的落后。
2006-01-04 11:50
我晕
Rank: 1
等 级:新手上路
帖 子:100
专家分:0
注 册:2006-1-1
收藏
得分:0 
怎么没人说呢,想知道啊

一个民族的落后首先是其精英的落后。而其精英落后最显著的标志就是他们经常指责人民的落后。
2006-01-04 21:39
linuxpluto
Rank: 4
等 级:贵宾
威 望:13
帖 子:889
专家分:23
注 册:2005-8-14
收藏
得分:0 
这也是很重要的< !--METADATA TYPE="TypeLib" FILE="C:\Program Files\Common Files\system\ado\msado15.dll"-- >
从rsCustomers.CursorLocation=adUseClient
rsCustomers.Open SQL, cnnAdvWorks, adOpenStatic, AdLockReadOnly
看出来rsCustomers应该是adodb.connection对象
没有用set声明说明是已经定义好的
又有Sub Application_OnStart 可知是在global.asa文件中,可以得出结论,要么这个global.asa文件不全,要么这个rsCustomers封装在上述红字的文件,这东西我也没用过

吃的比猪还差,干的比驴还累,起的比鸡还早,睡得比小姐还晚,挣得比民工还少,看起来比谁都好——苦命的人.人生短短几十年,不要给自己留下了什么遗憾,想笑就笑,想哭就哭,该爱的时候就去爱,无谓压抑自己
2006-01-04 23:26
griefforyou
Rank: 6Rank: 6
等 级:贵宾
威 望:27
帖 子:3336
专家分:0
注 册:2004-4-15
收藏
得分:0 
[QUOTE]要么这个rsCustomers封装在上述红字的文件,这东西我也没用过[/QUOTE]

外行了。..

天津网站建设 http://www./
2006-01-04 23:40
linuxpluto
Rank: 4
等 级:贵宾
威 望:13
帖 子:889
专家分:23
注 册:2005-8-14
收藏
得分:0 

你说是撒子撒~~


吃的比猪还差,干的比驴还累,起的比鸡还早,睡得比小姐还晚,挣得比民工还少,看起来比谁都好——苦命的人.人生短短几十年,不要给自己留下了什么遗憾,想笑就笑,想哭就哭,该爱的时候就去爱,无谓压抑自己
2006-01-04 23:44
快速回复:[转载]ASP缓存技术
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.024695 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved