成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

ASP.NET MVC3 的一個OutputCache問題

開發 后端
這是一個伴隨ASP.NET從1.0到4.0的OutputCache Bug,ASP.NET MVC 3 是基于 ASP.NET 4.0 的,所以也躲不過。下面先來體驗一下不加 Response.Cache.SetOmitVaryStar(true); 的情況。

在用 ASP.NET MVC 3 重寫博客園網站首頁時,特地留意了一下這個緩存問題,通過這篇博文分享一下。

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

  1. Response.Cache.SetOmitVaryStar(true); 

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

問題演示

下面先來體驗一下不加 Response.Cache.SetOmitVaryStar(true); 的情況。

示例Action代碼

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

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

第一次請求:

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

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

接著第四次請求會返回304,第五次請求又返回200。。。

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

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

第一次請求:

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

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

注:只要在緩存有效期內,服務器一直返回304。

問題分析

1. 200與304的區別

當返回狀態碼是200時,服務器端會將當前請求的整個頁面全部發送給客戶端(消耗下行帶寬)。

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

所以,304的好處就是節約帶寬,響應速度更快。

2. 對服務端緩存的影響

加不加 Response.Cache.SetOmitVaryStar(true),服務端的緩存情況都是一樣的。只是不加 SetOmitVaryStar(true) 時,對于同一個客戶端瀏覽器,每隔一次請求,服務器端就不管客戶端瀏覽器的緩存,重新發送頁面內容,但是只要在緩存有效期內,內容還是從服務器端緩存中讀取。

問題危害

ASP.NET 緩存的這個詭異行為,讓你在不知不覺中浪費了帶寬資源。

感想

用 ASP.NET 開發多年,這個伴隨 ASP.NET 從 1.0 到 4.0 的 OutputCache Bug 自己竟然在去年才發現。之前測試時第一次請求后按F5看返回304就以為沒問題,而問題恰恰就在下一下F5,偶爾多按一下F5出現200也沒特別留意。由此可見,細心對程序員來說是多么重要,很多bug、很多性能問題往往不是水平不夠,而是不夠細心。

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

原文鏈接:http://www.cnblogs.com/dudu/archive/2012/08/27/asp_net_mvc_outputcache.html

責任編輯:張偉 來源: dudu的博客
相關推薦

2009-07-31 10:08:33

OutputCache

2010-01-26 13:15:42

ASP.NET MVC

2011-10-11 09:43:15

ASP.NET MVC

2009-07-23 10:08:24

asp.net mvc

2012-03-13 09:11:46

Web

2009-09-11 09:18:17

ASP.NET MVC

2009-04-23 09:42:39

FubuMVCASP.NET MVCMVC

2009-07-31 12:43:59

ASP.NET MVC

2009-07-24 13:20:44

MVC框架ASP.NET

2010-10-20 09:05:16

ASP.NET MVC

2010-12-07 09:38:15

ASP.NET MVC

2011-04-14 09:19:22

ASP.NET MVC

2010-10-12 09:52:02

ASP.NET MVC

2011-01-15 23:07:59

2009-07-20 15:44:32

ASP.NET MVC

2009-07-22 09:11:02

Action方法ASP.NET MVC

2009-07-22 10:34:37

ActionInvokASP.NET MVC

2009-07-20 10:53:59

ASP.NET MVC

2009-07-22 10:09:59

ASP.NET MVC

2009-07-23 14:31:20

ASP.NET MVC
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产中文字幕在线观看 | 在线观看视频中文字幕 | 久草.com | 91免费在线 | 国产成人一区二 | 99re国产视频 | 99精品免费久久久久久日本 | 国产在线视频在线观看 | 欧美亚洲高清 | 精品电影 | 在线免费黄色小视频 | 日韩在线观看中文字幕 | 欧美aⅴ片 | 亚洲一区二区三区视频 | 日韩高清国产一区在线 | 婷婷激情综合 | 久久综合一区二区三区 | 一区二区三区四区av | 中文字幕在线网 | 色频| 狠狠干综合视频 | 午夜精品久久久久99蜜 | 国产精品久久久久久久免费大片 | 亚洲精品久久区二区三区蜜桃臀 | 国产最新视频在线 | 久久精品欧美一区二区三区麻豆 | 一区二区三区四区在线视频 | 一区二区三区欧美 | 一区二区三区四区电影视频在线观看 | 99久久婷婷 | av网站免费在线观看 | 日韩欧美在线观看 | 精品在线一区 | 99在线精品视频 | 国产一区二区三区在线免费 | h视频亚洲 | 国产网站在线 | 久久久久国产一区二区三区 | 日韩欧美精品在线 | 欧美精品一区二区三区四区五区 | 国产精品中文字幕在线播放 |