午夜视频免费看_日韩三级电影网站_国产精品久久一级_亚洲一级在线播放_人妻体内射精一区二区三区_91夜夜揉人人捏人人添红杏_91福利在线导航_国产又粗又猛又黄又爽无遮挡_欧美日韩一区在线播放_中文字幕一区二区三区四区不卡 _日日夜夜精品视频免费观看_欧美韩日一区二区三区

主頁 > 知識庫 > ASP.NET組件System.Web.Optimization原理及緩存問題詳解

ASP.NET組件System.Web.Optimization原理及緩存問題詳解

熱門標簽:400電話辦理怎么樣 百應電話機器人外呼系統 西寧呼叫中心外呼系統線路商 聯通官網400電話辦理 臨沂智能電話機器人加盟 外呼電話機器人成本 地圖標注軟件免費下載 蘇州如何辦理400電話 網絡電話外呼系統上海

1】開篇介紹

這篇文章將簡單的分析一下有關靜態文件捆綁的ASP.NET組件System.Web.Optimization的運行原理及基本的緩存問題:

在我們的項目里面充斥著很多靜態文件,為了追求模塊化、插件化很多靜態文件都被設計成模塊的方式或者被分解,在需要的時候在通過組合的方式在UI層上使用;這就帶來一個問題,文件多了會影響瀏覽器加載頁面的速度,而且由于瀏覽器的并發限制,對于并行的請求不是無限制的,所以捆綁靜態文件的功能就產生;其實在以前,IIS還沒有集成管道模型的時候我們只能通過動態資源的方式進行輸出,也就是我們經常在*aspx頁面里看見很多*.axd結尾的請求,當然多數情況下是配合ASP.NETAJAX用來輸出動態JS、HTMDOM、CSS用的;

最新的IIS已經很好的集成了ASP.NET管道模型,也就是說我們完全可以通過ASP.NET本身的擴展來控制所有經過IIS的請求,包括靜態文件,所以讓捆綁靜態文件成為了可能;

下面我們將分析一下System.Web.Optimization組件的基本運行原理,它是如何動態加載的,如何控制緩存的;

2】System.Web.Optimization 組件

每當我們新建一個ASP.NETMVC4站點的時候都會在~/App_Start目錄下有一個BundleConfig.cs的啟動文件,當然創建其他的ASP.NET4.0及4.0以上的項目也會有;

我第一次看見這個文件實在讓我困惑,所以我打算簡單的分析一下,知道其基本原理;

代碼是一個靜態方法,然后傳入一個BundleCollection集合對象,其實就是Bundle對象的集合,然后通過向集合內部注冊多個Bundle;每個Bundle對應著多個靜態文件,可以想象成就是鍵值對集合;通過后面的Include方法包含N多個靜態文件,這里的靜態文件路徑可以是符合特定規則的字符串,由它內部去計算;

這是注冊階段,然后就是使用階段,使用階段很簡單只要我們通過我們注冊的Key字符串就能直接引用這些靜態文件列表;

我們只要關注Styles.Render、Scripts.Render兩個方法,這兩個方法是想頁面注入之前在后臺配置的靜態文件列表;這樣我們在客戶端看見的就是被捆綁過后的文件集合了;

文件的連接地址已經是被捆綁過后的地址了,這個地址就是我們在之前注冊的時候用的key,后面它需要這個key去獲取value 靜態文件列表;要想你的捆綁起效果需要在注冊的時候加上一段:BundleTable.EnableOptimizations = true;代碼,意思是說開啟捆綁,如果不開啟捆綁則默認在調試環境里將不起效果,因為System.Web.Optimization使用了默認捆綁策略,如果是在Debug模式下,將不啟用捆綁,如果你人為的設置了將覆蓋默認設置;

使用就是這些,下面我們需要搞懂它是如何運行的,要了解一下它的基本原理;

3】System.Web.Optimization 組件基本原理

既然IIS集成了管道模型,那么我們肯定是能找到對應的HttpModule的,為了節省時間我就不去下載源碼了,我們直接用反編譯工具看一下;

這就是Bundle的HttpModule,它只用來處理
Bundle的連接地址,雖然它在HTTP的管道中;找到它就好順藤摸瓜了,但是奇怪的是我在Web.config里沒有發現它的配置信息,奇怪了,難道它還跑去系統文件改,當然是不可能的;所以我一時還想不起能有什么辦法動態注冊,提起動態注冊突然有了思路,好像有一個Assembly級別的特性用來注冊Application_Start啟動時候的前置代碼,會在Application啟動之前執行,來看一下;

果然藏著這里呢,它注冊了一個PreApplicationStartCode靜態類,使用Start方法啟動;

這段代碼很簡單,先判斷有沒有執行過注冊,如果沒有就執行動態注冊,這個動態注冊組件是.NETFramework自帶的,在Microsoft.Web.Infrastructure里面只不過屬于平臺相關的,跟ASP.NET沒有直接關系,我們可以用Microsoft.Web.Infrastructure來開發自己的WEB組件;這里有一個疑問,為什么靜態方法也要加判斷呢,不是只會執行一次嗎,因為靜態方法的執行是不受控制的,所以如果不加判斷很有可能會注冊多次,出于嚴謹考慮還是加上;

現在基本上我們已經找到源頭了,服務端這里我們先放一下,對于客戶端的疑問很多,它既然幫我們捆綁了,那么緩存是如何處理的,也就是說它的輸出緩存有沒有設置,如果設置了不是有問題;

【客戶端緩存相關】

為了很好的了解請求之間的信息,我們用Fiddler監聽一下;

我們看見它的Cache部分是用了If-Modified-Since來表示本地的文件的最后一次修改,這樣是為了能夠讓服務器去驗證文件是否改動,如果沒有改動服務器的響應狀態碼為304,說明Bundle在輸出的時候并沒有設置對這個文件進行客戶端強制緩存,我們通過Pragma: no-cache頭也能看出來了;

那么我們得出結論,所有Bundle出來的文件都不可能直接緩存在瀏覽器中,每次都會帶上Cache段If-Modified-Since去驗證服務器的文件版本;剛好這里我們可以跟動態輸出的靜態文件地址的后面的參數對上了;

比如:

/Content/css?v=ZPnWVRT3c0yyrVDPmI-xkJuhBdJfQsL3A0K5C9WTOk01

這個鏈接后面的v參數是表示當前Bundle后虛擬文件的版本,如果我們在服務器上把文件修改了之后那么這個文件的If-Modified-Since驗證就失敗了,會生成新的版本號作為連接的參數;我們來看一下,心里踏實;

我加了一個width:auto的style,那么這個時候我刷新客戶端應該是不會再有304出現了;

顯然/Content/css?v=doYFOk3BdOYWDIRbQ7juV6eQdlJAu6RtC0G13El7X041 文件的版本變了,那么Response也不應該是304了;

如果靜態文件的版本號發生改變,根本就不會帶上 If-Modified-Since,這個是用在每次進行進行Post是用來驗證的;其實意思就是說如果沒有IIS集成模式那么捆綁文件的方式只能改變靜態文件的文件名;

4】擴展自定義類型靜態文件

Bundle對象是所有需要捆綁文件的基類,如果我們需要擴展一些靜態文件,如一些特定領域的靜態文件,我們可以直接繼承這個類;

【XML文件的緩存】

擴展XML文件很簡單,我們只需要繼承一下Bundle對象,所有關于動態生成URL都有專門的對象處理,我們來看下代碼;

public class XmlBundle : Bundle
 {
 public XmlBundle(string path) : base(path) { }
 }
 public static class XmlBundleRender
 {
 public static IHtmlString Render(string path)
 {
  BundleResolver bundle = new BundleResolver(BundleTable.Bundles);
  return new HtmlString(
  string.Format(@"link href=""{0}"" rel=""stylesheet""/>", bundle.GetBundleUrl(path)));
 }
 }

首先我們需要一個繼承自Bundle對象的XmlBundle,用來表示我們所有將要傳輸的XML文件捆綁容器,然后我們需要一個靜態方法用來注冊捆綁后的URL;

這個URL的生成有專門的BundleResolver對象來完成,我們只需要傳入所有的BundleCollection對象,我這里為了能在瀏覽器中測試所以寫了一段stylesheet類型的link;這樣我們就能直接在我們需要的地方直接使用了,我在index視圖中引用:@MvcApplication4.Seed.XmlBundleRender.Render("~/custom/xml");是不是很簡單,這樣我們就能對所有想控制捆綁的文件進行捆綁,只需要繼承加簡單的靜態方法輔助;

我們來看一下我們的XML文件是否具有所有緩存特性;

第一次請求沒有加If-Modified-Since段,返回的內容是一個簡單的model>222/model> 測試簡單,現在我們看它是否在下一次不改變內容的情況下使用緩存;

在我們預料之中,使用了緩存數據,下面我們需要把服務器上的XML文件進行修改,將222改成243454637看是否自動刷新本地緩存也就是說不會是304返回狀態;

也刷新緩存,符合理論根據,正確的返回了我們修改后的值;

結:其實HTTP不僅僅用在瀏覽器中,會有很多使用HTTP的場合,所以我們能很好的將這種功能用來捆綁一些圖片、文字等多種場合中,確實是個不錯的組件;文章結束,謝謝;

作者:王清培

出處:http://www.cnblogs.com/wangiqngpei557/

本文版權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究法律責任的權利。

您可能感興趣的文章:
  • 無法將類型為“System.Web.UI.WebControls.HiddenField”的對象強制轉換為類型的錯誤的解決
  • System.Web.Routing入門及進階
  • System.Web.Routing入門及進階
  • NET Runtime Optimization Service 1101 錯誤的解決方法
  • ASP.NET MVC命名空間時引起錯誤的解決方法
  • ASP.Net中命名空間Namespace淺析和使用例子
  • System.Web中不存在類型或命名空間名稱“Optimization”(是否缺少程序集引用?)

標簽:慶陽 清遠 聊城 平涼 中衛 海西 臨夏 甘肅

巨人網絡通訊聲明:本文標題《ASP.NET組件System.Web.Optimization原理及緩存問題詳解》,本文關鍵詞  ASP.NET,組件,System.Web.Optimization,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《ASP.NET組件System.Web.Optimization原理及緩存問題詳解》相關的同類信息!
  • 本頁收集關于ASP.NET組件System.Web.Optimization原理及緩存問題詳解的相關信息資訊供網民參考!
  • 推薦文章
    久久久在线视频| 日韩欧美激情一区| 农村少妇久久久久久久| 免费看污黄网站在线观看| 国产成人av网址| 国产精品538一区二区在线| 99久久国产宗和精品1上映| 日韩中文在线中文网在线观看 | 粉嫩13p一区二区三区| 美女福利视频在线| 亚洲欧洲日产国产网站| 久久精品三级| 又色又爽又黄视频| 性欧美xxxx交| 亚洲码国产岛国毛片在线| 私库av在线播放| 欧美激情论坛| 亚洲精品一区二区三区福利| 天天摸夜夜添狠狠添婷婷| 欧美精品一区免费| 久久精品国产亚洲精品| 久久天堂av综合合色蜜桃网| 永久免费观看片现看| 国产免费一区| 日韩免费看网站| 韩国欧美国产1区| xxxxx在线观看| 国产乱人伦精品一区二区| 欧美日本在线看| 久久男女视频| 亚洲永久无码7777kkk| 国产精品久久久久久久久久久久午夜片 | 国产欧美日韩卡一| 无码任你躁久久久久久久| 777777av| 欧美中文字幕在线视频| 欧美小视频在线观看| 五月色婷婷综合| 国产精品探花一区二区在线观看| 国产欧美亚洲日本| 亚洲欧美三级在线| 一区二区中文字幕在线| 国产乱叫456在线| 逼特逼视频在线观看| 粉嫩av免费一区二区三区| 亚洲精品电影网在线观看| 国产日产精品一区| 99久久久国产精品无码免费| 国产免费无码一区二区| 久久精品丝袜高跟鞋| 日韩中文字幕久久| 狠狠久久五月精品中文字幕| 免费一区二区视频| 99久久99久久精品国产| 国产在线观看福利| 国产精品久久久一区二区三区| 亚洲图片在区色| 亚洲成a人片在线观看中文| 视频一区二区欧美| 国产女同在线观看| 中文字幕人妻一区二区三区| 一区二区三区欧美在线| 日韩免费黄色av| 亚洲国产精品久久精品怡红院| 17c精品麻豆一区二区免费| 美女诱惑黄网站一区| 日本a在线观看| 国产二级一片内射视频播放 | 亚洲午夜私人影院| 精品在线视频一区| 国产精品久久久午夜夜伦鲁鲁| 岛国精品资源网站| 日日鲁鲁鲁夜夜爽爽狠狠视频97| 成人欧美一区二区三区视频xxx| 久久亚洲欧美日韩精品专区 | 丰满肥臀噗嗤啊x99av| 亚洲综合视频网站| 精品人妻一区二区三区日产| 久久免费视频3| 亚洲一区二区精品在线| 97久久精品午夜一区二区| 久久久久久久一| 国产亚洲精品久久久| 无码av免费一区二区三区试看| 日日夜夜免费精品视频| 国产精品毛片一区视频播 | 欧美久久在线| 亚洲v国产v| 成人国产亚洲精品a区天堂华泰| 精品五月天久久| 一区二区三区在线不卡| 免费在线观看成人| 午夜成人免费影院| 最新中文字幕免费| 国产亚洲精品超碰| 日韩精品视频免费专区在线播放| 91中文字幕一区| www.日日操| 日本三区在线观看| 激情小说网站亚洲综合网 | 日韩欧美视频一区| 亚洲成人亚洲激情| 欧美三区在线视频| 粉嫩av一区二区三区免费野| 91精品国产欧美日韩| 国产精品美女久久久久久久久| 99re这里只有精品视频首页| 紧缚奴在线一区二区三区| 国产哺乳奶水91在线播放| 国产精品天天操| 国产一区二区精品在线观看| 国产一区二区三区在线看麻豆| 国产福利一区二区三区视频在线| 久久成人免费电影| 亚洲色图欧美视频| 日韩精品一二三| 神马久久久久久久久久| 日韩一区二区三区在线观看视频| 波多野结衣午夜| 国产网站在线看| 无码人妻黑人中文字幕| 老司机午夜福利视频| 丁香激情综合五月| 亚洲欧美日韩国产综合| 欧美疯狂做受xxxx富婆| 欧美日韩一区二区三区视频| 色88888久久久久久影院野外| 在线视频国内一区二区| 欧美一区二区三区白人| 亚洲色图av在线| 97国产精品视频| 不卡视频一区二区| 亚洲一区二三| 牛夜精品久久久久久久| 在线观看国产免费视频| 黑鬼狂亚洲人videos| 国产性生活视频| 蜜乳av一区二区| 中文字幕av一区 二区| 黑人精品xxx一区一二区| 精品99久久久久久| 欧美国产视频日韩| 99re在线视频上| 久色视频在线播放| 精品少妇人妻一区二区黑料社区| 国产成人愉拍精品久久| 久久综合图片| 18成人在线观看| 日韩欧美一区电影| 啪一啪鲁一鲁2019在线视频| 精品国产乱码久久久久久郑州公司| 五月天激情图片| 国产精品探花一区二区在线观看| 日韩欧美视频在线免费观看| 美女诱惑一区| 亚洲午夜久久久久久久久久久| 亚洲精品第一页| 亚洲自拍av在线| 国产在线青青草| 免费一级片在线观看| 久久国产日本精品| 亚洲精品日韩一| 国产亚洲精品91在线| 青青青在线视频| 在线观看免费av片| 久久99精品一区二区三区三区| 国产精品69久久久久水密桃| 夜夜爽夜夜爽精品视频| 欧美一区午夜视频在线观看| 欧美人与性动交| 久久青青草原一区二区| 久久99爱视频| 日本三级片在线观看| 久久最新视频| 亚洲综合另类小说| 视频一区视频二区国产精品| 国产精品我不卡| 香蕉网在线视频| 国产又粗又猛又黄又爽| 国产日韩亚洲欧美综合| 亚洲第一视频网| 精品国产一区二区三区久久久久久| 激情综合网俺也去| 色av性av丰满av| 久久久久久电影| 国产小视频国产精品| 色一情一乱一伦一区二区三欧美 | 蜜桃麻豆91| 香蕉网在线播放| 久久久成人网| 欧美三级日韩三级国产三级| 国产91精品最新在线播放| 国产裸体舞一区二区三区| 成人午夜精品视频| 国产精品久久久久一区二区三区| 国产亚洲美女久久| 亚洲日本精品国产第一区| 国产真人真事毛片视频| 粉嫩蜜臀av国产精品网站| 亚洲成人av片在线观看| 成人网欧美在线视频| 欧美性xxxx图片| 国产成人精品免费看| 91地址最新发布| 久久黄色免费视频| 国产香蕉97碰碰久久人人| 黄色片在线观看网站| 91精品国产综合久久精品图片| 性色av浪潮av| 亚洲免费av网站| 国产一区精品视频| 九九热国产视频| 亚洲国产天堂久久国产91| 亚洲一区二区三| 香蕉成人在线视频| 国产精品女主播在线观看| 国产精品福利观看| 日韩福利在线视频| 国产精品超碰97尤物18| 国产福利精品在线| av最新在线观看| 国产精品青草综合久久久久99| 热99精品只有里视频精品| 无遮挡aaaaa大片免费看| 久久精品人人做人人爽人人| 青青草精品毛片| 亚洲黄色免费视频| 夜夜亚洲天天久久| 欧美日韩精品一区| 亚洲一区二区人妻| 精品成a人在线观看| 91.com在线| 理论电影国产精品| 性色av一区二区三区在线观看| 网站免费在线观看| 亚洲精选视频免费看| 日本高清+成人网在线观看| 国产精品夜夜夜爽阿娇| 亚洲福利一区二区| 国产精品无码乱伦| 奇米影视7777精品一区二区| 欧美激情日韩图片| 正在播放国产对白害羞| 欧美午夜激情小视频| 九一免费在线观看| 久久99精品国产麻豆婷婷 | 国产欧美小视频| 色天使色偷偷av一区二区| 成人免费a级片| 韩国欧美国产1区| 亚洲自拍在线观看| 国产精品国产精品国产专区| xxxx性欧美| 黄色裸体一级片| 欧美va亚洲va国产综合| 中文字幕一二三| 精品久久久久久亚洲精品| r级无码视频在线观看| 99久久国产综合色|国产精品| 国产富婆一区二区三区| www.久久成人| 国产极品jizzhd欧美| 中文字幕一区2区3区| 久热精品视频在线| 国产香蕉视频在线| 欧美黄色免费网站| 久久久精品视频网站| 日韩有码在线电影| 久久久久99精品成人片毛片| 亚洲欧洲美洲在线综合| 一级黄色录像毛片| 日韩一区二区三区电影在线观看| 欧美色图亚洲激情| 亚洲成人精品视频在线观看| 久久中文字幕人妻| 欧美成人欧美edvon| 91l九色lporny| 亚洲男人av在线| 超碰超碰超碰超碰| 日韩免费观看网站| 五月婷婷六月丁香综合| 国产99视频精品免费视频36| 国内精品伊人久久久久av影院 | 国产一区福利在线| 快播亚洲色图| 久久日一线二线三线suv| 成年人午夜免费视频| 午夜视频一区二区| 男女午夜激情视频| 欧美午夜精品久久久久久久| 国产熟女高潮一区二区三区 | 免费观看黄色的网站| 国产精品进线69影院| 亚洲免费在线播放视频| 欧美不卡视频一区| 少妇视频一区二区| 久久久久久久久久久久久久久久久久av | 欧美中文字幕一区二区三区| 天天操天天干天天操天天干| 国产一区二区三区视频| 国产精品欧美久久久久天天影视| 91九色在线免费视频| 成人精品小蝌蚪| 密臀av一区二区三区| 亚洲国产精品高清久久久| 久久免费视频播放| 国产免费一区视频观看免费| 日本欧美韩国一区三区| 在线一区亚洲| 日本乱人伦一区| a级片在线观看免费| 日韩av最新在线| 人人妻人人爽人人澡人人精品 | 伊人网综合在线| 欧美不卡三区| 黑丝美女久久久| av女人的天堂| 国产精品高潮粉嫩av| 2021中文字幕一区亚洲| 国产乱淫av片| 欧美激情国产日韩精品一区18| 天天爱天天干天天操| 91九色丨porny丨国产jk| 日韩一级完整毛片| 中文字幕一区二区三区免费看| 国产日产亚洲精品| 亚洲欧美日韩国产成人精品影院| 欧美激情aaa| 国产精品九九九| 国产欧美一区二区在线| 欧美特黄一区二区三区| 久色乳综合思思在线视频| 日韩国产一区二| 波多野结衣免费观看| 欧美乱人伦中文字幕在线| 国产乱色国产精品免费视频| 日韩视频在线观看一区二区三区| 久久亚洲成人精品| 粉嫩高潮美女一区二区三区| 国产香蕉精品视频| 久久91亚洲人成电影网站| 成人国产一区二区三区精品| 天天插天天射天天干| 国产精品视频网站| 国产精品视频最多的网站| 色屁屁草草影院ccyy.com| 国产精品美女呻吟| 日韩理论片在线| 欧美人妻一区二区| 999国内精品视频在线| 欧美日韩一二区| 五十路在线观看| 国内自拍偷拍视频| 成人h视频在线| 欧美日韩一区二区三区| 中文字幕在线观看1| 国产福利一区视频| 欧美亚洲日本网站| 天天综合日日夜夜精品| 一卡二卡在线观看| 一本色道久久亚洲综合精品蜜桃| 日韩在线观看免费全集电视剧网站 | 欧美日韩生活片| 五月天久久综合网| 日韩精品免费在线视频| 国产亚洲精品久| 小泽玛利亚一区二区三区视频| 成人在线免费播放视频| 热99久久精品| 3751色影院一区二区三区| 国产成人一区在线| xxxxxx国产| 蜜臀视频一区二区三区| 成人欧美一区二区三区黑人孕妇 | 国内一区二区在线视频观看| 亚洲偷欧美偷国内偷| 亚洲精品一二三| www.色呦呦| 国产成人精品视频免费| 无码无遮挡又大又爽又黄的视频| 亚洲bt欧美bt日本bt| 亚洲日韩欧美视频一区| 久久久蜜臀国产一区二区| www.色国产| 国产精品久久久免费观看| 日本一区视频在线| 国产精品爱久久久久久久| 欧美精品一区二区精品网| 亚洲欧美自拍偷拍| 精品一区二区在线免费观看| 国产成人精品视频在线观看| 欧美精品v日韩精品v韩国精品v| 成人av网站大全| 国产三级第一页| 国产精品无码网站| 久久精品xxx| 国产精品二区在线观看| 欧美区在线播放| 精品国产人成亚洲区| 亚洲一卡二卡三卡四卡无卡久久 | 男人天堂av电影| 99热成人精品热久久66| 欧美精品一区三区在线观看| 亚洲97在线观看| 亚洲天堂日韩电影| 51精品久久久久久久蜜臀| 五月激情综合婷婷| 亚洲精品高清在线| 久久久综合激的五月天| 国内精品久久久久影院色|