• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >ASP > 改进性能和样式的24个ASP 技巧

改进性能和样式的24个ASP 技巧

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-11

通过本文主要向大家介绍了asp30性能,改进性能,更改主题以改进性能,asp button样式,asp样式等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

简介

技巧 1:在 Web 服务器上缓存常用数据

技巧 2:在 Application 或 Session 对象中缓存常用数据

技巧 3:在 Web 服务器磁盘上缓存数据和 HTML

技巧 4:避免在 Application 或 Session 对象中缓存非灵活组件

技巧 5:不要在 Application 或 Session 对象中缓存数据库连接

技巧 6:妙用 Session 对象

技巧 7:在 COM 对象中封装代码

技巧 8:晚点获取资源,早点释放资源

技巧 9:进程外的执行将牺牲可靠性

技巧 10:显式使用选项

技巧 11:在子例程和函数中使用局部变量

技巧 12:将常用数据复制到脚本变量

技巧 13:避免重新定义数组

技巧 14:使用响应缓冲

技巧 15:批处理内嵌脚本和 Response.Write 语句

技巧 16:在开始长时间的任务之前先使用 Response.IsClientConnected

技巧 17:使用 <OBJECT> 标记实例化对象

技巧 18:使用 ADO 对象和其他组件的 TypeLib 绑定

技巧 19:利用浏览器的验证能力

技巧 20:在循环中避免字符串串联

技巧 21:启用浏览器和代理缓存

技巧 22:尽可能使用 Server.Transfer 替代 Response.Redirect

技巧 23:在目录 URL 尾部加斜线

技巧 24:避免使用服务器变量


--------------------------------------------------------------------------------

简介

性能是一个特性。您需要预先设计性能,或是在日后重新编写应用程序。换句话说,什么是最大限度优化 Active Server Pages (ASP) 应用程序性能的好策略?

本文为优化 ASP 应用程序和"Visual Basic(R) 脚本编辑器 (VBScript)"提供了许多技巧。对许多陷阱和缺陷进行了讨论。本文所列的建议均在 http://www.microsoft.com 及其他站点上进行了测试,而且工作正常。本文假定您对 ASP 开发有基本的理解,包括对 VBScript 和/或 JScript、ASP Application、ASP Session 和其他 ASP 内部对象(请求、响应和服务器)。

ASP 的性能,通常不止取决于 ASP 代码本身。我们并不想在一篇文章中囊括所有的至理名言,只在最后列出与性能相关的资源。这些链接包括 ASP 和非 ASP 主题,包括"ActiveX(R) 数据对象 (ADO)"、"部件对象模型 (COM)"、数据库和"Internet 信息服务器 (IIS)"配置。这些是我们喜欢的链接 - 务请关注它们。

技巧 1:在 Web 服务器上缓存常用数据

典型的 ASP 页从后端数据库检索数据,然后将结果转换为超文本标记语言 (HTML)。无论数据库的速度如何,从内存检索数据要比从后端数据库检索数据快得多。从本地硬盘读取数据通常也要比从数据库检索数据快得多。因此,通常可以通过在 Web 服务器(在内存或磁盘)上缓存数据来改善性能。

缓存是典型的空间与时间的折衷。如果恰当地缓存数据,您将看到性能会有惊人的提高。为使缓存发挥效力,它必须保持经常重用的数据,而且重新计算这些数据的代价是昂贵的或比较昂贵的。如果缓存充满了垃圾数据,则是对存储器的浪费。

不经常变化的数据也是缓存的候选数据,因为您无须担心数据与数据库的同步问题。组合框、引用表、DHTML 碎片、可扩展标记语言 (XML) 字符串、菜单项和站点配置变量(包括数据源名称 (DSN)、Internet 协议 (IP) 地址和 Web 路径)都是缓存的候选数据。注意,您可以缓存数据的表示而不是数据本身。如果 ASP 页不经常更改,而且缓存的成本也非常高(例如,整个产品目录),请考虑预先生成 HTML,而不是在每次请求时重新绘制。

数据应缓存在何处,有哪些缓存策略?数据经常缓存在 Web 服务器内存或 Web 服务器磁盘上。下面两个技巧讨论这些选项。

技巧 2:在 Application 或 Session 对象中缓存常用数据

ASP Application 和 Session 对象为在内存中缓存数据提供了方便的容器。既可以将数据赋予 Application 对象,也可将数据赋予 Session 对象,这些数据在 HTTP 调用中将保留在内存中。Session 数据按用户存储,而 Application 数据在所有用户间共享。

何时将数据载入 Application 或 Session?通常,在 Application 或 Session 启动时加载数据。要在 Application 或 Session 启动时加载数据,请在下面两函数中添加相应的代码:
Application_OnStart()
或
Session_OnStart()
。这两个函数应该位于 Global.asa;如果没有,可以添加这些函数。也可以在第一次需要数据时加载数据。要进行上述操作,请在 ASP 页中添加一些代码(或编写可重用的脚本函数),这些代码检查数据是否存在,并在数据不存在时加载数据。这是称为迟缓计算的经典性能技术的例子 - 在您的确需要它之前,不进行计算。请看例子:

<%
Function GetEmploymentStatusList
Dim d
d = Application("EmploymentStatusList")
If d = "" Then
‘' FetchEmploymentStatusList 函数(不显示)
‘' 从 DB 中取出数据,返回数组
d = FetchEmploymentStatusList()
Application("EmploymentStatusList") = d
End If
GetEmploymentStatusList = d
End Function
%>

可以为每一块所需的数据编写类似的函数。

数据应该以什么格式存储?任何变量类型均可存储,因为所有脚本变量是各不相同的。例如,可以存储字符串、整型或数组。通常,您将以这些变量类型之一存储 ADO 记录集的内容。若要获取 ADO 记录集衍生的数据,可以手工将数据复制到 VBScript 变量中,每次一个字段。使用一个 ADO 记录集保留函数 GetRows()、GetString() 或 Save() (ADO 2.5),会更快更简便。完整而详细的内容已超出了本文的范围。下面的演示函数使用了
GetRows()
来返回记录集数据的数组:

‘' 取记录集,以数组返回
Function FetchEmploymentStatusList
Dim rs
Set rs = createObject("ADODB.Recordset")
rs.Open "select StatusName, StatusID from EmployeeStatus", _
"dsn=employees;uid=sa;pwd=;"
FetchEmploymentStatusList = rs.GetRows() ‘' 以数组返回数据
rs.Close
Set rs = Nothing
End Function

对上面示例的进一步改进应当是缓存该列表的 HTML,而不是缓存数组。下面是一个简单的范例:

‘' 取记录集,以"HTML 选项"列表返回
Function FetchEmploymentStatusList
Dim rs, fldName, s
Set rs = createObject("ADODB.Recordset")
rs.Open "select StatusName, StatusID from EmployeeStatus", _
"dsn=employees;uid=sa;pwd=;"
s = "<select name=""EmploymentStatus">" & vbCrLf
Set fldName = rs.Fields("StatusName") ‘' ADO 字段绑定
Do Until rs.EOF
‘' 下面一行违背了不要进行字符串连接,
‘' 但这是可以的,因为我们正在建立高速缓存
s = s & " <option>" & fldName & "</option>" & vbCrLf
rs.MoveNext
Loop
s = s & "</select>" & vbCrLf
rs.Close
Set rs = Nothing ‘' 参见尽早释放
FetchEmploymentStatusList = s ‘' 以字符串返回数据
End Function

在正常的情况下,可以在 Application 或 Session 作用域中缓存 ADO 记录集本身。有两个警告:

ADO 必须为标记的自由线程
必须使用断开连接的记录集。
如果不能保证满足这两个要求,请不要缓存 ADO 记录集。在下面的非灵活组件和不要缓存连接技巧中,我们将讨论在 Application 或 Session 作用域中存储 COM 对象的危险。

如果在 Application 或 Session 作用域中存储数据,这些数据将一直保留在那儿,直到在程序中改变它、Session 过期或 Web 应用程序重新启动时为止。数据需要更新如何处理?若要用手工强制更新应用程序数据,可以调用只允许管理员访问的数据更新 ASP 页。另外,还可以通过函数,周期地自动刷新数据。下面的示例存储带缓存数据的时间戳,在指定时间间隔后刷新数据。

<%
‘' 未显示错误处理...
Const update_INTERVAL = 300 ‘' 刷新时间间隔,以秒计

‘' 函数返回雇佣状态列表
Function GetEmploymentStatusList
updateEmploymentStatus
GetEmploymentStatusList = Application("EmploymentStatusList")
End Function

‘' 定期更新缓存的数据
Sub updateEmploymentStatusList
Dim d, strLastupdate
strLastupdate = Application("Lastupdate")
If (strLastupdate = "") or _
(update_INTERVAL DateDiff("s", strLastupdate, Now)) Then

‘' 注意:此处可能有两个或多个调用。这是可以的,只不过
‘' 产生几个不必要的取指令罢了(就此有一个工作区)

‘' FetchEmploymentStatusList 函数(不显示)
‘' 从 DB 中取数据,返回一个数组
d = FetchEmploymentStatusList()

‘' 更新 Application 对象。用 Application.Lock()
‘' 来确保一致的数据
Application.Lock
Application("EmploymentStatusList") = d
Application("Lastupdate") = CStr(Now)
Application.Unlock
End If
End Sub

其他示例,请参阅具有 Application 数据的最快列表框(英文)。

请注意,在 Session 或 Application 对象中缓存大型数组并非上策。在访问数组元素之前,脚本语言的语法要求建立整个数组的临时副本。例如,如果在 Application 对象中缓存了将美国邮政编码映射到本地气象站的字符串数组,该字符串数组有 100,000 个元素,ASP 在找出一个字符串之前,必须将所有 100,000 个气象站复制到临时数组中。

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 全面优化ASP应用程序的性能的方法
  • 改进性能和样式的24个ASP 技巧
  • asp提高首页性能的一个技巧
  • 改进性能和样式的 24个 ASP 技巧第1/2页

相关文章

  • 2017-05-11ASP常用函数:getpy()
  • 2017-05-11Mssql高级注入笔记II
  • 2017-05-11Asp 使用 Microsoft.XMLHTTP 抓取网页内容并过滤需要的
  • 2017-05-11一个实用的FSO-实时统计在线人数
  • 2017-05-11asp下几种常用排序算法
  • 2017-05-11防盗链接ASP函数
  • 2017-05-11ASP checkbox复选框是否被选中的代码(结合数据库)
  • 2017-05-11自己做采集程序
  • 2017-05-11如何将长的标题用省略号收尾
  • 2017-05-11最简洁的asp多重查询的解决方案

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • ASP Recordset 分页显示数据的方法(修正版)
    • ASP编程入门进阶(二):认识表单
    • ASP中过滤UBB和Html标签
    • GetPaing 函数之asp采集函数中用到的获取分页的代码
    • 再发几个ASP不错的函数
    • asp常用函数集合,非常不错以后研究第1/4页
    • Script.VBS.Agent.ai juan.vbs专杀
    • 用xmlhttp编写web采集程序
    • ServerVariables集合检索预定的环境变量
    • asp中实现清除html的函数

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有