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

首頁 > 編程 > .NET > 正文

ASP.NET性能優(yōu)化之讓瀏覽器緩存動態(tài)網(wǎng)頁的方法

2024-07-10 13:24:54
字體:
供稿:網(wǎng)友
OutputCache是針對所有訪問服務(wù)器資源的用戶,本篇要介紹的瀏覽器緩存則是針對單個用戶,讓瀏覽器在我們的控制下徹底不持續(xù)訪問服務(wù)器上的動態(tài)內(nèi)容,也就是我們要讓瀏覽器變成我們的緩存機制中的一部分,在某些特定的場景下最大化地提升ASP.NET站點的性能。如果說OutputCache是從廣度上提升并發(fā)效率,則瀏覽器緩存是從深度上提升效率。

一:HTTP頭簡介

1.1瀏覽器第一次請求

假設(shè)我們請求一個URL地址,譬如我服務(wù)器上的一個靜態(tài)頁面,會返回如下的HTTP頭信息:

ASP.NET性能優(yōu)化之讓瀏覽器緩存動態(tài)網(wǎng)頁的方法

(注意,這里的Last Modified和Http頭中的Last-Modified沒有任何關(guān)系)。

每種瀏覽器都會有自己的緩存機制,但是都差不多,這里暫且不表。

1.3如何命中緩存

再次請求剛才的URL,我們得到頭信息如下:

ASP.NET性能優(yōu)化之讓瀏覽器緩存動態(tài)網(wǎng)頁的方法

然后再多次請求一下,我們發(fā)現(xiàn)每次都是200OK,并且我們發(fā)現(xiàn)頭信息中丟了一個很重要的信息,那就是Last-Modified。服務(wù)器沒有告訴瀏覽器自己的對象的最后修改日期,那么瀏覽器就只好每次去服務(wù)器重新獲取全部數(shù)據(jù)了。看到這里,我們應(yīng)該明白了,要讓瀏覽器不去拿數(shù)據(jù),動態(tài)程序就得想法設(shè)法自己添加這個頭信息。

好的,現(xiàn)在我們就在ASPX的后臺代碼中這樣來實現(xiàn)一個最簡單的頭信息添加:

復(fù)制代碼 代碼如下:


protected void Page_Load(object sender, EventArgs e)
{
this.Response.AddHeader("Last-Modified", DateTime.Now.ToString("U", DateTimeFormatInfo.InvariantInfo));
}


添加了頭信息后,我們發(fā)現(xiàn)再次請求URL后,頭信息變?yōu)槿缦拢?/P>

ASP.NET性能優(yōu)化之讓瀏覽器緩存動態(tài)網(wǎng)頁的方法

左邊是未做緩存的aspx頁面,右邊是做了緩存的aspx頁面,可以看到,吞吐率相差10倍之多。

提示,使用ab進行壓力測試的時候,需要加入If-Modified-Since的頭信息,命令如下:

C:/>ab -n1000 -c100 -H "If-Modified-Since: Friday, 09 September 2011 09:35:23 GMT"

本文代碼下載:MvcApplication320110909.rar

三:問題的提出

在上面的說到的瀏覽器緩存實現(xiàn)中,瀏覽器通過和WEB服務(wù)器的溝通協(xié)調(diào)機制來確定自己是否需要調(diào)用緩存,這意味著動態(tài)程序仍舊需要處理來自客戶端的請求,如果有一種機制能夠讓瀏覽器不需要請求服務(wù)器就能夠決定是否調(diào)用緩存,就能徹底舍去服務(wù)器處理這一環(huán)節(jié)。下一篇將繼續(xù)闡述這種機制。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 弥渡县| 温宿县| 涟源市| 林芝县| 丹棱县| 延庆县| 宁都县| 昌吉市| 久治县| 谢通门县| 乐平市| 达日县| 湘乡市| 湘潭县| 伊金霍洛旗| 邯郸市| 台北市| 竹溪县| 同江市| 威信县| 黄山市| 贵州省| 奉化市| 哈尔滨市| 京山县| 儋州市| 民县| 纳雍县| 龙山县| 宜兴市| 寻甸| 慈利县| 连州市| 永新县| 洪洞县| 镇原县| 满洲里市| 安化县| 如皋市| 泗洪县| 吉林市|