ASP 快速执行网页
来源:asp之家 发布时间:2020-07-07 11:14:17
这是一篇关于怎样精简代码和Asp 特征以获得最快执行速度的详细文章。对于一个急燥的用户来说,任何在按下用户按钮到结果出现在它们的屏幕之间的延迟可能意味着它们会转到浏览其它的站点?假如你的是商业站点,这有可能意味着失去潜在的销售。
我们没有任何办法控制用户的带宽,但我们的确能通过优化Asp 站点来获得最佳的*能。大部分潜在*能的提升是通过系统改变而不是紧缩代码,一个不合适的想法是,一旦遇到系统效率问题,就向系统**者提意见要其升级系统。
首先,哪个因素可能影响Asp的*能?很不幸,有很多因素?下面这些只是其中的一部分:
可用带宽
服务器上的处理器和其它硬件的速度
在服务器上运行的其它程序(比如象那些OpenGL屏幕保护程序!)
数据库连接模式,连接池,数据库系统本身(比如Oracle优于Sql Server,Sql server优于Access)
所使用的语言
存储过程优于行式Sql语句
使用编译组件而不是VB或JavaScript,好的Asp编程经验,比如错误处理等
一些以上的因素可能已经被有IIS 知识经验的开发者普遍留意到了,但其它的可能对于他们来说是十分复杂的问题。在这篇文章里, 将试着解释所有影响Asp*能的每个因素,让我们看一看那些在我们刮胡子的几毫秒内就能做到的主要事情。
ASP脚本大小
你是脚本页(还有其它页面)是不是比必须的长度要长?这是一开始执行就会降低Asp *能的东西。ASP 脚本在用来获取信息和格式化输出的时候是十分有用的,但脚本也是逐行解释执行,所以你的脚本越长,执行它的时间也就越长。
如果你的脚本很庞大,怎么做才能减少脚本的长度呢?这里有几点建议:
可以将它们转换成服务器端组件,也就是说,做成VB动态链接库DLL或者通过先进的Windows编程语言或适当的COM 接口语言将它转换成未编译组件?并且在服务器端注册它们。有关的快速指南可以在
http://www.webdevelopersjournal.com/articles/activex_for_asp.html找到。对一个写得好的ActiveX 组件进行编译不但能大幅度提高*能,还可以保护你的软件(脚本),尤其当你将你的Asp站点发布在第三方主机上的时候。
因为脚本是逐行解释执行的,所以剔除多余的脚本或建立更高效率的脚本能够改进*能。如果你在单个Asp 文件中有数百行的代码,可能这样做你能很好地划分使用者,买卖和数据服务。事实上,如果你这样做,可能会找出一些冗余的代码:如果你需要输出几个表格,你可以编写一个通用函数来输出一个表格,只是多次调用它。
在讲述Asp 脚本的大小问题的时候,不得不提及包含文件的大小。当你使用一个包含文件的时候,整个包含文件被装入,当包含文件被包含的时候,相当于在Asp 文件本身写下那部分代码。因此,如果你在一个冗长的包含文件里定义了很多通用的方法和定义,要明白到在你包含该文件的时候,不管你要不要用到里面的每个方法和定义,它都是被整个装入的。ASP 缓存全部的展开代码,这会降低查找效率在这种情况下,包含文件必须被分割成更小的,模块化的文件。也要明白到包含文件被服务器视为单独的页面请求,使用太多的包含文件会影响下载时间。
<!-- #include file="Header.asp" -->
<!-- #include file="Footer.asp" -->
<SCRIPT language="vbscript" runat="server">
Sub Main()
WriteHeader
WriteBody
WriteFooter
End Sub
Sub WriteBody()
...
End Sub Main?'调用过程Main
</SCRIPT>
假如你的脚本冗长的话,请使用Response.IsClientConnected。这意味着在客户端不再连接到服务器的时候,你的服务器CPU能避免循环等待。
<%
'检查客户端是否仍在连接
If Not Response.IsClientConnected Then
'仍然连接着,处理程序
Else
'断开
End If
%>
Interspersing ASP and HTML
每个人都这样做?当我们输出表格的时候,我们会在ASP 和HTML代码间转换,而这是一个不好的习惯。例如:
<HTML>
<BODY>
<%
Set MyConn = Server.CreateObject("ADODB.Connection")
MdbFilePath = Server.MapPath("sample.mdb")
MyConn.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & MdbFilePath & ";"
SQL_query = "SELECT * FROM Friends"
Set RS = MyConn.Execute(SQL_query)
WHILE NOT RS.EOF
%>
<LI><%=RS("Name")%>: <A HREF="">Homepage</A>
<%
RS.MoveNext
WEND
%>
</BODY>
</HTML>
另一个普遍的例子是使用IF语句的时候:
<%
If Not Session("DBOpen") Then
%>
<H1>Database not connected</H1>
<%
Else
%>
<H1>Database open</H1>
<%
End If
%>
在这些情况下,脚本*能能通过将服务器端脚本写到一起来,而用Response.write产生Html代码来提高*能。比如:
<%
If not Session ("DBOpen") Then
Response.Write "<H1>Database not connected</H1>"
Else
Response.Write "<H1>Database open</H1>"
End If
%>
在大的脚本和很多脚本的情况下,你将能看到*能的提高。注意这里尽量避免了使用<%标记,这样就能提高*能,ASP不需在执行脚本的时候计算字符的Ascii码。
猜你喜欢
- 在工作中经常遇到需要将数据输出到excel,且需要对其中一些单元格进行合并,比如如下表表格,需要根据A列的值,合并B、C列的对应单元格pan
- 一 描述1030. 距离顺序排列矩阵单元格 - 力扣(LeetCode) (leetcode-cn.com)给定四个整数 row
- Python字典是另一种可变容器模型,且可存储任意类型对象,如字符串、数字、元组等其他容器模型。一、创建字典字典由键和对应值成对组成。字典也
- 1. 下载darknet源码在命令窗口(terminal)中进入你想存放darknet源码的路径,然后在该路径下输入依次输入以下命令:git
- 1、在 Windows 设置临时环境变量 cmd命令窗口 输入 path=%path%;E:\soft\python-3.5.2-embed
- 首先,了解下原理。1,提供文本框进行查询内容的输入2,将查询信息提交页面程序处理3,程序页主要作用:接受查询信息,根据此信息调用特定的SQL
- 最近很少写CSS了,以后也可能写的会很少了,所以还是想把自已的一些经验能和大家分享一下,希望能给大家一些帮助!这篇文章主要写的提高网页在客户
- 问题:编写一个在1,2,…,9(顺序不能变)数字之间插入+或-或什么都不插入,使得计算结果总是100的程序,并输出所有的可能性。例如:1 +
- 本篇目标抓取淘宝MM的姓名,头像,年龄抓取每一个MM的资料简介以及写真图片把每一个MM的写真图片按照文件夹保存到本地熟悉文件保存的过程&nb
- Servermanager启动连接数据库错误运行mgrstart.bat报错如下解决办法:修改C:\Siemens\Teamcenter12
- 这个是捕获键盘事件输入状态的js代码,它可以判断你敲打了键盘的那个键,ctrl、shift,26个字母等等,返回具体键盘值。Javascri
- Python 中提供了对时间日期的多种多样的处理方式,主要是在 time 和 datetime 这两个模块里。一、time 模块time 模
- 本文实例讲述了golang的HTTP基本认证机制。分享给大家供大家参考,具体如下:看了<<http权威指南>>第12
- 自动化收集SQLSERVER诊断信息相信很多人都遇到过当SQLSERVER出现问题的时候,而你又解决不了需要DBA或者微软售后支持工程师去帮
- 当服务器必须提供与两个或更多个网络或网络子网的连接时,典型的方案是使用多宿主计算机。此计算机通常位于外围网络(也称为 DMZ、外围安全区域或
- 在Sql Server 2012之前,实现分页主要是使用ROW_NUMBER(),在SQL Server2012,可以使用Offset ..
- tuple函数功能和list功能很相似,以序列为参数并把它转换为元组>>> tuple([1,2,3])(1, 2, 3)
- 1.尽量将资源文件夹放到主文件夹下2.pyi-makespec main.py制作spec文件3.spec文件在当前文件夹下,main.sp
- 1.场景,对于colums都相同的dataframe做过滤的时候例如:df1 = DataFrame([['a', 10,
- 一、开始之前必须安装itchat库pip install itchat(使用pip必须在电脑的环境变量中添加Python的路径)或 cond