欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

利用客戶端緩存對網(wǎng)站進(jìn)行優(yōu)化的原理分析

 更新時間:2008年09月04日 11:06:16   作者:  
你的網(wǎng)站在并發(fā)訪問很大并且無法承受壓力的情況下,你會選擇如何優(yōu)化?

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

1 //默認(rèn)緩存的秒數(shù)
2 int secondsTime = 100;
3
4 //判斷最后修改時間是否在要求的時間內(nèi)
5 //如果服務(wù)器端的文件沒有被修改過,則返回狀態(tài)是304,內(nèi)容為空,這樣就節(jié)省了傳輸數(shù)據(jù)量。如果服務(wù)器端的文件被修改過,則返回和第一次請求時類似。
6 if (request.Headers["If-Modified-Since"] != null && TimeSpan.FromTicks(DateTime.Now.Ticks - DateTime.Parse(request.Headers["If-Modified-Since"]).Ticks).Seconds < secondsTime)
7 {
8 //測試代碼,在這里會發(fā)現(xiàn),當(dāng)瀏覽器返回304狀態(tài)時,下面的日期并不會輸出
9 Response.Write(DateTime.Now);
10
11 response.StatusCode = 304;
12 response.Headers.Add("Content-Encoding", "gzip");
13 response.StatusDescription = "Not Modified";
14 }
15 else
16 {
17 //輸出當(dāng)前時間
18 Response.Write(DateTime.Now);
19
20 //設(shè)置客戶端緩存狀態(tài)
21 SetClientCaching(response, DateTime.Now);
22 }
23
24 #region SetClientCaching..
25 /// <summary>
26 /// 設(shè)置客戶端緩存狀態(tài)
27 /// </summary>
28 /// <param name="response"></param>
29 /// <param name="lastModified"></param>
30 private void SetClientCaching(HttpResponse response, DateTime lastModified)
31 {
32 response.Cache.SetETag(lastModified.Ticks.ToString());
33 response.Cache.SetLastModified(lastModified);
34 //public 以指定響應(yīng)能由客戶端和共享(代理)緩存進(jìn)行緩存。
35 response.Cache.SetCacheability(HttpCacheability.Public);
36 //是允許文檔在被視為陳舊之前存在的最長絕對時間。
37 response.Cache.SetMaxAge(new TimeSpan(7, 0, 0, 0));
38 //將緩存過期從絕對時間設(shè)置為可調(diào)時間
39 response.Cache.SetSlidingExpiration(true);
40 }
41 #endregion

如果你的緩存是基于文件的方式,如XML或http中的.ashx處理,也可以使用下面的基于文件方式的客戶端緩存:

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

1 #region SetFileCaching..
2 /// <summary>
3 /// 基于文件方式設(shè)置客戶端緩存
4 /// </summary>
5 /// <param name="fileName"></param>
6 private void SetFileCaching(HttpResponse response, string fileName)
7 {
8 response.AddFileDependency(fileName);
9 //基于處理程序文件依賴項(xiàng)的時間戳設(shè)置 ETag HTTP 標(biāo)頭。
10 response.Cache.SetETagFromFileDependencies();
11 //基于處理程序文件依賴項(xiàng)的時間戳設(shè)置 Last-Modified HTTP 標(biāo)頭。
12 response.Cache.SetLastModifiedFromFileDependencies();
13 response.Cache.SetCacheability(HttpCacheability.Public);
14 response.Cache.SetMaxAge(new TimeSpan(7, 0, 0, 0));
15 response.Cache.SetSlidingExpiration(true);
16 }
17 #endregion



上圖所使用的工具是在IE下運(yùn)行的HttpWatchPro,在Firefox下可以使用FireBug+YSlow進(jìn)行測試.
YSlow是建立在FireBug基礎(chǔ)上運(yùn)行的一個小工具,它可以對你的網(wǎng)頁進(jìn)行分析為什么緩存,并給出評分和緩慢的原因.這個工具來自Yahoo的研發(fā)團(tuán)隊,所以規(guī)則也是Yahoo制定的.

結(jié)論
我們已經(jīng)看了如何使用客戶端緩存減少帶寬和計算的方法,如前所述,如果能正確合理的利用各種不同的緩存,他們會給你帶來很多的好處.我希望本文已為你當(dāng)下或?qū)砘赪eb的項(xiàng)目提供了精神食糧,并正確地在底層利用Last-Modified和ETag響應(yīng)頭去優(yōu)化你的項(xiàng)目。

相關(guān)文章

最新評論