技巧16:在任何可能时使用Server.Transfer,而不要用Response.Redirect
Response.Redirect告诉浏览器请求另一个不同的页面,这常常用于引导用户到登录页面或者出错处理页面。由于重定向强迫了一个新页面请求,结果是浏览器必须要与Web服务器循环2次,并且Web服务器必须处理一个额外的请求。IIS5.0引进了一个新功能Server.Transfer,它执行在同一服务器上的页面传输,这将避免额外的浏览器-Web服务器的数据循环,形成良好的系统性能,对于用户也有较好的响应时间。
技巧17:避免使用服务器变量
存取服务器变量导致Web站点建立一个特殊的请求并收集所有的服务器变量,而并不是你要求的那个变量。这类似于在文件夹中取回一个特殊的文件,要想取回一个文件,就得首先获取所在文件夹的信息。
不要存取非法的Request对象(比如Request("Data")),对于那些不在Request.Cookies、Request.Form、Request.QueryString或者Request.ClientCertificate中的项目,隐含就指向了Request.ServerVariables变量,而这些变量要比其他集合对象慢得多。
技巧18:调整Web服务器
有几个IIS调整参数可以提高站点性能。比如,对于IIS4.0,我们经常发现提高ASP ProcessorThreadMax参数能够产生重大的效果,特别是在那些要等待后台资源比如数据库或中间件产品的站点。在IIS5.0中,你可以发现调整ASP线程通道要比调整AspProcessorThreadMax效果更佳。
最佳的配置设定取决于应用程序代码、支持的硬件设备以及客户端的工作量。发现最佳配置的唯一方法就是测试。
相关参考资源
Response.Redirect告诉浏览器请求另一个不同的页面,这常常用于引导用户到登录页面或者出错处理页面。由于重定向强迫了一个新页面请求,结果是浏览器必须要与Web服务器循环2次,并且Web服务器必须处理一个额外的请求。IIS5.0引进了一个新功能Server.Transfer,它执行在同一服务器上的页面传输,这将避免额外的浏览器-Web服务器的数据循环,形成良好的系统性能,对于用户也有较好的响应时间。
技巧17:避免使用服务器变量
存取服务器变量导致Web站点建立一个特殊的请求并收集所有的服务器变量,而并不是你要求的那个变量。这类似于在文件夹中取回一个特殊的文件,要想取回一个文件,就得首先获取所在文件夹的信息。
不要存取非法的Request对象(比如Request("Data")),对于那些不在Request.Cookies、Request.Form、Request.QueryString或者Request.ClientCertificate中的项目,隐含就指向了Request.ServerVariables变量,而这些变量要比其他集合对象慢得多。
技巧18:调整Web服务器
有几个IIS调整参数可以提高站点性能。比如,对于IIS4.0,我们经常发现提高ASP ProcessorThreadMax参数能够产生重大的效果,特别是在那些要等待后台资源比如数据库或中间件产品的站点。在IIS5.0中,你可以发现调整ASP线程通道要比调整AspProcessorThreadMax效果更佳。
最佳的配置设定取决于应用程序代码、支持的硬件设备以及客户端的工作量。发现最佳配置的唯一方法就是测试。
相关参考资源
Optimizing ASP scripts
- Developing Scalable Web Applications
- Got Any Cache? by Nancy Winnick Cluts
- Maximizing the Performance of Your Active Server Pages by Nancy Winnick Cluts
- 15 Seconds: Performance Section
- Enhancing Performance in ASP - Part I by Wayne Plourde
- When is Better Worse? Weighing the Technology Trade-Offs by Nancy Winnick Cluts
- Speed and Optimization Resources by Charles Carroll
Tuning IIS
- The Art and Science of Web Server Tuning with Internet Information Services 5.0
- Leveraging ASP in IIS 5.0 by J.D. Meier
- Tuning IIS 4.0 for High Volume Sites by Michael Stephenson
- Tuning Internet Information Server Performance by Mike Moore
- Navigating the Maze of Settings for Web Server Performance Optimization by Todd Wanke
- Managing Internet Information Server 4.0 for Performance by Hans Hugli
ADO and SQL Server
- Top Ten Tips: Accessing SQL Through ADO and ASP by J.D. Meier
- Improve the Performance of your MDAC Application by Suresh Kannan
- Pooling in the Microsoft Data Access Components by Leland Ahlbeck and Don Willits
- SQL Server: Performance Benchmarks and Guides
- Improving the Performance of Data Access Components with IIS 4.0 by Leland Ahlbeck
- Microsoft Data Access Components (MDAC) and ActiveX Data Objects (ADO) Performance Tips by Leland Ahlbeck
- Microsoft SQL Server 7.0 Practical Performance Tuning and Optimization - The Server Perspective by Damien Lindauer
- Microsoft SQL Server 7.0 Practical Performance Tuning and Optimization - The Application Perspective by Damien Lindauer
- Accessing Recordsets over the Internet by Dino Esposito
ASP components and threading models
- ASP Component Guidelines by J.D. Meier
- Q243548: INFO: Design Guidelines for VB Components under ASP
- Threading Models Explained by Nancy Winnick Cluts
- So Happy Together? Using ActiveX components with Active Server Pages by Nancy Winnick Cluts
- Developing Active Server Components with ATL by George Reilly
- Agility in Server Components by Neil Allain
- Building High-Performance Middle-Tier Components with C++ by Jon Flanders
- Active Server Pages and COM Apartments by Don Box
- House of COM: Active Server Pages by Don Box
- House of COM: Contexts by Don Box
- House of COM: Performance Trade-offs of the Windows 2000 Component Execution Environment by Don Box
- Building COM Components That Take Full Advantage of Visual Basic and Scripting by Ivo Salmre
- Component Design Principles for MTS
Dictionary components
- Creating a Page Cache Object by Robert Coleridge
- Abridging the Dictionary Object: The ASP Team Creates a Lookup-Table Object by Robert Carter
- Caprock Dictionary
- Site Server Commerce Edition includes a dictionary component
Session state
- Q175167: HOWTO: Persisting Values Without Sessions
- Q157906: HOWTO: How To Maintain State Across Pages with VBScript
- XML-based Persistence Behaviors Fix Web Farm Headaches by Aaron Skonnard
- House of COM: Stateless Programming by Don Box
Performance and scalability
- Blueprint for Building Web Sites Using the Microsoft Windows DNA Platform
- Server Performance and Scalability Killers by George Reilly
- Microsoft Visual Studio Scalability Center
- Fitch & Mather Stocks 2000
- Tuning the FMStocks Application
- High-Performance Visual Basic Apps by Ken Spencer
- Duwamish Books, Phase 4
- Top Windows DNA Performance Mistakes and How to Prevent Them by Gary Geiger and Jon Pulsipher
- Building from Static HTML to High-Performance Web-Farms by Shawn Bice
Tools
- Microsoft Web Application Stress Tool
- I Can? Stress It Enough -- Load Test Your ASP Application by J.D. Meier
- Windows DNA Performance Kit
- Monitoring Events in Distributed Applications Using Visual Studio Analyzer by Mai-lan Tomsen
Books
- Professional Active Server Pages 3.0, Wrox Press. (Especially Chapter 26: Optimizing ASP Performance, by George Reilly and Matthew Gibbs)
- Microsoft Internet Information Services 5.0 Resource Guide (bundled with Windows 2000 Server Resource Kit, Microsoft Press.
- Microsoft Internet Information Server Resource Kit (for IIS 4.0), Microsoft Press.
- Programming Distributed Applications with COM and Microsoft Visual Basic 6.0 by Ted Pattison, Microsoft Press.
- Effective COM by Don Box, Keith Brown, Tim Ewald, and Chris Sells; Addison-Wesley.
- Developing Web Usability: The Practice of Simplicity by Jakob Nielsen, New Riders.
ASP Web sites
- Microsoft TechNet for IIS
- LearnASP.com
- 4GuysFromRolla.com
- 15Seconds.com
- AspToday.com
- Asp101.com
- AspLists.com. Many specialized mailing lists including:
- UseIt.com: Web Usability
ASP style
- ASP Best Practices by George Reilly
- ASP Quick Lessons by Charles Carroll
- Planning for ASP by John Meade
- ASP Guidelines by J.D. Meier
XML
- Inside XML Performance by Chris Lovett
- Inside MSXML3 Performance by Chris Lovet