日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
ASP.NETMVC3的一個(gè)OutputCache問(wèn)題

在用 ASP.NET MVC 3 重寫博客園網(wǎng)站首頁(yè)時(shí),特地留意了一下這個(gè)緩存問(wèn)題,通過(guò)這篇博文分享一下。

在 ASP.NET MVC 3 中如果使用了 OutputCache,一定要在 Action 中添加下面的代碼,切記!

  
 
 
 
  1. Response.Cache.SetOmitVaryStar(true); 

這是一個(gè)伴隨ASP.NET從1.0到4.0的OutputCache Bug,ASP.NET MVC 3 是基于 ASP.NET 4.0 的,所以也躲不過(guò)。

問(wèn)題演示

下面先來(lái)體驗(yàn)一下不加 Response.Cache.SetOmitVaryStar(true); 的情況。

示例Action代碼

  
 
 
 
  1. [OutputCache(Duration = 120)]  
  2. public ActionResult SiteHome(int? pageIndex)  
  3. {  
  4.     ...  

注:OutputCache.Location的默認(rèn)值是OutputCacheLocation.Any(服務(wù)端、客戶端、代理服務(wù)器端等都進(jìn)行緩存)

第一次請(qǐng)求:

第二次請(qǐng)求(F5刷新瀏覽器):

第三次請(qǐng)求(F5刷新瀏覽器):

接著第四次請(qǐng)求會(huì)返回304,第五次請(qǐng)求又返回200。

再體驗(yàn)一下加 Response.Cache.SetOmitVaryStar(true); 的情況。

  
 
 
 
  1. [OutputCache(Duration = 120)]  
  2. public ActionResult SiteHome(int? pageIndex)  
  3. {  
  4.     Response.Cache.SetOmitVaryStar(true);  
  5.     ...  

第一次請(qǐng)求:

第二次請(qǐng)求(F5刷新瀏覽器):

第三次請(qǐng)求(F5刷新瀏覽器):

注:只要在緩存有效期內(nèi),服務(wù)器一直返回304。

問(wèn)題分析

1. 200與304的區(qū)別

當(dāng)返回狀態(tài)碼是200時(shí),服務(wù)器端會(huì)將當(dāng)前請(qǐng)求的整個(gè)頁(yè)面全部發(fā)送給客戶端(消耗下行帶寬)。

當(dāng)返回狀態(tài)碼是304時(shí),由于客戶端瀏覽器提供的 Last-Modified 時(shí)間在服務(wù)器端的緩存有效期內(nèi),服務(wù)器端只發(fā)送這個(gè)狀態(tài)碼,不發(fā)送頁(yè)面的任何內(nèi)容(幾乎不消耗下行帶寬),瀏覽器直接從本地緩存中獲取內(nèi)容。

所以,304的好處就是節(jié)約帶寬,響應(yīng)速度更快。

2. 對(duì)服務(wù)端緩存的影響

加不加 Response.Cache.SetOmitVaryStar(true),服務(wù)端的緩存情況都是一樣的。只是不加 SetOmitVaryStar(true) 時(shí),對(duì)于同一個(gè)客戶端瀏覽器,每隔一次請(qǐng)求,服務(wù)器端就不管客戶端瀏覽器的緩存,重新發(fā)送頁(yè)面內(nèi)容,但是只要在緩存有效期內(nèi),內(nèi)容還是從服務(wù)器端緩存中讀取。

問(wèn)題危害

ASP.NET 緩存的這個(gè)詭異行為,讓你在不知不覺(jué)中浪費(fèi)了帶寬資源。

感想

用 ASP.NET 開發(fā)多年,這個(gè)伴隨 ASP.NET 從 1.0 到 4.0 的 OutputCache Bug 自己竟然在去年才發(fā)現(xiàn)。之前測(cè)試時(shí)第一次請(qǐng)求后按F5看返回304就以為沒(méi)問(wèn)題,而問(wèn)題恰恰就在下一下F5,偶爾多按一下F5出現(xiàn)200也沒(méi)特別留意。由此可見,細(xì)心對(duì)程序員來(lái)說(shuō)是多么重要,很多bug、很多性能問(wèn)題往往不是水平不夠,而是不夠細(xì)心。

優(yōu)秀的程序員都是細(xì)心的人,不僅在寫代碼的時(shí)候細(xì)心,在生活中也同樣細(xì)心。別看他木訥的樣子,你對(duì)他所做的一切,他都會(huì)細(xì)心地觀察到、體會(huì)到。做細(xì)心的程序員,珍惜細(xì)心的程序員!


當(dāng)前名稱:ASP.NETMVC3的一個(gè)OutputCache問(wèn)題
新聞來(lái)源:http://m.5511xx.com/article/djpdiic.html