浏览器缓存由 HTTP“过期”报头控制,该报头由 Web 服务器发送给浏览器。ASP 提供两个简单的机制发送此报头。要设置页面使其过多少分钟后到期,则应设置 Response.Expires 属性。下面的例子告诉浏览器内容在 10 分钟内过期:
若将 Response.Expires 设置为负数或 0,则禁用缓存。一定要使用大的负数,如 -1000(略多于一天),以避免服务器和浏览器时钟之间的不匹配。第二个属性 Response.ExpiresAbsolute 将使您设置内容过期的具体时间:
您可以不使用 Response 对象设置过期时间,而将 <META> 标记写进 HTML,通常写在 HTML 文件的 <HEAD> 部分。一些浏览器将遵照此指令,而代理则不然。
最后,您可以使用 Response.CacheControl 属性,指示其内容是否可以让 HTTP 代理缓存。若将此属性设置为“Public”,代理就可以缓存此内容。
这也适用于指向 Web 站点上主页的 URL:使用下面的:<a href=?http://msdn.microsoft.com/?>,而不使用 <a href=?http://msdn.microsoft.com?>。
决不要访问非限定的 Request 对象(例如,Request("Data"))。对于不在 Request.Cookies、Request.Form、Request.QueryString 或 Request.ClientCertificate 中的项目,则隐式调用 Request.ServerVariables。Request.ServerVariables 集合比其它集合慢得多。
技巧 25:升级到最新和最出色的
系统组件是恒定的,我们建议您将它们升级到最新和最好的配置。最好升级到 Windows 2000(因此,也应升级到 IIS 5.0、ADO 2.5、MSXML 2.5、Internet Explorer 5.0、VBScript 5.1 和 JScript 5.1)。在多处理器计算机上,实施 IIS 5.0 和 ADO 2.5 可显著改善性能。在 Windows 2000 下,ASP 可以很好乩┱沟剿母龃砥骰蚋啵?IIS 4.0 下,ASP 的扩展性不能超出两个处理器。在应用程序中使用的脚本代码和 ADO 越多,升级到 Windows 2000 之后,性能的改善就会越多。
如果目前还不能升级到 Windows 2000,您可以升级到 SQL Server、ADO、VBScript 和 JScript、MSXML、Internet Explorer 和 NT 4 Service Packs 的最新版本。它们均可提高性能和可靠性。
技巧 26:优化 Web 服务器
有多种 IIS 优化参数可以改善站点性能。例如,对于 IIS 4.0,我们常常发现,增加 ASP ProcessorThreadMax 参数(参见 IIS 文档)可以显著改善性能,特别是在倾向于等待后端资源(如数据库)或其它中间产品(如屏幕刷)的站点上。在 IIS 5.0 中,您可能发现启用 ASP Thread Gating 比查找一个 AspProcessorThreadMax 最佳设置效率更高,这一点现在已为大家所熟知。
有关较好的参考资料,参见下面的优化 IIS。
最佳的配置设置取决于(其中一些因素)应用程序代码、运行所在的系统硬件和客户机工作负荷。找到最佳设置的唯一方法是进行性能测试,这是我们在下一个技巧中所要讨论的。
技巧 27:进行性能测试
正如我们在前面已经讲过,性能是一个特征。如果您想要改善站点的性能,那么就制定一个性能目标,然后逐步改进,直到达到目标为止。不要,就不进行任何性能测试。通常,在项目结束时,再作必需的结构调整已经为时太晚,您的客户将为此感到失望。将性能测试作为您日常测试的一部分来进行。可以对单个组件分别进行性能测试,如针对 ASP 页或 COM 对象,或将站点作为一个整体来测试。
许多人使用单个浏览器请求页面,来测试 Web 站点的性能。这样做就会给您一个感觉,即站点的响应能力很好,但这样做实际上并不能告诉您在负载条件下站点的性能如何。
一般情况下,要想准确地测试性能,您需要一个专门的测试环境。此环境应包括硬件,其处理器速度、处理器数量、内存、磁盘、网络配置等方面与生产环境的硬件相似。其次,您必须指定客户机的工作负荷:有多少同时的用户,他们发出请求的频率,他们点击页面的类型等等。如果您没有站点实际使用情况的数据,您必须估计一下使用的情况。最后,您需要一个可以模拟预期客户机工作负荷的工具。有了这些工具,您就可以开始回答诸如“如果我有 N 个同时的用户,那么需要多少服务器?”之类的问题。您还可以找出出现瓶颈的原因,并以此为目标进行优化。
下面列出了一些好的 Web 负载测试工具。我们特别推荐 Microsoft Web Application Stress (WAS) 工具包。WAS 可使您记录测试脚本,然后模拟数百或成千上万个用户访问 Web 服务器。WAS 报告很多统计信息,包括每秒钟的请求数,响应时间分布情况和错误计数。WAS 有丰富的客户机界面和基于 Web 的界面两种,Web 界面可使您进行远程测试。
一定要阅读 IIS 5.0 Tuning Guide。
技巧 28:阅读资源链接
下面是一些与性能有关的出色的资源链接。如果您想了解有关信息,请阅读 Developing Scalable Web Applications。
资源
优化 ASP 脚本优化 IIS
ADO 和 SQL Server
ASP 组件和线程模型
词典组件
会话状态
性能和可扩展性
工具
书目
ASP Web 站点
ASP 样式
XML
优化 ASP 脚本
Developing Scalable Web Applications
Got Any Cache? Nancy Winnick Cluts 著
Maximizing the Performance of Your Active Server Pages,Nancy Winnick Cluts 著
15 Seconds: Performance Section
Enhancing Performance in ASP - Part I,Wayne Plourde 著
When is Better Worse? Weighing the Technology Trade-Offs,Nancy Winnick Cluts 著
Speed and Optimization Resources,Charles Carroll 著
优化 IIS
The Art and Science of Web Server Tuning with Internet Information Services 5.0
Leveraging ASP in IIS 5.0,J.D. Meier 著
Tuning IIS 4.0 for High Volume Sites,Michael Stephenson 著
Tuning Internet Information Server Performance,Mike Moore 著
Navigating the Maze of Settings for Web Server Performance Optimization,Todd Wanke 著
Managing Internet Information Server 4.0 for Performance,Hans Hugli 著
ADO 和 SQL Server
Top Ten Tips: Accessing SQL Through ADO and ASP,J.D. Meier 著
Improve the Performance of your MDAC Application,Suresh Kannan 著
Pooling in the Microsoft Data Access Components,Leland Ahlbeck 和 Don Willits 合著
SQL Server: Performance Benchmarks and Guides
Improving the Performance of Data Access Components with IIS 4.0,Leland Ahlbeck 著
Microsoft Data Access Components (MDAC) and ActiveX Data Objects (ADO) Performance Tips,Leland Ahlbeck 著
Microsoft SQL Server 7.0 Practical Performance Tuning and Optimization - The Server Perspective,Damien Lindauer 著
Microsoft SQL Server 7.0 Practical Performance Tuning and Optimization - The Application Perspective,Damien Lindauer 著
Accessing Recordsets over the Internet,Dino Esposito 著
ASP 组件和线程模型
ASP Component Guidelines,J.D. Meier 著