asp.net的10个提升性能或扩展性的秘密(一)
简介
Asp.net有很多值得你挖掘的“秘密”,当你发现了它们,将会给你网站的性能和可扩展性带来巨大提升!例如,对于Membership以及Profile提供程序有一些秘密的瓶颈,它们很容易被解决,从而使认证和授权更加快速。另外,asp.net的http管线可以为每一个请求作处理,防止执行了某些不必要的代码而遭受攻击。不只是这些,asp.net工作进程能够突破默认限制,从而完全发挥它的威力。在浏览器端(不是在服务器端)的页面分段输出缓存能显著减少由于请求访问所需要占用的大量下载时间。在需要的用户界面上的加载能够给你的网站带来快速而平稳的体验。最后,内容分发网络(CDN)以及对HTTP缓存头的正确使用能够使你的网站得到快速响应。
在这篇文章中,你将学习这些技术,给你的asp.net应用程序性能和可扩展性带来巨大的提升。下面是接下来将要讨论的技术:
- Asp.net管线优化
- Asp.net进程配置优化
- Asp.net网站上线之前你必须要做的事
- 内容分发网络(CDN)
- 浏览器端缓存Ajax调用
- 最大限度地正确使用浏览器缓存
- 在需要的UI上逐步加载以提供快速平滑的体验
- 优化asp.net 2.0Profile 提供程序
- 怎样在不“下线”站点的情况下查询asp.net 2.0的Membership表
- 防止拒绝服务攻击
上面的技术都能够在任何的asp.net网站中实现,特别是那些使用了asp.net 2.0的Membership以及Profile 提供程序的网站。
Asp.net管线优化
有一些asp.net默认的HttpModules被设置在请求管线中,它们会参与每一个请求。例如,SessionStateModule会处理每一个请求,转换会话cookie然后给HttpContext加载适当的session。不是所有的这些模块都总是被需要的。例如,如果你没有使用Membership 以及 Profile provider,你就不需要FormsAuthentication模块。如果你没有对你的用户使用Windows认证,你就不需要WindowsAuthentication模块。这些模块只是被安置在管线之内,对每一个请求执行某些不是必须要的代码。
这些默认模块被定义在machine.config文件中(位于$WINDOWS$\Microsoft.NET\Framework\$VERSION$\CONFIG directory)
你可以从你的web应用程序中通过在web.config文件中加入<remove>节点移除这些默认的modules。
上面的配置非常适合那些使用数据库并基于Forms认证,并且不需要任何Session支持的网站。所以,所有上面这些模块都能够被安全地移除。
Asp.net进程配置优化