ASP.NET MVC 提高運行速度的幾種性能優化方法

来源:http://www.cnblogs.com/rushme/archive/2017/05/15/6857472.html
-Advertisement-
Play Games

主要介紹ASP.NETMVC 應用提速的六種方法,因為沒有人喜歡等待,所以介紹幾種常用的優化方法。 大家可能會遇到排隊等待,遇到紅燈要等待,開個網頁要等待,等等等。 理所當然,沒有人喜歡等待網頁慢吞吞地載入,尤其是在移動端訪問網站時。其實,Web 開發者敏感的神經決定了我們等待與否。 現在,快速響應 ...


主要介紹ASP.NETMVC 應用提速的六種方法,因為沒有人喜歡等待,所以介紹幾種常用的優化方法。 大家可能會遇到排隊等待,遇到紅燈要等待,開個網頁要等待,等等等。 理所當然,沒有人喜歡等待網頁慢吞吞地載入,尤其是在移動端訪問網站時。其實,Web 開發者敏感的神經決定了我們等待與否。 現在,快速響應不僅是來自用戶的要求,還是決定搜索引擎的速度。 考慮到大多數網站都存在速度方面的問題,在本文中將介紹六種為 ASP.NET MVC 應用提速的方法。 希望可以幫助到大家!!!


1. 應用程式緩存

  • 緩存一直都是優化應用時屢試不爽的最後絕招。只要使用得當,緩存絕對可以有效加速應用。
  • 在進行資料庫調用以檢索記錄時,正是實現應用程式緩存的最佳時機。
  • 譬如說,你搭建了一個博客。當訪客請求某一篇博文時,你將其從資料庫中檢索出來,保存在緩存中。當下一個訪客通過 ID 請求同一篇博文時,應用程式會首先根據 ID 在緩存中尋找博文,如果找到,就將之返回給訪客,而無需訪問資料庫。
  • 這節省了資料庫調用的高昂開支。
延伸閱讀:通過添加簡單的緩存層以實現高效快速的網站


2. 優化圖片

  • 有時候,取決於文章內容的不同,圖片可能會是一篇博文中最大的資源。
  • 你應該壓縮這些龐大的資源。圖片越小,網頁渲染的速度越快。
  • Image Optimizer(圖片優化)插件是很有用的 Visual Studio插件。選定你的所有圖像,再選擇無損(Lossless)或者有損(Lossy)圖片優化模式,每張圖片都會根據一定的比率壓縮大小。
  • 此外,如果你掌握了 Grunt 或 Gulp 之類的前端客戶端工具,就可以在創建應用或者部署應用時自動實現圖片優化。
延伸閱讀:Visual Studio 2015 圖片優化插件


3. 使用 Sprites

  • 每個網站都有圖片。圖片幾乎是必不可少的網站元素。
  • 但是,如果你有很多小圖片,該如何處理呢?假設有20張小圖片,那就是20次圖片檢索請求,每張圖片一次。
  • 這時候,Sprites 就能派上用場啦。
  • Sprites 是由眾多小圖片集合而成的一張大圖。瀏覽器可以直接請求這張大圖,你再通過 CSS 技術抓取其中的小圖片,並將其展示在網頁的不同位置上。
  • 我知道,很多開發者並不熟悉 CSS。因此,建議大家找點資料好好學習一下。CSS 真的非常有用。
  • 此外,還有許多線上 sprite 生成器,可以協助這一過程。(Piskel, Sprite Cow, 或者谷歌搜索:“線上 Sprite 生成器”)
延伸閱讀:ASP.NET MVC:數據驅動 CSS Sprites


4. ETags

  • 有些讀者可能不知道 ETags 為何物。其實,ETags 是用於 Web 緩存驗證的工具,允許有條件的客戶端請求。
  • 通過 ETags,瀏覽器可以判斷某項資源是否被需要。如果不需要,瀏覽器就不會向 Web 伺服器發送請求,從而最小化請求數量。
  • 筆者甚至將 ETag ActionFilter 類列為最喜歡的 ActionFilter 類,因為 ETags 的確能最小化網站向 Web 伺服器發送的請求數量。
延伸閱讀:我最喜歡的五個 ASP.NET MVC ActionFilters


5. 捆綁或最小化 JavaScript/CSS 代碼

  • 捆綁與最小化早已不是什麼新鮮的概念了。
  • 捆綁是指將所有 JavaScript 與 CSS 代碼打包為一個 JavaScript 或 CSS 文件的過程。這與 Sprite 技術相似,不過處理的是 JavaScript 與 CSS 文件。捆綁可以減少針對單獨 JavaScript 與 CSS 文件的請求,從而減少成本。
  • JavaScript 與 CSS 文件充滿了空格,這些空格占用了不少的空間。最小化就是移除 JavaScript 或 CSS 文件里的大量空格的過程。
  • 在 ASP.NET MVC 項目中, App_Start 文件夾下有一個 BundleConfig.cs 文件。你可以在該文件中定義 JavaScript 與 CSS 文件的捆綁或最小化設置。
延伸閱讀:捆綁與最小化


6. 壓縮

  • 你發覺我們的套路了麽?
  • 實現壓縮的方式有兩種:一是通過IIS激活壓縮,二是通過 ActionFilter 類。
  • 壓縮啟用後,Web 伺服器會將資源壓縮成包,再傳給客戶端。後者會先解壓縮,然後再展示內容。
  • 這能有效提高資源傳送的速度。
  • 還為此寫了一個 CompressFilter 類。通過 Action 方法調用該類,就能實現對網頁的壓縮。


結論

本文介紹的絕大部分速度提升方法都需要特定的編程技巧。一旦掌握了這些技巧,你就能輕易實現高效快速的網站。多積累,多實踐才能做更好
您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 一.並行LINQ System.Linq名稱空間中包含的類ParallelEnumerable可以分解查詢的工作,使其分佈在多個線程上。 儘管Enumerable類給IEnumerable<T>介面定義了擴展方法,但ParallelEnumerable類的大多數擴展方法是ParallerQuery< ...
  • 原文鏈接:http://blog.csdn.net/hebbers/article/details/70332015 關鍵點在與 ...
  • 經常在項目中遇到定時任務的時候,通常第一個想到的是Timer定時器,但是這玩意功能太弱雞,實際上通常採用的是專業化的第三方調度框架,比如說 Quartz,它具有功能強大和應用的靈活性,我想使用過的人都非常瞭解,那麼本篇就來說說如何通過代碼和配置文件來進行job和trigger的配置。 一:常規的jo ...
  • 今天學習angularjs向資料庫添加數據。學習此篇,得從以往幾篇開始,因為那還有創建數據表等演示。現在來創建一個添加的存儲過程: SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE PROCEDURE [dbo].[usp_Goods_I ...
  • c 介面使用詳解 c 中介面隱式與顯示實現 c 中介面可以隱式實現、顯示實現,隱式實現更常使用、顯示實現較少使用 其區別在於 1. 顯示實現避免介面函數簽名衝突 2. 顯示實現只可以以介面形式調用 3. 顯示實現其子類需無法繼承介面 4. 隱式實現可以撕裂調用、可以介面調用 5. 隱式實現其子類可以 ...
  • 下載並引入兩個dll文件 NPinyin.dll 和 ChnCharInfo.dll 其實這兩個dll 任何一個都可以實現漢字轉拼音,然而 NPinyin.dll 收錄的漢字並不全,但是很人性化,能識別一些常用的漢字。ChnCharInfo.dll 是微軟的很全但是不人性化。另外本套代碼外有一個自己 ...
  • DotBPE.RPC是一款基於dotnet core編寫的RPC框架,而它的爸爸DotBPE,目標是實現一個開箱即用的微服務框架,但是它還差點意思,還僅僅在構思和嘗試的階段。但不管怎麼說RPC是微服務的基礎,先來講講RPC的實現吧。DotBPE.RPC底層通信預設實現基於[DotNetty](htt... ...
  • 工廠方法模式(Factory Method) 工廠方法屬於創建型模式中的一種,用於在不指定待創建對象的具體類的情況下創建對象,隱藏了對象創建的複雜性。客戶面向介面或抽象類進行編碼,而Factory類負責具體類的創建。通常,Factory類有一個返回介面或抽象類的靜態方法,客戶提供某種信息,然後由根據 ...
一周排行
    -Advertisement-
    Play Games
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...