Web開發性能優化總結 轉載

1.??? 使用存儲過程, (如果在程序里用exec 存儲過程 參數,這樣執行似乎并沒有快多少)

?????????? 在數據庫里是預編譯的,也不需要在字符串傳輸上花費大量時間。? 防sql注入攻擊。

??? 2.???? 盡量優化數據庫語句,使邏輯盡量簡單。??????

????????? @? 還有就是在使用函數時??? charindex?? >like > padindex? 效率依次遞減。??

????? ??? @查詢字段是否包含在以,分隔的字段串時,最好不要用in? 速度非常慢。? 還有好多,可以總結的,這里就不再描述了。

?? ?3.???EnableViewState(頁面的視圖狀態)。如果無特殊要求設置為false。

????????? 使用ViewState ,每個對象都必須先序列化到 ViewState 中,然后再通過回傳進行反序列化,因此使用 ViewState是沒有代價的。盡量減少使用對象,

????????? 如果可能,盡量減少放入 ViewState 中的對象的數目。下面情況基本上可以禁用viewstate:

??????? (1)頁面控件 (.ascx)

??????? (2)頁面不回傳給自身。

??????? (3)無需對控件的事件處理。

??????? (4)控件沒有動態的或數據綁定的屬性值(或對于每個postpack都在代碼中處理)

???????? 單個頁面或每個頁面都禁用 ViewState,如下所示:

???????? 單個頁面:<%@ Page EnableViewState="False" %>

???????? 每個頁面:在 web.config 中 <Pages EnableViewState="false" />

???????? EnableSessionState保持默認值即可(如果頁面用到sessionstate它才會占用資源)。

??????? ?EnableViewStateMac如果無安全上的特殊要求,保持默認值。

?? 4.?? Pagelayout.頁面布局模型。建議使用Flowlayout(元素不帶絕對定位屬性添加).Gridlayout(絕對定位屬性)由于采用絕對定位,將會比Flowlayout生產更多的 ? ? ? ? ?代碼,主要是控件的定位信息。? radiobuttonlist?? 和? checkboxlist等

?? 5.?? 項目發布的時候切記解除頁面的Debug狀態

?? 6.?? 盡量選擇html控件。能在客戶端實現的功能就在客戶端實現(熟練掌握javascript),減少服務器的壓力。

???????? 數據控件選擇順序:Repeater、DataList、? DataGrid

?? 7.?? 在建立數據庫連接后只有在真正需要操作時才打開連接,使用完畢后馬上關閉,從而盡量減少數據庫連接打開的時間,避免出現超出連接限制的情況

?? 8.?? 字符串操作性能優化

???????? 使用值類型的ToString方法
  ?? 在連接字符串時,經常使用"+"號直接將數字添加到字符串中。這種方法雖然簡單,也可以得到正確結果,但是由于涉及到不同的數據類型,數字需要通過裝箱 ? ? ? ? ?操?。作轉化為引用類型才可以添加到字符串中。但是裝箱操作對性能影響較大,因為在進行這類處理時,將在托管堆中分配一個新的對象,原有的值復制

???????? 到新創建的對象中。使用值類型的ToString方法可以避免裝箱操作,從而提高應用程序性能。

??????? 運用StringBuilder類
  ?? String類對象是不可改變的,對于String對象的重新賦值在本質上是重新創建了一個String對象并將新值賦予該對象,其方法ToString對性能的提高并非

??????? 很顯著。在處理字符串時,最好使用StringBuilder類,其.NET 命名空間是System.Text。該類并非創建新的對象,而是通過Append,Remove,Insert

??????? 等方法直接對字符串進行操作,通過 ToString方法返回操作結果。?

?? 9.? 只要可能就緩存數據或頁輸出

??????? ASP.NET 提供了一些簡單的機制,它們會在不需要為每個頁請求動態計算頁輸出或數據時緩存這些頁輸出或數據。另外,通過設計要進行緩存的頁和數據請

??????? 求?(特別是在站點中預期將有較大通訊量的區域),可以優化這些頁的性能。與 .NET Framework 的任何 Web 窗體功能相比,適當地使用緩存可以更好的

??????? 提高站點的性能,有時這種提高是超數量級的。使用 ASP.NET 緩存機制有兩點需要注意。首先,不要緩存太多項。緩存每個項均有開銷,特別是在內存使

??????? 用方面。不要緩存容易重新計算和很少使用的項。其次,給緩存的項分配的有效期不要太短。很快到期的項會導致緩存中不必要的周轉,并且經常導致更多的

??????? 代碼清除和垃圾回收工作。若關心此問題,請監視與 ASP.NET Applications 性能對象關聯的 Cache Total Turnover Rate 性能計數器。高周轉率可能說

??????? 明存在問題,特別是當項在到期前被移除時。這也稱作內存壓力。

?10.? 使用 HttpServerUtility.Transfer 方法在同一應用程序的頁面間重定向
  ? 采用 Server.Transfer 語法,在頁面中使用該方法可避免不必要的客戶端重定向。但要根據情況區分response.redirect .response.execute的使用方

?????? 法。區別對待。????????
? 11. 適當地使用公共語言運行庫的垃圾回收器和自動內存管理
   小心不要給每個請求分配過多內存,因為這樣垃圾回收器將必須更頻繁地進行更多的工作。另外,不要讓不必要的指針指向對象,因為它們將使對象保持活動狀 ? ? ? ?態,并且應盡量避免含 Finalize 方法的對象,因為它們在后面會導致更多的工作。特別是在 Finalize 調用中永遠不要釋放資源,因為資源在被垃圾回收器回收

????? 之前可能一直消耗著內存。最后這個問題經常會對 Web 服務器環境的性能造成毀滅性的打擊,因為在等待 Finalize 運行時,很容易耗盡某個特定的資源。

?? 12. 不要依賴代碼中的異常

??????? 因為異常大大地降低性能,所以您不應該將它們用作控制正常程序流程的方式。如果有可能檢測到代碼中可能導致異常的狀態,請執行這種操作。不要在處理該 ? ? ? ? 狀態之前捕獲異常本身。常見的方案包括:檢查 null,分配給將分析為數字值的 String 一個值,或在應用數學運算前檢查特定值。下面的示例演示可能

??????? 導致異常的代碼以及測試是否存在某種狀態的代碼。

?? 13.使用 HttpResponse.Write 方法進行字符串串聯
   該方法提供非常有效的緩沖和連接服務。但是,如果您正在執行廣泛的連接,請使用多個 Response.Write 調用。

?? ??? 下面示例中顯示的技術比用對 Response.Write 方法的單個調用連接字符串更快。

Response.Write("atest");
????? ?Response.Write(strString);
?????? Response.Write("boxbig");
14.除非有特殊的原因要關閉緩沖,否則使其保持打開
  禁用 Web 窗體頁的緩沖會導致大量的性能開銷。 ?
15.避免到服務器的不必要的往返過程
?????? 使用 Page.IsPostBack 避免對往返過程執行不必要的處理
?????? 雖然您很可能希望盡量多地使用 Web 窗體頁框架的那些節省時間和代碼的功能,但在某些情況下卻不宜使用 ASP.NET 服務器控件和回發事件處理。通常,
只有在檢索或存儲數據時,您才需要啟動到服務器的往返過程。多數數據操作可在這些往返過程間的客戶端上進行。 ?
16.ASP.NET應用程序性能測試
   在對ASP.NET應用程序進行性能測試之前,應確保應用程序沒有錯誤,而且功能正確。具體的性能測試可以采用以下工具進行:Web Application
Strees? Tool (WAS)是Microsoft發布的一個免費測試工具。它可以模擬成百上千個用戶同時對web應用程序進行訪問請求,在服務器上形成流量負載,
從而達到測試的目的,可以生成平均TTFB、平均TTLB等性能匯總報告。 Application Center Test (ACT) 是一個測試工具,附帶于Visual Studio.NET的
企業版中,是Microsoft正式支持的web應用程序測試工具。它能夠直觀地生成圖表結果,功能比WAS多,但不具備多個客戶機同時測試的能力。服務器操作
系統"管理工具"中的"性能"計數器,可以對服務器進行監測以了解應用程序性能。微軟還是出了IIS日志查看工具 LogParserLizardSetup.msi ,
LogParser.msi 兩者配合使用。可查看每一個頁?面加載調用執行的時間。 ?
17.? 壓縮js,js在頁面中調用的大小寫要保持一致,免得緩存了不同的文件,頁面的js可以的話,寫成單位的文件進行調用 。圖片少用jpeg,使用gzip 對網頁進行 ? ? ??? 壓縮. 加快頁面展示速度。 ??
18.??把調用js,盡量寫在頁面底部, 還有viewstate 狀態也可以重寫到頁面低部, 也可以把viewstate進行壓縮。
條件是viewstate必要要用的情況之下。
適當使用一些優化技巧,有助于程序運行速度,軟硬件合適配置,對于一個開發者來說也是一項深遠的工程。

轉載于:https://www.cnblogs.com/csj007523/archive/2010/04/09/1708448.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/276109.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/276109.shtml
英文地址,請注明出處:http://en.pswp.cn/news/276109.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

金三銀四的騰訊、阿里、?字節等大廠前端社招面經

大家好&#xff0c;我是若川。最近金三銀四&#xff0c;今天分享一篇騰訊、阿里、字節等大廠的前端社招面試經驗的好文&#xff0c;相信看完會有所收獲。也歡迎點擊下方卡片關注或者星標我的公眾號若川視野作者面了將近一個月&#xff0c;目前還沒掛過&#xff0c;但由于各種因…

JS中創建函數的幾種方式

使用 "函數聲明" 創建函數 語法&#xff1a;* function 函數名([形參1,形參2...形參N]){* 語句...* } */function fun2(){console.log("這是我的第二個函數~~~");alert("哈哈哈哈哈");document.write("~~~~…

ssm提交post_我用spring mvc做,用post方式提交,后臺獲取不到參數值,用get方式就可以,什么問題...

展開全部因為form表單e68a843231313335323631343130323136353331333365646330的enctype編碼方式不同導致的&#xff1b;enctype 屬性規定在發送到服務器之前應該如何對表單數據進行編碼。默認地&#xff0c;表單數據會編碼為 "application/x-www-form-urlencoded"。就…

網頁設計簡約_簡約網頁設計的主要功能

網頁設計簡約重點 (Top highlight)Minimalism is synonymous with simplicity. Not quite. As the name suggests, minimalism is definitely not about opulent design. But the assumption that minimalism is design-less and plain is also wrong. Minimalism is simple ye…

MySQL_數據庫數據類型(data type)介紹

轉載鏈接&#xff1a;http://www.360sdn.com/mysql/2013/0511/78.html MySQL_數據庫數據類型(data type)介紹 mysql數據庫的數據類型(data type)分以下幾種:數值類型,字符串類型 一、數值類型 MySQL 的數值類型可以大致劃分為兩個類別&#xff0c;一個是整數&#xff0c;另一…

Expo 2010 Japan Pavilion

^_^轉載于:https://www.cnblogs.com/mmmhhhlll/archive/2010/04/16/1713680.html

深度對比學習Vue和React兩大框架

作為國內應用最廣的兩個框架&#xff0c;Vue 和 React 是前端必須掌握的內容&#xff0c;也是面試的重點。但大多數讀者都只擅長其中一個框架&#xff0c;當面試涉及到另一個框架的內容時&#xff0c;就答不好了。比如虛擬dom&#xff0c;兩個框架中都有應用&#xff0c;面試官…

PHP Token(令牌)設計

轉載鏈接&#xff1a;http://www.jb51.net/article/13756.htm PHP Token(令牌)設計 設計目標: 避免重復提交數據. 檢查來路,是否是外部提交 匹配要執行的動作(如果有多個邏輯在同一個頁面實現,比如新增,刪除,修改放到一個PHP文件里操作) 這里所說的token是在頁面顯示的時候,寫到…

java rwd_面向任務的設計-不僅限于Mobile First和RWD

java rwdWe already know that majority of solutions should start with a design for smartphones, we know that all websites should be responsive. Now, it’s time to think about holistic solutions with specific tasks adapted to all kind of devices.我們已經知道…

python中關鍵字 表示空類型_python中什么表示空類型

python中什么表示空類型&#xff1f;python中None表示空類型。表示該值是一個空對象&#xff0c;空值是Python里一個特殊的值&#xff0c;用None表示。None不能理解為0&#xff0c;因為0是有意義的&#xff0c;而None是一個特殊的空值。可以將None賦值給任何變量&#xff0c;也…

HOJ 1015 Nearly prime numbers

代碼 //Nearly prime number is an integer positive number for which it is possible //to find such primes P1 and P2 that given number is equal to P1*P2.#include <stdio.h>#include <stdlib.h>#include <math.h>//decide n whither is a nearly pri…

「前端工程化」該怎么理解?

大家好&#xff0c;我是若川。今天分享一篇「前端工程化」的好文。非廣告&#xff0c;請放心閱讀。可點擊下方卡片關注我&#xff0c;或者查看系列文章。今天發文比較晚&#xff0c;以往都是定時早上7:30發文&#xff0c;也不知道是不是有點早。一.什么是前端工程&#xff1f;一…

axure文本框值相加_Axure教程:計數文本域實現

原標題&#xff1a;Axure教程&#xff1a;計數文本域實現制定UI規范時&#xff0c;遇到實現“限制字數的文本域”的交互問題&#xff0c;即當用戶輸入的字數長度超過限制要求&#xff0c;如何只保留規定長度的文本&#xff1f;效果如下&#xff1a;我們知道【Number】類型的文本…

figma下載_Figma和ProtoPie中的原型制作,比較

figma下載第1部分 (Part 1) Prototyping has never had such a high profile with a whole host of tools that now give you varying ability to realize your designs beyond their static UI and into a working usable thing. It’s fair to say that prototyping within t…

拗口翻譯

I find many times people use temporary tables because they learned in other databases that joining too many tables in a single query is a ?bad thing?. This is a practice that must be unlearned for Oracle development. Rather then trying to out‐smart the …

javascript 手機手勢動作touch觸屏原理分析

轉載鏈接&#xff1a;http://www.lvtao.net/web/220.html $(function(){document.getElementById("moveId").addEventListener(touchstart, touchStart);document.getElementById("moveId").addEventListener(touchmove, touchMove);document.getElementBy…

并發工具類(四)線程間的交換數據 Exchanger

前言JDK中為了處理線程之間的同步問題&#xff0c;除了提供鎖機制之外&#xff0c;還提供了幾個非常有用的并發工具類&#xff1a;CountDownLatch、CyclicBarrier、Semphore、Exchanger、Phaser&#xff1b;??CountDownLatch、CyclicBarrier、Semphore、Phaser 這四個工具類提…

「前端組件化」該怎么理解?

大家好&#xff0c;我是若川。今天分享一篇關于「前端組件化」的好文。歡迎點擊下方卡片關注我。以下是正文~這里我們一起來學習前端組件化的知識&#xff0c;而組件化在前端架構里面是最重要的一個部分。講到前端架構&#xff0c;其實前端架構中最熱門的就有兩個話題&#xff…

大屏設計的視覺統一_視覺設計中的統一

大屏設計的視覺統一視覺設計的統一性是什么&#xff1f; (What is unity in visual design?) The concept of unity in visual design means a group of elements working together to create a greater whole. It means, as the clich goes: A whole that is greater than th…

l2范數求導_機器學習中的范數規則化之(一)L0、L1與L2范數

source: https://blog.csdn.net/zouxy09/article/details/24971995zouxy09qq.comhttp://blog.csdn.net/zouxy09今天我們聊聊機器學習中出現的非常頻繁的問題&#xff1a;過擬合與規則化。我們先簡單的來理解下常用的L0、L1、L2和核范數規則化。最后聊下規則化項參數的選擇問題。…