国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > .NET > 正文

ASP.NET 提高首頁性能的十大做法

2024-07-10 12:42:13
字體:
來源:轉載
供稿:網友
前言
本文是我對ASP.NET頁面載入速度提高的一些做法,這些做法分為以下部分:
1.采用 HTTP Module 控制頁面的生命周期。
2.自定義Response.Filter得到輸出流stream生成動態頁面的靜態內容(磁盤緩存)。
3.頁面GZIP壓縮。
4.OutputCache 編程方式輸出頁面緩存。
5.刪除頁面空白字符串。(類似Google)
6.完全刪除ViewState。
7.刪除服務器控件生成的垃圾NamingContainer。
8.使用計劃任務按時生成頁面。(本文不包含該做法的實現)
9.JS,CSS壓縮、合并、緩存,圖片緩存。(限于文章篇幅,本文不包含該做法的實現)
10.緩存破壞。(不包含第9做法的實現)

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

一、自定義Response.Filter得到輸出流stream生成動態頁面的靜態內容(磁盤緩存)
如下的代碼我們可以看出,我們以 request.RawUrl 為緩存基礎,因為它可以包含任意的QueryString變量,然后我們用MD5加密RawUrl 得到服務器本地文件名的變量,再實例化一個FileInfo操作該文件,如果文件最后一次生成時間小于7天,我們就使用.Net2.0新增的TransmitFile方法將存儲文件的靜態內容發送到瀏覽器。如果文件不存在,我們就操作 response.Filter 得到的 Stream 傳遞給 CommonFilter 類,并利用FileStream寫入動態頁面的內容到靜態文件中。
代碼如下:
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();
var md5 = new System.Security.Cryptography.MD5CryptoServiceProvider();
var bs = md5.ComputeHash( Encoding.ASCII.GetBytes( url ) );
var s = new StringBuilder();
foreach ( var b in bs ) {
s.Append( b.ToString( "x2" ).ToLower() );
}
return s.ToString();
}
}
}


二、頁面GZIP壓縮
對頁面GZIP壓縮幾乎是每篇講解高性能WEB程序的幾大做法之一,因為使用GZIP壓縮可以降低服務器發送的字節數,能讓客戶感覺到網頁的速度更快也減少了對帶寬的使用情況。當然,這里也存在客戶端的瀏覽器是否支持它。因此,我們要做的是,如果客戶端支持GZIP,我們就發送GZIP壓縮過的內容,如果不支持,我們直接發送靜態文件的內容。幸運的是,現代瀏覽器IE6.7.8.0,火狐等都支持GZIP。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 西宁市| 谢通门县| 绿春县| 河池市| 西宁市| 荔浦县| 鹤峰县| 元阳县| 仁布县| 三明市| 中方县| 永泰县| 青海省| 威信县| 定州市| 桃江县| 甘肃省| 芦溪县| 莱阳市| 泰顺县| 汉阴县| 綦江县| 镇远县| 厦门市| 连云港市| 文安县| 宁陵县| 芦山县| 闻喜县| 沐川县| 泰宁县| 崇礼县| 芦溪县| 汽车| 莒南县| 广宁县| 安溪县| 连平县| 若羌县| 常山县| 克拉玛依市|