国产99福利精品视频|杨幂精品国产福利在线|国精品午夜福利视频不卡|欧美精品黄网站在线播放|精品国产乱码久久久久久久|国产大片中文字幕在线观看|国产肥熟女视频一区二区三区|国产乱码无码视频一区二区三区

十個提高ASP.NET網站首頁性能的方法

來源:北大青鳥飛迅校區(qū)|發(fā)布時間:2013-05-02 18:35:52

  本文是我對ASP.NET頁面載入速度提高的一些做法,這些做法分為以下部分:1.采用 HTTP Module 控制頁面的生命周期。2.自定義Response.Filter得到輸出流stream生成動態(tài)頁面的靜態(tài)內容(磁盤緩存

  本文是我對ASP.NET頁面載入速度提高的一些做法,這些做法分為以下部分:

  1.采用 HTTP Module 控制頁面的生命周期。

  2.自定義Response.Filter得到輸出流stream生成動態(tài)頁面的靜態(tài)內容(磁盤緩存)。

  3.頁面GZIP壓縮。

  4.OutputCache 編程方式輸出頁面緩存。

  5.刪除頁面空白字符串。(類似Google)

  6.完全刪除ViewState。

  7.刪除服務器控件生成的垃圾NamingContainer。

  8.使用計劃任務按時生成頁面。(本文不包含該做法的實現)

  9.JS,CSS壓縮、合并、緩存,圖片緩存。(限于文章篇幅,本文不包含該做法的實現)

  10.緩存破壞。(不包含第9做法的實現)

  針對上述做法,我們首先需要一個 HTTP 模塊,它是整個頁面流程的入口和核心。

  一、自定義Response.Filter得到輸出流stream生成動態(tài)頁面的靜態(tài)內容(磁盤緩存)

  如下的代碼我們可以看出,我們以 request.RawUrl 為緩存基礎,因為它可以包含任意的QueryString變量,然后我們用MD5加密RawUrl 得到服務器本地文件名的變量,再實例化一個FileInfo操作該文件,如果文件最后一次生成時間小于7天,我們就使用.Net2.0新增的TransmitFile方法將存儲文件的靜態(tài)內容發(fā)送到瀏覽器。如果文件不存在,我們就操作 response.Filter 得到的 Stream 傳遞給 CommonFilter 類,并利用FileStream寫入動態(tài)頁面的內容到靜態(tài)文件中。

  namespace ASPNET_CL.Code.HttpModules { public class CommonModule : IHttpModule { public void Init( HttpApplication application ) { application.BeginRequest += Application_BeginRequest; } private void Application_BeginRequest( object sender, EventArgs e ) { var context = HttpContext.Current; var request = context.Request; var url = request.RawUrl; var response = context.Response; var path = GetPath( url ); var file = new FileInfo( path ); if ( DateTime.Now.Subtract( file.LastWriteTime ).TotalDays < 7 ) { response.TransmitFile( path ); response.End(); return; } try { var stream = file.OpenWrite(); response.Filter = new CommonFilter( response.Filter, stream ); } catch ( Exception ) { //Log.Insert(""); } } public void Dispose() { } private static string GetPath( string url ) { var hash = Hash( url ); string fold = HttpContext.Current.Server.MapPath( "~/Temp/" ); return string.Concat( fold, hash ); } private static string Hash( string url ) { url = url.ToUpperInvariant();

  varmd5= new System.Security.Cryptography.MD5CryptoServiceProvider(); varbs=md5.ComputeHash(Encoding.ASCII.GetBytes(url)); vars= new StringBuilder(); foreach (varb in bs){ s.Append(b.ToString( x2 ).ToL

上一篇:分享ASP.NET開發(fā)Web服務的五則技巧
下一篇:用C#怎么創(chuàng)建桌面快捷方式

熱門話題

招生熱線: 4008-0731-86 / 0731-82186801

學校地址: 長沙市天心區(qū)團結路6號

Copyright © 2006 | 湖南大計信息科技有限公司 版權所有

湘ICP備14017520號-3

關注我們
在線咨詢
嘿,我來幫您!