超碰人人人人人,色婷婷综合久久久久中文一区二区,国产-第1页-浮力影院,欧美老妇另类久久久久久

LOGO OA教程 ERP教程 模切知識(shí)交流 PMS教程 CRM教程 開(kāi)發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

[點(diǎn)晴永久免費(fèi)OA]提高ASP.NET_Web應(yīng)用性能的24種方法和技巧

admin
2017年4月20日 9:50 本文熱度 6177
在這篇文章中,將介紹一些提高 ASP.NET Web 應(yīng)用性能的方法和技巧。眾所周知,解決性能問(wèn)題是一項(xiàng)繁瑣的工作,當(dāng)出現(xiàn)性能問(wèn)題,每個(gè)人都會(huì)歸咎于編寫代碼的開(kāi)發(fā)人員。

那性能問(wèn)題到底該如何解決?
以下是應(yīng)用系統(tǒng)發(fā)布前,作為 .NET 開(kāi)發(fā)人員需要檢查的點(diǎn)。

那性能問(wèn)題到底該如何解決?
以下是應(yīng)用系統(tǒng)發(fā)布前,作為 .NET 開(kāi)發(fā)人員需要檢查的點(diǎn)。

1.debug=「false」

當(dāng)創(chuàng)建 ASP.NET Web應(yīng)用程序,默認(rèn)設(shè)置為「true」。開(kāi)發(fā)過(guò)程中,設(shè)置為「true」是非常有用多,但在應(yīng)用程序發(fā)布部署時(shí),需將其設(shè)置為「false」。

<compilation defaultLanguage="C#" debug="false" targetFramework="4.0" />  

2.關(guān)閉 tracing(追蹤)

tracing 是非??膳碌模阌袥](méi)有忘記關(guān)閉它。假如沒(méi)用,請(qǐng)確定編輯 web.config 并且關(guān)閉它。它將占用大量您的程序資源。

<trace enabled="false" requestLimit=”10” pageoutput=”false” traceMode=”SortByTime” localOnly=”true”>  

3.禁用 session

假如您用不到 session 會(huì)話跟蹤請(qǐng)務(wù)必禁用它。您可以在每個(gè) asp.net 頁(yè)面中設(shè)置如下:

<%@ page language="c#" codebehind="webform1.aspx.cs" autoeventwireup="false" inherits="webapplication1.webform1"

enablesessionstate="false" %>  

4.使用發(fā)布版本部署應(yīng)用

部署應(yīng)用程序到生產(chǎn)環(huán)境時(shí),要確保使用的發(fā)布版本模式,而不是調(diào)試模式。如果使用調(diào)試模板極容易發(fā)生請(qǐng)求超時(shí)。部署成發(fā)布版本,你將會(huì)發(fā)現(xiàn)速度有很大的提升。

5.關(guān)閉頁(yè)面的 View State

View State 主要是在提交以后回顯用的,它只有在頁(yè)面中的數(shù)據(jù)是提交到本頁(yè)時(shí)才有用。其默認(rèn)是「true」。如果你沒(méi)有使用表單數(shù)據(jù)回傳,那么可以關(guān)閉 View State。

<%@ Page EnableViewState="false" %>  

6.避免使用 Response.Redirect

Redirect(重定向)非常麻煩,它僅用于用于從當(dāng)前物理服務(wù)器開(kāi)發(fā)跳轉(zhuǎn)到其它服務(wù)器。如果只是在本服務(wù)器開(kāi)發(fā)內(nèi)頁(yè)面跳轉(zhuǎn)請(qǐng)使用 Server.Transfer 語(yǔ)法,這樣會(huì)減少很多沒(méi)有必要的客戶端重定向。

7.運(yùn)用 StringBuilder 類以及使用 ToString()方法

String 類對(duì)象是不可改變的,對(duì)于 String 對(duì)象的重新賦值在本質(zhì)上是重新創(chuàng)建了一個(gè) String 對(duì)象并將新值賦予該對(duì)象,其方法 ToString 對(duì)性能的提高并非很顯著。在處理字符串時(shí),最好使用 StringBuilder 類,其 .NET 命名空間是 System.Text。該類并非創(chuàng)建新的對(duì)象,而是通過(guò) Append,Remove,Insert 等方法直接對(duì)字符串進(jìn)行操作,通過(guò) ToString 方法返回操作結(jié)果。 
其定義及操作語(yǔ)句如下所示:

int num;  
  System.Text.StringBuilder str = new System.Text.StringBuilder(); //創(chuàng)建字符串 
  str.Append(num.ToString()); //添加數(shù)值num 
  Response.Write(str.ToString); //顯示操作結(jié)果

8.避免拋出異常

異常會(huì)導(dǎo)致速度變慢,并且使得應(yīng)用程序頁(yè)面顯示異常,使得無(wú)法進(jìn)行其他操作。可以使用 try / catch 使出現(xiàn)的異常記錄到日志文件中。

9.使用 finally 方法回收資源

假如你在應(yīng)用開(kāi)發(fā)中大量使用其他數(shù)據(jù)庫(kù)連接和訪問(wèn)文件,請(qǐng)確定在用完后關(guān)閉它們。finally 塊是程序中最后被執(zhí)行,因此在這里面的代碼會(huì)確保一定會(huì)被執(zhí)行,關(guān)閉代碼一定要在這個(gè)開(kāi)發(fā)方法塊中執(zhí)行。

10.使用客戶端腳本驗(yàn)證

用客戶端驗(yàn)證代替服務(wù)器開(kāi)發(fā)端驗(yàn)證。服務(wù)器開(kāi)發(fā)端數(shù)據(jù)驗(yàn)證將會(huì)大量消耗您的服務(wù)器開(kāi)發(fā)上的資源,并且會(huì)代來(lái)大量的頁(yè)面數(shù)據(jù)回傳。

11.使用 Page.IsPostback

請(qǐng)確保不執(zhí)行過(guò)多的回傳代碼。使用 Page.IsPostBack 屬性,以確保只執(zhí)行頁(yè)面初始化邏輯,當(dāng)一個(gè)頁(yè)面第一次加載,而不向響應(yīng)客戶回發(fā)。

12.使用分頁(yè)

大多數(shù) Web 應(yīng)用程序數(shù)據(jù)是以表格形式顯示。分頁(yè)有利用應(yīng)用開(kāi)發(fā)程序效率。每次盡量顯示小部分?jǐn)?shù)據(jù),這樣會(huì)加快頁(yè)面顯示速度。

13.使用 Ajax 異步調(diào)用

使用 Ajax 方法,進(jìn)行異步調(diào)用。

14.刪除未使用的 HttpModules

對(duì)于 httpModules,我們可以理解為:建立一個(gè)通用的可用被插入任何 Web 應(yīng)用程序的 HttpApplication 事件鉤子。使用 HttpModule 是可復(fù)用的,不需要特定語(yǔ)應(yīng)用程序代碼的,只需要 web.config 中的一個(gè)條目。 在 web.config 文件中,刪除未使用的 HttpModules。

15.避免遞歸函數(shù)/嵌套循環(huán)

在任何編程語(yǔ)言中都需避免嵌套循環(huán)和遞歸函數(shù),以提高性能。

16.不使用不必要的 Server Control

ASP.NET 中,大量的服務(wù)器端控件方便了程序開(kāi)發(fā),但也可能帶來(lái)性能的損失,因?yàn)橛脩裘坎僮饕淮畏?wù)器端控件,就產(chǎn)生一次與服務(wù)器端的往返過(guò)程。因此,非必要,應(yīng)當(dāng)少使用 Server Control。

17.調(diào)用多個(gè)操作時(shí),請(qǐng)使用多線程

問(wèn)題出現(xiàn)時(shí),單線程卡在此問(wèn)題上長(zhǎng)時(shí)間運(yùn)行。因此,可以使用多個(gè)線程以提高應(yīng)用程序的響應(yīng)速度。

18.數(shù)據(jù)庫(kù)的連接和關(guān)閉

訪問(wèn)數(shù)據(jù)庫(kù)資源需要?jiǎng)?chuàng)建連接、打開(kāi)連接和關(guān)閉連接幾個(gè)操作。這些過(guò)程需要多次與數(shù)據(jù)庫(kù)交換信息以通過(guò)身份驗(yàn)證,比較耗費(fèi)服務(wù)器資源。ASP.NET 中提供了連接池(Connection Pool)改善打開(kāi)和關(guān)閉數(shù)據(jù)庫(kù)對(duì)性能的影響。系統(tǒng)將用戶的數(shù)據(jù)庫(kù)連接放在連接池中,需要時(shí)取出,關(guān)閉時(shí)收回連接,等待下一次的連接請(qǐng)求。連接池的大小是有限的,如果在連接池達(dá)到最大限度后仍要求創(chuàng)建連接,必然大大影響性能。因此,在建立數(shù)據(jù)庫(kù)連接后只有在真正需要操作時(shí)才打開(kāi)連接,使用完畢后馬上關(guān)閉,從而盡量減少數(shù)據(jù)庫(kù)連接打開(kāi)的時(shí)間,避免出現(xiàn)超出連接限制的情況。

19.將 SqlDataReader 類用于快速只進(jìn)數(shù)據(jù)游標(biāo)

SqlDataReader 類提供了一種讀取從 SQL Server 數(shù)據(jù)庫(kù)檢索的只進(jìn)數(shù)據(jù)流的方法。如果當(dāng)創(chuàng)建 ASP.NET 應(yīng)用程序時(shí)出現(xiàn)允許您使用它的情況,則 SqlDataReader 類提供比 DataSet 類更高的性能。情況之所以這樣,是因?yàn)?SqlDataReader 使用 SQL Server 的本機(jī)網(wǎng)絡(luò)數(shù)據(jù)傳輸格式從數(shù)據(jù)庫(kù)連接直接讀取數(shù)據(jù)。另外,SqlDataReader 類實(shí)現(xiàn) IEnumerable 接口,該接口也允許您將數(shù)據(jù)綁定到服務(wù)器控件。有關(guān)更多信息,請(qǐng)參見(jiàn) SqlDataReader 類。有關(guān) ASP.NET 如何訪問(wèn)數(shù)據(jù)的信息,請(qǐng)參見(jiàn)通過(guò) ASP.NET 訪問(wèn)數(shù)據(jù)。

20.高性能的 SQL 語(yǔ)句規(guī)則

  • 盡量避免全表掃描
  • 盡量避免在 where 子句中對(duì)字段進(jìn)行 null 值判斷
  • 盡量避免在 where 子句中使用 != 或 <> 操作符
  • 盡量避免在 where 子句中使用 or 來(lái)連接條件
  • in 和 not in 也要慎用
  • 不要在 where 子句中的「=」左邊進(jìn)行函數(shù)、算術(shù)運(yùn)算或其他表達(dá)式運(yùn)算
  • Update 語(yǔ)句,如果只更改1、2個(gè)字段,不要Update全部字段
  • 對(duì)于多張大數(shù)據(jù)量(這里幾百條就算大了)的表JOIN,要先分頁(yè)再JOIN,否則邏輯讀會(huì)很高,性能很差
  • 盡可能的使用 varchar/nvarchar 代替 char/nchar 更多規(guī)則方法請(qǐng)參照:http://database.51cto.com/art/201407/445934.htm

21.緩存

緩存是一種用空間換取時(shí)間的技術(shù),通俗點(diǎn)也就是說(shuō)把你得到的數(shù)據(jù)存放在內(nèi)存中一段時(shí)間,在這短時(shí)間內(nèi)服務(wù)器不去讀取數(shù)據(jù)庫(kù)、或是真實(shí)的數(shù)據(jù)源,而是讀取你存放在內(nèi)存中的數(shù)據(jù)。 緩存是網(wǎng)站性能優(yōu)化不可缺少的一種數(shù)據(jù)處理機(jī)制,他能有效的緩解數(shù)據(jù)庫(kù)壓力。 ASP.NET 中的緩存主要分為:

  • 頁(yè)面緩存
  • 數(shù)據(jù)源緩存
  • 自定義數(shù)據(jù)緩存

22.做負(fù)載均衡和服務(wù)器加成

負(fù)載均衡不應(yīng)該僅僅被看作是實(shí)現(xiàn)可擴(kuò)展性的一種手段。盡管它肯定提高了可擴(kuò)展性,很多時(shí)候它增加了 Web 應(yīng)用程序的性能,因?yàn)檎?qǐng)求和用戶都散發(fā)著多個(gè)服務(wù)器。

23.通過(guò) FxCop 做代碼檢查和優(yōu)化

FxCop 是一個(gè)代碼分析工具,它使用基于規(guī)則的引擎,來(lái)檢查出你代碼中不合規(guī)范的部分;你也可以定制自己的規(guī)則加入到這個(gè)引擎。

其中的一些規(guī)則是:

  • 避免過(guò)多的局部變量
  • 避免使用未調(diào)用的私有代碼
  • 避免未實(shí)例化的內(nèi)部類
  • 避免使用未密封的特性
  • 避免進(jìn)行不必要的強(qiáng)制轉(zhuǎn)換
  • 以內(nèi)聯(lián)方式初始化引用類型的靜態(tài)字段
  • 用 NeutralResourcesLanguageAttribute 標(biāo)記程序集
  • 將成員標(biāo)記為 Static 等等。

24.ASP.NET 性能監(jiān)控工具

這些是用于監(jiān)視代碼的性能的工具。

  • .NET 內(nèi)存分析器
  • OneAPM
  • Red Gate ANTS 性能分析工具
  • Fiddler
  • 性能計(jì)數(shù)器

結(jié)論: 以上是一些性能調(diào)整的提示。性能調(diào)優(yōu)不是一天兩天的工作,而是一個(gè)反反復(fù)復(fù)的過(guò)程。對(duì)于網(wǎng)站開(kāi)發(fā)人員來(lái)說(shuō),在編寫 ASP.NET 應(yīng)用程序時(shí)注意性能問(wèn)題,養(yǎng)成良好的習(xí)慣,提高應(yīng)用程序性能,至少可以推遲必需的硬件升級(jí),降低網(wǎng)站的成本。

更多應(yīng)用性能優(yōu)化方法,請(qǐng)參照:
1.http://www.c-sharpcorner.com/UploadFile/dev4634/performance-tuning-in-Asp-Net-web-applications/ 
2.http://tech.it168.com/d/2008-07-16/200807161434833_all.shtml 
3.http://news.oneapm.com/11-asp-net-performance-oneapm/


該文章在 2017/4/20 9:52:43 編輯過(guò)
關(guān)鍵字查詢
相關(guān)文章
正在查詢...
點(diǎn)晴ERP是一款針對(duì)中小制造業(yè)的專業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國(guó)內(nèi)大量中小企業(yè)的青睞。
點(diǎn)晴PMS碼頭管理系統(tǒng)主要針對(duì)港口碼頭集裝箱與散貨日常運(yùn)作、調(diào)度、堆場(chǎng)、車隊(duì)、財(cái)務(wù)費(fèi)用、相關(guān)報(bào)表等業(yè)務(wù)管理,結(jié)合碼頭的業(yè)務(wù)特點(diǎn),圍繞調(diào)度、堆場(chǎng)作業(yè)而開(kāi)發(fā)的。集技術(shù)的先進(jìn)性、管理的有效性于一體,是物流碼頭及其他港口類企業(yè)的高效ERP管理信息系統(tǒng)。
點(diǎn)晴WMS倉(cāng)儲(chǔ)管理系統(tǒng)提供了貨物產(chǎn)品管理,銷售管理,采購(gòu)管理,倉(cāng)儲(chǔ)管理,倉(cāng)庫(kù)管理,保質(zhì)期管理,貨位管理,庫(kù)位管理,生產(chǎn)管理,WMS管理系統(tǒng),標(biāo)簽打印,條形碼,二維碼管理,批號(hào)管理軟件。
點(diǎn)晴免費(fèi)OA是一款軟件和通用服務(wù)都免費(fèi),不限功能、不限時(shí)間、不限用戶的免費(fèi)OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved