老尸 发表于 2015-1-16 23:47:35

ASP网页设计复杂先容ASP中Cache手艺的使用

Windows本身的所有问题都会一成不变的也累加到了它的身上。安全性、稳定性、跨平台性都会因为与NT的捆绑而显现出来;cacheASP从公布至今已7年了,利用ASP手艺已相称成熟,自从微软推出了ASP.NET以后就渐渐中断了对ASP版本的更新。可是因为有良多人仍旧习气利用ASP来开辟网站,以是,再次我将以一个复杂的例子来讲明在ASP中怎样利用Cache。

复杂的说利用Cache基础道理是,把常常必要且取得价值高贵的数据在内存中延续保留必定工夫,以供这些数据能够被间接地全局地会见。比方,有一些数据必要从数据库多个表中查询取得,且几近每一个页面都要挪用这些数据。

这类情形下的最好完成就是将这部分数据Cache起来,在ASP中的复杂完成就是将这些数据的终极表达情势(比方HTML流)封装在string中然后存进ASP内置工具Application中(本文次要会商的是静态Cache,复杂的ASP使用就省略)。如许做的优点是,在全部网站中能够全局挪用这段HTML,并且Application是存在内存中,以是不必再往查询数据库,从而加速了呼应工夫并节俭了服务器负荷。固然这是以损耗内存为价值的,是一个典范的以空间换工夫的实例。

利用这类办法固然有良多优点,可是再碰到频仍变更的数据源(数据库)的时分,这类办法便可能不再合用,由于ASPApplication工具有一个弱点,就是不克不及主动随数据源的变更而变更,大概把持革新距离。以是就必要开辟职员编程来完成静态Cache。固然在程序计划的时分能够在一切举行改动数据源(数据库)操纵时,就更新一次Appliction。从而使数据源(数据库)一直坚持分歧。如许做在编程上要思索的成绩会对照多,简单漏掉细节。以是除特定情形我不保举利用这类办法。

我以为在ASP中最好的举措是用编程完成准时革新Cache,也就是说给Application中贮存的设一个过时工夫。固然,在ASP中Application工具没有如许一个ExpireTime属性。这必要用程序完成。

Code
ASP:default.asp

<%@Language=VBScript%>
<%Option Explicit%>
<%Response.Buffer=True%>
<!--#includefile="conn.asp"-->
<!--#includefile="GetCache.asp"-->
<HTML>
<HEAD>
<TITLE>ASPCache演示</TITLE>
<METAHTTP-EQUIV="Content-Type"CONTENT="text/html;charset=gb2312">
</HEAD>
<BODY>
<h4>每隔10秒革新Cache:</h4>
<%
response.Flush
GetHTMLStream
response.Write
HTMLStream
%>
</body>
</html>

ASP:getcache.asp

<%
ConstCACHE_DEFAULT_INTERVAL=30每隔30秒革新一次cache
DimHTMLStream
DimIsExpires
IsExpires=CacheExpires
FunctionCacheExpires
DimstrLastUpdate
DimresultstrLastUpdate=Application("LastUpdate")
If(strLastUpdate="")Or(CACHE_DEFAULT_INTERVAL<DateDiff("s",strLastUpdate,Now))Then
result=true
SetLastUpdateTime
Else
result=false
EndIf
CacheExpires=result
EndFunction

SubSetLastUpdateTime
Application.Lock
Application("LastUpdate")=CStr(now())
Application.UnLock
EndSub
SubGetHTMLStream
IfIsExpiresThen
UpdateHTMLStream
EndIf
HTMLStream=Application("CACHE_HTMLStream")
EndSub

SubUpdateHTMLStream
dimd
d=FetchHTMLStream
Application.Lock
Application("CACHE_HTMLStream")=d
Application.UnLock
EndSub

FunctionFetchHTMLStream
Dimrs,strSQL,strHTML
Setrs=CreateObject("ADODB.Recordset")
strSQL="selectcategoryID,categorynamefromcategories"
rs.OpenstrSQL,strConn,adOpenForwardOnly,adLockReadOnly
strHTML=strHTML&"<selectname=""slt_search"">"
while(notrs.EOF)
strHTML=strHTML&"<option>"
strHTML=strHTML&rs.Fields("categoryname")
strHTML=strHTML&"</option>"rs.MoveNext
wend
strHTML=strHTML&"</select>"
rs.Close
Setrs=Nothing
FetchHTMLStream=strHTML
EndFunction
%>

ASP:conn.asp

<!--METADATANAME="MicrosoftActiveXDataObjects2.5Library"TYPE="TypeLib"UUID="{00000205-0000-0010-8000-00AA006D2EA4}"-->
<%
dimstrConn
strConn="Provider=SQLOLEDB.1;IntegratedSecurity=SSPI;PersistSecurityInfo=False;InitialCatalog=Northwind"
%></p>对于中小型web应用来说,php有很强的竞争力,linux+apache+mysql+php(lamp)的组合几乎可以胜任绝大多数网站的解决方案,对于大型应用来讲,对于系统架构要求更高,需要有成熟的框架支持,jsp的struts是个不错的框架,国内介绍它的资料也非常多,应用逐渐广泛起来。asp就不用说了,

莫相离 发表于 2015-1-20 11:51:34

ASP也是这几种脚本语言中最简单易学的开发语言。但ASP也是这几种语言中唯一的一个不能很好支持跨平台的语言。  因为ASP脚本语言非常简单,因此其代码也简单易懂,结合HTML代码,可快速地完成网站的应用程序。

乐观 发表于 2015-1-29 07:04:33

ASP的语言不仅仅只是命令格式差不多,而是包含在<%%>之内的命令完全就是VB语法。虽然ASP也是做为单独的一个技术来提出的,但他就是完全继承了VB所有的功能。

只想知道 发表于 2015-2-5 23:47:35

作为IE上广为流传的动态网页开发技术,ASP以它简单易学博得了广大WEB程序爱好这的青睐,而且它对运行环境和开发品台的不挑剔,以及有大量有效的参考手册,极大的推广了它的发展。

简单生活 发表于 2015-2-14 07:31:25

不是很难但是英文要有一点基础网上的教程很少有系统的详细的去买书吧,另不用专门学习vb关于vbscript脚本在asp教材都有介绍

灵魂腐蚀 发表于 2015-3-4 05:04:02

封装性使得代码逻辑清晰,易于管理,并且应用到ASP.Net上就可以使业务逻辑和Html页面分离,这样无论页面原型如何改变,业务逻辑代码都不必做任何改动;继承性和多态性使得代码的可重用性大大提高。

透明 发表于 2015-3-11 17:19:38

如何更好的使自己的东西看上去很不错等等。其实这些都不是问题的实质,我们可以在实践中不断提升自己,不断充实自己。

兰色精灵 发表于 2015-3-19 03:14:45

我们必须明确一个大方向,不要只是停留在因为学而去学,我们应有方向应有目标.

老尸 发表于 2015-3-27 06:10:49

在平时的学习过程中要注意现学现用,注重运用,在掌握了一定的基础知识后,我们可以尝试做一些网页,也许在开始的时候我们可能会遇到很多问题,比如说如何很好的构建基本框架。
页: [1]
查看完整版本: ASP网页设计复杂先容ASP中Cache手艺的使用