随笔 - 28  文章 - 0 评论 - 13 阅读 - 14万
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

开发高性能的ASP.NET Web应用程序,不仅需要高质量的代码,还需要兼顾其他很多方面的考虑,本文将简要讨论并总结出开发高性能的Web应用的注意事项:

1、避免到服务器的不必要往返传输。通常来讲,有很多时候我们是不需要将信息传递到服务器端进行处理,当出现这种情况的时候,一点要避免使用导致将信息传递到服务器的代码,这样不仅能提高网页的性能并且还能提高用户体验。总之,能使用客户端控件和Javascript能完成的功能绝对不要用服务器端控件。

2、记得使用Page对象的IsPostBack属性来避免对往返行程不必要的处理。

3、只是在必要时候保存服务器控件的视图状态。在默认的情况下,ASP.NET为所有服务器控件启用视图状态。如果服务器控件绑定的是每次数据参数往返行程上的数据,因为控件的值每次都会更新,所有保存视图状态没一点用处,这种情况下应当禁用视图。可以将控件的EnableViewState属性设置为false来禁用控件视图,也可以使用@Page指令禁用整个页面的视图状态。

代码为:<%@ Page EnableViewState="false"%>

4、除非有特殊的原因要关闭缓存,否则将缓存保持打开。关于如何在应用程序中选择使用好的缓存策略,是令一个话题,所有的asp.net程序员都应当学会高效使用缓存策略。

5、在同一个应用程序中的不同asp.net页面之间的重定向,尽量使用Server.Transfer()方法。对与Response.Redirect()方法和Server.Transfer()的各自的优缺点,简单比较:

         1、Response.Redirect可以切换到任何存在的网页。
         2、Server.Transfer只能切换到同目录或者子目录的网页。

         3、302重定向是被搜索引擎反对

         4、Server.Transfer要先把当前页面POST过来的数据保存住,再去执行新的页面,而Response.Redirect只是简单的回复一个重定向的指令就完事。因此如果对这两个方法做测试的话,Server.Transfer方法使用的时间应当是要比Response.Redirect方法使用的时间要多的。

        5、Server.Transfer()可以完成另外一些功能,比如可以在下一个Web Form中访问到前一个Web Form中的server control,例:WebForm1.aspx 有一个文本框名为 TextBox1,你利用 preserveForm 为 True 传递到 WebForm2.aspx,你仍然可以用 Request.Form("TextBox1") 来取得文本框的值。这种技术对向导式的多页面输入很有用。

http://www.docin.com/players/DocPlayer.swf?category=3&productId=58787306&shareLocationId=9

6、当使用SQL Server存储数据时,应当尽量使用存储过程访问数据。因此asp.net程序员都应当学会编写高效的存储过程。

7、在应用程序中如果只是读取访问数据,使用SqlDataReader对象而不是DataSet对象。而且DataSet的DataBind()是一个比较费时的操作。

8禁用调试模式。因为在调试模式下,Web应用程序的性能将受到比较大的影响,因此,在部署Web应用程序或进行任何性能测试之前,始终禁止调试模式。只在开发过程中开启调试模式。

9、优化配置文件。应当尽可能的优化Web服务器和Web应用的配置文件来符合自己的需要。在默认的情况下,ASP.NET配置被设置成启用最广泛的功能集并尽量适应最常见的情况。

10、在编码时,不要以来代码中的异常。不是说不要使用异常,在代码中应当捕捉所有可能发生的异常,但是我们应当尽量让异常不起作用。

11、使用缓存。对于经常访问的数据可以通过缓存技术来将数据进行缓存,对于页或者控件则可以选择页输出缓存技术来进行缓存,以提高页面的响应速度。

 

各位如果还有其他的一些提高ASP.NET Web应用程序性能的小建议也请补充一下哈....一起学习,一起进步....

posted on   意识与存在  阅读(592)  评论(5编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
点击右上角即可分享
微信分享提示