asp net n.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
ASP.Net 性能优化 PowerPoint Presentation
Download Presentation
ASP.Net 性能优化

Loading in 2 Seconds...

play fullscreen
1 / 13

ASP.Net 性能优化 - PowerPoint PPT Presentation


  • 115 Views
  • Uploaded on

ASP.Net 性能优化. ChengDu MIS Jin.J.Qin. 议 程. 1. 会话状态的恰当选择 2.Viewstate 优化 3.Cache 优化 4. 控件优化与选择 5. 返回多个记录集 6. 数据分页优化 7.Ado.Net 对象选择 8. 数据前绑定 9. 存储过程优化, C # Coding 优化. 1. 会话状态的恰当选择. StateServer :表示状态服务在一台名为 myserver 的机器的 42424 端口(默认端口)运行。

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'ASP.Net 性能优化' - dexter


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
asp net

ASP.Net 性能优化

ChengDu MIS

Jin.J.Qin

slide2
议 程
  • 1.会话状态的恰当选择
  • 2.Viewstate优化
  • 3.Cache优化
  • 4.控件优化与选择
  • 5.返回多个记录集
  • 6.数据分页优化
  • 7.Ado.Net对象选择
  • 8.数据前绑定
  • 9.存储过程优化,C# Coding优化
slide3
1.会话状态的恰当选择

StateServer :表示状态服务在一台名为myserver的机器的42424端口(默认端口)运行。

要在服务器上改变端口,可编辑HKLM\SYSTEM\CurrentControlSet\Services\aspnet_state注册表项中的Port值。

  • ASP.NET通过将会话状态信息存储在进程、状态服务器或SQL Server数据库中来解决这个问题。
  • <sessionState mode="InProc" cookieless="true" timeout="20"/>
  • <sessionState mode="StateServer" stateConnectionString="tcpip=myserver:42424" cookieless="false" timeout="20" />
  • <sessionState mode="sqlserver" sqlConnectionString="data source=127.0.0.1; userid=sa; password=" cookieless="false" timeout="20" />

管理员需要创建ASPState数据库,方法是运行

WinDir\Microsoft.Net\Framework\Version文件夹中的InstallState.sql脚本。

要配置SQL服务器,可以在命令行中运行SQL Server 提供的命令行工具osql.exe osql -S [ server name] -U [user] -P [password] InstallSqlState.sql

2 viewstate
2.Viewstate优化

定义:保持页面或控件状态的视图对象。

--使用ViewState ,每个对象都必须先序列化到 ViewState 中,回传时再进行反序列化,因此使用 ViewState是有代价的。

  • ViewState是什么
  • 什么地方可以不需要ViewState
    • (1)页面控件 (.ascx)
    • (2)页面不回传给自身。
    • (3)无需对控件的事件处理。
    • (4)控件没有动态的或数据绑定的属性值
  • 如何禁用ViewState
    • 单个页面:<%@ Page EnableViewState="False" %>
    • 每个页面:在 web.config 中 <Pages EnableViewState="false" />
    • 控件:ViewState属性
3 cache
3.Cache优化
  • 缓存简介
    • 页面缓存
      • 页面整体缓存
      • 局部页面缓存
    • 数据缓存
3 cache1
3.Cache优化
  • private Cache _cache;
  • 插入Cache:
  • _cache.Insert(key, obj, dep, DateTime.Now.AddSeconds(), TimeSpan.Zero, priority, null);
  • 移除Cache:
  • _cache.Remove(key);
  • 获取Cache中对象
  • object ocache=_cache[key];
  • Cache清除:
  • IDictionaryEnumerator enumerator = _cache.GetEnumerator();
  • while (enumerator.MoveNext())
  • {
  • _cache.Remove(enumerator.Key.ToString());
  • }

//从上下文中读缓存项

datatable newstb = HttpContext.Current.Items[cacheKey] as datatable ;

if (newstb == null)

{

//从HttpRuntime.Cache读缓存项

newstb = SiteCache.Get(cacheKey) as datatable ;

if (newstb == null)

{

//直接从数据库从读取

……..

//并将结果缓存到HttpRuntime.Cache中

_cache.Insert(cacheKey, newsSet, 60, CacheItemPriority.Normal);

}

  • System.Web.Caching :Cache
  • Cache的使用
  • 注意事项:
    • Cache即时更新
    • Cache时限
    • 指定文件或目录变更,则原Cache项不可用
    • 使用顺序注意项
slide7
4.控件优化与选择

DataGrid:自带最强大的数据显示控件,虽然使用方便了,HTML冗余代码多,性能开销大。,如果你想尽量基于Web标准开发,请抛弃它。

DataList:比DataGrid功能少了很多。但自定义性强,特有的多行数据显示。DataGrid能实现的功能,它基本能实现。所以建议使用它。

Repeater:功能最少,但自定义性强,开销最小。如果只需对数据显示,建议使用。

(1)如果html控件达不到所要实现的功能,而且和一些脚本语言(如javascrpt/vbscript)结合也不能实现的话,才会选择服务器控件。

(2)对于不需要服务器处理事件的控件,尽量选择html控件

(3)选择服务器控件后,也尽量对其控件优化,如取消一些页面状态等(参见前面的Viewstate)

  • Html控件和服务器控件的选择。
  • 数据控件选择优先顺序:Repeater、DataList、DataGrid
  • Ispostpack
    • 默认false.需要产生事件的时候才需设置为true,否者回发即耗资源,用户体验又差
  • 顺便提一下Ajax:优点,缺点
slide8
5.返回多个记录集
  • 不要期望GC会在你想象的时间内关掉连接,虽然最终都要销毁对象和关闭边接,尽量减少链接池。
  • 在单个数据库请求中返回多个结果集,可以减少与数据库通信的时间,使你的系统具有扩展性,也可以减少数据库服务器响应请求的工作量。
  • 根据情况将部分业务处理放在SP中(如表间操作非常频繁而业务本身较简单),减少数据库链接、访问次数。
  • 对数据的更新不需要返回结果集,建议使用ExecuteNonQuery
  • 单个值的查询使用ExecuteScalar
slide9
6.数据分页优化
  • Datagrid,又见Datagrid
    • 在web开发中,分页有两种方式:
    • (1)将全部数据取出再分页
    • (2)只取你想要页的数据。
    • DataGrid自带分页是第一种方式,在数据记录数不多时,可使用,简便。
    • 如果数据记录过大,比如10W条记录,每页100条,采用第一中方式是否明智?编写分页存储过程取数据是必要的,但是相对开发成本高。
7 ado net
7.Ado.Net对象选择
  • 神通广大的DataSet
  • 独立好用的DataTable
  • 快速简单的DataView
  • 飞速但不断奶的DataReader
slide11
8.数据前绑定
  • <%# DataBinder.Eval(Container.DataItem, "字段名") %>
    • 用DataBinder.eval 绑定不必关心数据来源(Dataread或dataset)。不必关心数据的类型eval会把这个数据对象转换为一个字符串。在底层绑定做了很多工作,使用了反射性能。正因为使用方便了,但却影响了数据性能。
  • <%#ctype(Container.DataItem,DataRowView).Row("字段名") %>
    • 当于dataset绑定时,DataItem其实式一个DataRowView(如果绑定的是一个数据读取器(dataread)它就是一个IdataRecord。)因此直接转换成DataRowView的话,将会给性能带来很大提升。
      • 1.需在页面添加<%@ Import namespace="System.Data"%>.
      • 2.注意字段名的大小写(要特别注意)。
9 c coding
9.存储过程优化,C# Coding优化
  • 参加其它Training
  • 没有最好,只有更好
slide13
~Q & A~

THANKS!

HA~HA~