在大型網(wǎng)站系統(tǒng)中,為了提高系統(tǒng)訪問性能,往往會把一些不經(jīng)常變得內(nèi)容發(fā)布成靜態(tài)頁,比如商城的產(chǎn)品詳情頁,新聞詳情頁,這些信息一旦發(fā)布后,變化的頻率不會很高,如果還采用動態(tài)輸出的方式進(jìn)行處理的話,肯定會給服務(wù)器造成很大的資源浪費(fèi)。但是我們又不能針對這些內(nèi)容都獨(dú)立制作靜態(tài)頁,所以我們可以在系統(tǒng)中利用偽靜態(tài)的方式進(jìn)行處理,至于什么是偽靜態(tài),大家可以百度下。我們這里就來介紹一下,在asp.net core mvc中實(shí)現(xiàn)偽靜態(tài)的方式。

  mvc框架中,view代表的是視圖,它執(zhí)行的結(jié)果就是最終輸出到客戶端瀏覽器的內(nèi)容,包含html,css,js等。如果我們想實(shí)現(xiàn)靜態(tài)化,我們就需要把view執(zhí)行的結(jié)果保存成一個(gè)靜態(tài)文件,保存到指定的位置上,比如磁盤、分布式緩存等,下次再訪問就可以直接讀取保存的內(nèi)容,而不用再執(zhí)行一次業(yè)務(wù)邏輯。那asp.net core mvc要實(shí)現(xiàn)這樣的功能,應(yīng)該怎么做?答案是使用過濾器,在mvc框架中,提供了多種過濾器類型,這里我們要使用的是動作過濾器,動作過濾器提供了兩個(gè)時(shí)間點(diǎn):動作執(zhí)行前,動作執(zhí)行后。我們可以在動作執(zhí)行前,先判斷是否已經(jīng)生成了靜態(tài)頁,如果已經(jīng)生成,直接讀取文件內(nèi)容輸出即可,后續(xù)的邏輯就執(zhí)行跳過。如果沒有生產(chǎn),就繼續(xù)往下走,在動作執(zhí)行后這個(gè)階段捕獲結(jié)果,然后把結(jié)果生成的靜態(tài)內(nèi)容進(jìn)行保存。

  那我們就來具體的實(shí)現(xiàn)代碼,首先我們定義一個(gè)過濾器類型,我們成為StaticFileHandlerFilterAttribute,這個(gè)類派生自框架中提供的ActionFilterAttribute,StaticFileHandlerFilterAttribute重寫基類提供的兩個(gè)方法:OnActionExecuted(動作執(zhí)行后),OnActionExecuting(動作執(zhí)行前),具體代碼如下:

  

延伸閱讀

學(xué)習(xí)是年輕人改變自己的最好方式-Java培訓(xùn),做最負(fù)責(zé)任的教育,學(xué)習(xí)改變命運(yùn),軟件學(xué)習(xí),再就業(yè),大學(xué)生如何就業(yè),幫大學(xué)生找到好工作,lphotoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動軟件開發(fā)培訓(xùn),網(wǎng)站設(shè)計(jì)培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)學(xué)習(xí)是年輕人改變自己的最好方式

我想了解如何學(xué)習(xí)

姓名:
手機(jī):
留言: