技巧 16:如果页面需要很长时间才能完成,那么执行前使用 response.isclientconnected
如果用户性急,他们可能会在您开始执行他们的请求之前,就会放弃 asp 页面。如果他们单击刷新或移到服务器上的另一个页面,在 asp 请求队列的末尾就有一个新的请求等候,在队列的中间有一个断开连接的请求。当服务器的负载很高时(因此请求队列就会很长,响应时间也会相应地变长),就会经常发生这种情况,这样只能使情况变得更糟。如果用户不再连接,执行 asp 页面(特别是慢的、大的 asp 页面)已没有任何意义。您可以使用 response.isclientconnected 属性检查这一情况。如果它返回 false,则应调用 response.end 并放弃页的其余部分。事实上,iis 5.0 已将这一做法编为程序 - 每当 asp 即将执行新请求时,它就会检查请求在队列中已等候了多长时间。如果已经在那里等候了多于 3 秒钟,asp 将检查客户机是否仍处于连接状态,如果没有连接,就立即终止请求。您可以在配置数据库中使用 aspqueueconnectiontesttime 设置将超时时间由 3 秒调整为其它值。
如果页面要花很长时间才能执行完,也可以不时地检查 response.isclientconnected。当启用了响应缓冲时,最好不时地执行 response.flush,以用户知道,正在发生什么事。
注意 在 iis 4.0 上,除非先执行了 response.write,否则 response.isclientconnected 就不能正常工作。如果启用了缓冲,您也必须执行 response.flush。在 iis 5.0 上,却没有必要这样做,- response.isclientconnected 工作正常。在任何情况下,response.isclientconnected 都会有一些开销,因此只有在一个操作至少要花(比方说) 500 毫秒(如果您想维持每秒钟数十页的吞吐量,这是一个很长的时间)才使用它。经验表明,不要每次重复执行紧密循环时都调用它,如显示表的许多行时 - 每隔二十或五十行调用一次可能比较合适。
技巧 17:使用 <object> 标记例示对象
如果要引用不在所有代码路径(特别是服务器或应用程序作用域的对象)中使用的对象,使用 global.asa 中 <object runat=server id=objname> 标记声明它们,而不使用 server.createobject 方法。server.createobject 能立即创建对象。如果以后不再使用该对象,您就浪费了资源。<object id=objname> 标记声明 objname,但在其方法或属性第一次使用以前,不会创建 objname。
这又是一个惰性计算的例子。
技巧 18:对于 ado 和其它组件使用 typelib 声明
当使用 ado 时,开发人员经常加入 adovbs.txt,以访问 ado 的各种常量。在要使用常量的每个页面中必须包含此文件。此常量文件相当大,给每个 asp 页面的编译时间和脚本大小增加了许多系统开销。
iis 5.0 引入了绑定到组件类型库的功能。这可使您引用类型库一次,并将其用在每个 asp 页面上。每个页面不会产生编译常量文件的开销,且组件开发人员不必建立 vbscript#_include 文件以在 asp 上使用。
要访问 ado typelib,将下面一条语句放在 global.asa 中。
<!-- metadata name=?microsoft activex data objects 2.5 library?
type=?typelib? uuid=?{00000205-0000-0010-8000-00aa006d2ea4}? -->
或
<!-- metadata type=?typelib?
file=?c:\program files\common files\system\ado\msado15.dll? -->
技巧 19: 利用浏览器的验证功能
现今的浏览器对一些高级功能如 xml、dhtml、java 小程序和远程数据服务提供支持。尽可能使用这些功能。所有这些技术都可以执行客户机端验证和数据缓存,免去了到 web 服务器的往返。如果您在运行一个智能浏览器,那么浏览器就能为您进行一些验证(例如,在执行 post 之前,检查信用卡校验和是否有效)。尽可能使用这一功能。通过减少客户-服务器之间的往返,可降低 web 服务器上的负载,并能减少网络通信量(虽然发送到浏览器的第一个页面可能比较大)以及服务器访问的任何后端资源。此外,用户不必像住常一样读取新页,从而用户的感觉会好一些。这样做并不意味着您可以不进行服务器端验证 - 您还应始终进行服务器端验证。这可以防止由于某种原因(如黑客,或浏览器不运行客户机端验证例程)客户机产生错误的数据。
人们已经进行了大量的工作,开发“独立于浏览器”的 html。正是由于这种忧虑,开发人员不愿再使用流行的浏览器功能,但这些功能本可以改善性能。对于一些真正的高性能站点,必须关心浏览器“访问”问题,一个好的策略是优化页面,使其适应流行的浏览器。使用浏览器功能组件,可以在 asp 中方便地检测到浏览器功能。microsoft frontpage 等工具有助于设计适合于浏览器和指定 html 版本的代码。参见 when is better worse?weighing the technology trade-offs,以了解更进一步的讨论。
Java Asp PHP .Net XML C/C++ CGI VB Jsp J2ee J2se J2me EJB Servlet Tomcat Resin Struts Weblogic Eclipse ANT GUI JMS Web servise IDEA Webphere Hibernate Spring Jboss Applet Swing Socket Javamail Perl Ajax P2P 安全 模式 框架 测试 开源 游戏
Windows XP Windows 2000 Windows 2003 Windows Me Windows 9.x Linux UNIX 注册表 操作系统 服务器 应用服务器