该文转自mx5721的博客:http://blog.csdn.net/mx5721/article/details/9138135

  • 设计考虑
  1. 性能和安全的考虑
  2. 应用程序逻辑划分的考虑:逻辑分层,然后使用工具将DLL打包;
  3. 亲和度的考虑:验证方面的考虑;
  4. 减少往返次数:尽量减少与服务器的交互;
  5. 避免在长时间任务中的阻塞:可以使用异步,.net也可以设置异步;
  6. 使用缓存:善于使用缓存来提高程序的性能,将常用且不常变动的内容缓存;
  7. 避免不必要的异常,尽量介绍异常的发生,应该在逻辑编码的过程中避免异常的发生如果不需要查看详细,可以直接使用try。。。final。
  • 线程方面的考虑
  1. 使用线程池的注意事项
  2. 避免手工创建线程
  3. 避免异步调用,除非你有额外的并行任务
  • 资源管理
  1. 对资源进行池化管理
  2. 显式的关闭和销毁资源(using,Close,Dispose)
  3. 不要对池化资源进行缓存
  4. 尽可能晚地获取,尽可能早的释放资源
  5. 避免按照请求身份进行模拟
  • 页面设计
  1. 减少页面体积:1压缩页面(Absolute HTML Compressor和Weblog Expert该工具可以压缩文件);2尽量将脚本和CSS等代码写成单独的文件或者调用相关的CDN文件;3适当的关闭ViewState;4.尽量限制使用图片或者使用压缩的图片;
  2. 启用缓冲功能:Buffer="true";
  3. 使用IsPostBack来减少重复的处理;
  4. 划分页面的内容提高缓存效率和简化呈现
  5. 确保页面可以批量编译
  6. 确保Debug设置为false
  7. 优化循环(for,foreach)
  8. 考虑使用Server.Transfer而不是Response.Redirect;Response.Redirect会先从服务器端详客户端发送反馈信息告诉客户端将转向;而前者将直接从服务器端跳转,这样就比后者减少一次交互;不过前者跳转后在URL中地址是不改变的并且不会发出完整的HTTP请求;
  9. 使用客户端验证;
  • 服务器控件及其使用
  1. 谨慎使用ViewState;可以通过重写SaveControlViewState来压缩,LoadControlViewState来获取ViewState
  2. 使用服务器控件的一些策略;
  3. 避免创建层级过多的内容结构
  • 数据访问与绑定
  1. 避免使用Page.DataBind;
  2. 减少DataBinder.Evel的使用;避免使用Evel("FirstName"),尽量使用<%#((Employee)Container.Item).FirstName%>;可以使用<%#Container.Item.DataIndex%>获取当前下标
  3. 尽量使用数据库分页,而不是用服务器自带的分页功能;可以使用OFFSET关键字进行分页;ROW_INDEX()可以获取当前影响行的下标,可以使用它来进行分页操作;
  4. 使用DataReader,LinqToSql中可以这样指明,Object
  5. 尽量使用存储过程和参数化查询;
  6. 阻止用户获取大量数据(分页,筛选,母子视图);关于母子视图是指页面显示方面的;
  7. 考虑数据缓存;<%@ OutputCache Duration="10" VaryByParam="none"%>方式进行页面缓存
  8. 何时使用Partial Page或Fragment Cache
  9. 分离动态数据和静态数据
  10. 配置内存限制
  11. 缓存必要的数据
  12. 正确的刷新数据
  13. 选择正确的缓存位置
  14. 使用VaryBy这个特性
  15. 使用Kernel cache
  • 状态管理
  1. 理解状态管理(应用程序状态,会话状态,视图状态,其他);1,尽可能通过客户端存储简单的状态2.考虑序列化成本
  2. 应用程序状态;1,使用静态属性来取代
  3. 会话状态,session存储在服务器端,cookie存储在客户端,但是每次会发送到服务器端;
  • 异常处理
  1. 实现Global.asax的异常处理:protected void Application_Error(object sender,EventArgs e){var error = Server.GetLastError();//记录log}
  2. 监控应用程序异常
  3. 尽量使用try/finally
  4. 在代码中尽可能避免异常
  5. 恰当的使用超时设置 httpRunTime executionTimeout="1000"
  • 安全方面的考虑
  1. 限制不必要的服务器流量
  2. 关闭匿名访问(如果可能)
  3. 验证用户的输入
  4. 必要按照每个用户身份请求进行身份莫伊
  5. 避免缓存敏感数据
  6. 区分安全和不安全的内容
  7. 只有在需要的页面使用SSL(如果可能,使用硬件的方案)
  8. 使用绝对路径做导航
  • IIS 7.0的处理模式
  1. 经典模式
  2. 集成模式(应该优先使用)
  • 配置IIS压缩
  1. CCC&javascript压缩(使用Boundle组件进行压缩)
  2. CDN
  3. 动/静态页面压缩
  • IIS负载均衡最佳实践
  1. 网卡配置
  2. 协议配置
  3. 使用负载均衡管理器(NLB)
  4. 群集参数优化
  5. 群集IP配置优化(使用ServerFarm进行配置负载均衡、使用ARR进行负载均衡)

以下是扩展内容:

  1. connectionstrings.com描述如何写连接字符串,考虑安全性和程序系能;
  2. fiddler2.com可以查看页面执行的详细情况;
  3. ilmerg合并DLL文件,提高性能:开发中尽量分层,部署的时候可以使用工具将DLL文件整合在一起;
  4. ILSpy,很好用的反编译工具;
  5. using:继承了IDisposable接口的类都可以用using;
  6. 在visual studio命令行中输入ildsm可以讲dll文件转为IL语言
  7. CDN:Content Delivery Network,如微软的CDN(微软为公众提供的功用借口)
  8. maxRequestLenght=""可以设置用户单次获取的大小,常用于下载限制大小;
  9. processModel memoryLimit=""设置缓存使用服务器内容的百分比
  10. 如何迁移会话(session)
  11. 给自定义方法加上异常提示:在注释中可以使用exception关键字:///<exception cref="System.OIException"><'exception>
  12. Web Plateform Installer 提供微软官方开发、部署等工具的下载
  13. Win Merge 常用比较文档工具
  14. ///<reference path=""/>在调用js的时候很有用,比如引用jquery的min.js和开发版本的js文件,这个时候可以在页面中直接调用min.js在单独的页面js文件中///<reference path="1.8.js"/>
  15. Boundle组件可以讲多个js等文件组装到一个指定文件中Boundle可以有效减少请求数(MVC中App_Start/BoudleConfig.cs文件中可以查看实例)
  16. 可以通过Event Viewer来查看相关日志(IIS重启等事件日志)

ASP.NET性能调试的更多相关文章

  1. Asp.net性能优化技巧

    [摘 要] 我只是提供我几个我认为有助于提高写高性能的asp.net应用程序的技巧,本文提到的提高asp.net性能的技巧只是一个起步,更多的信息请参考<Improving ASP.NET Pe ...

  2. 使用CoreProfiler/NanoProfiler实现跨平台&应用的整合性能调试

    摘要 NanoProfiler是一个开源.NET性能调试类库,CoreProfiler是其.NET Core版本的实现.在之前的一些文章中,我曾介绍过NanoProfiler的主要使用方式,以及如何为 ...

  3. 提高ASP.net性能的十种方法

    提高ASP.net性能的十种方法 2014-10-24  空城66  摘自 博客园  阅 67  转 1 转藏到我的图书馆   微信分享:   今天无意中看了一篇关于提高ASP.NET性能的文章,个人 ...

  4. CoreProfiler/NanoProfiler性能调试监控系列总目录

    NanoProfiler - 适合生产环境的性能监控类库 之 基本功能篇 NanoProfiler - 适合生产环境的性能监控类库 之 大数据篇 NanoProfiler - 适合生产环境的性能监控类 ...

  5. IOS 支付、性能调试、IPv6兼容支持等

    微信支付 支付宝支付 性能调试 IPv6兼容支持 APP引导页框架

  6. ASP.NET性能优化之减少请求

    在上篇<ASP.NET性能优化之让浏览器缓存动态网页> 中的方案中,浏览器发送If-Modified-Since将是否需要使用自己的缓存交给WEB服务器去决定,服务器告知浏览器去读缓存,浏 ...

  7. ASP.NET性能优化小结(ASP.NET&C#)

    ASP.NET: 一.返回多个数据集 检查你的访问数据库的代码,看是否存在着要返回多次的请求.每次往返降低了你的应用程序的每秒能够响应请求的次数.通过在单个数据库请求中返回多个结果集,可以减少与数据库 ...

  8. ASP.NET性能优化之分布式Session

    如果我们正在使用Session,那么构建高性能可扩展的ASP.NET网站,就必须解决分布式Session的架构,因为单服务器的SESSION处理能力会很快出现性能瓶颈,这类问题也被称之为Session ...

  9. ASP.NET性能优化小结

    一.返回多个数据集 检查你的访问数据库的代码,看是否存在着要返回多次的请求.每次往返降低了你的应用程序的每秒能够响应请求的次数.通过在单个数据库请求中返回多个结果集,可以减少与数据库通信的时间,使你的 ...

随机推荐

  1. c# excel print 打印 将所有列调整为一页

    excel有时候列数比较多,行数也比较多,转换成xps文档的时候,一般是通过打印来实现. 由于打印的范围限制,所以会出现本来在一行的数据,由于列数比较多,溢出范围,被打印到两页了. 为解决这个问题,需 ...

  2. iOS-常用三方工具

    #菜单 pod 'LGSideMenuController' # 刷新 pod 'MJRefresh' # 网络请求 pod 'AFNetworking', '~> 3.0' # 图片缓存 po ...

  3. POJ 2185 Milking Grid [KMP]

    Milking Grid Time Limit: 3000MS   Memory Limit: 65536K Total Submissions: 8226   Accepted: 3549 Desc ...

  4. python+opencv选出视频中一帧再利用鼠标回调实现图像上画矩形框

    最近因为要实现模板匹配,需要在视频中选中一个目标,然后框出(即作为模板),对其利用模板匹配的方法进行检测.于是需要首先选出视频中的一帧,但是在利用摄像头读视频的过程中我唯一能想到的方法就是: 1.在视 ...

  5. ES6 学习笔记之一 块作用域与let和const

    ---恢复内容开始--- 在学习ES6的块作用域和 let.const 之前,我们先来看看ES5以前的 var 关键字. var 关键字用于定义一个变量,通常我们会将其与变量的赋值合并为一条语句,就像 ...

  6. Ubuntu下的Samba服务器配置

    一. samba的安装: sudo apt-get insall samba 二. 创建共享目录: mkdir /home/phinecos/share sodu chmod 777 /home/ge ...

  7. tomcat管理授权:tomcat-users.xml

    ou are not authorized to view this page. If you have already configured the Manager application to a ...

  8. 从此不再担心键盘遮住输入框OC(一)

    文/Jiar_(简书作者)原文链接:http://www.jianshu.com/p/48993ff982c1著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”. 新版本在这里:从此不再担心 ...

  9. 5、flask之信号和mateclass元类

    本篇导航: flask实例化参数 信号 metaclass元类解析 一.flask实例化参数 instance_path和instance_relative_config是配合来用的:这两个参数是用来 ...

  10. easyui+ajax获取同表关联的数据

    easyui是我们常用的前端框架之一,easyui的使用使得前端页面更加美观.为了能够使用combobox,ajax必须同步. 该小程序是使用ssm框架,对数据库的数据进行查询,所以url对应着map ...