赋值后页面不渲染_第七节:框架搭建之页面静态化的剖析
一. 前言
拋磚引玉: 提到項目性能優化,大部分人第一時間就會想到緩存,針對“讀多寫少”的數據,可以放到緩存里,設置個過期時間,這樣就不用每次都去數據庫中查詢了, 減輕了數據庫的壓力,比如:商城項目的物品分類目錄,不會經常變化,就可以放到緩存里。
詳細分析:緩存的引入減輕了數據庫的壓力,但還是要訪問服務器端的接口,需要執行接口中的代碼,需要從緩存中讀取數據,我們有沒有辦法直接訪問一個頁面,不再執行服務器端代碼的業務呢?
答案是顯然的,肯定有,那就是頁面靜態化。
1. 什么是頁面靜態化?
針對每個用戶看到的頁面顯示的數據都是一樣的情況,可以考慮把該頁面直接生成一個html頁面,存放到服務器的硬盤中,該html頁面中是有數據的,其他用戶直接訪問該頁面地址即可,這樣既減輕了數據庫的 壓力,還不需要執行服務器端業務代碼,顯然是要比緩存好的。(通俗點說就是把原先要從數據庫查詢的數據寫死到html中保存,用戶直接通過服務器存放的地址進行訪問)
案例:比如博客園,博主發表一篇文章,文章的內容對每個用戶來說看到的內容都是一樣的,這樣的話新增文章的時候,內容固然要存到數據庫,但同時將內容寫到一個html頁面里,保存到服務器硬盤上, 博主更新博客的時候,同樣要更新原先的html靜態頁面,這樣其他用戶訪問的時候,直接通過這個頁面的地址進行訪問即可。
PS:分享一個博客地址,https://www.cnblogs.com/yaopengfei/p/9216229.html 可以看出來最后都是 xxx.html ,顯然是靜態頁面。
2. 頁面靜態化的適用范圍?
首先靜態頁的性能比緩存好,在條件適用的情況下,能用靜態頁就用靜態頁,靜態頁適用于相同地址所有人看到的內容都是一樣的這種情況。
二. 案例剖析
模擬一個簡單的blog案例,來說明頁面靜態化在實際項目中的使用,該案例分為列表頁和詳情頁面,包含的功能有:增加信息、修改信息、查看詳情功能,同時簡單的設計一下數據庫,數據庫內容如下:表blogs,表信息分別是:主鍵、博客標題、博客內容、博客其它信息、添加時間。
核心剖析:
事先準備一個查看詳情頁面的模板,每次增加信息或者修改信息的時候,調用【頁面渲染為html字符串的方法】和【寫入文件的方法】,將最新的信息保存到html中,進而存到硬盤上,供用戶直接訪問。
渲染Html頁面為字符串的方法如下,注意收藏哦:
1 /// 2 /// 將頁面渲染成html字符串 3 /// 4 /// 傳入this.ControllerContext 5 /// 靜態頁面的模板路徑 6 /// 往模板中傳入實體,進行賦值 7 /// 8 static string RenderViewToString(ControllerContext context, string viewPath, object model = null) 9 {10 ViewEngineResult viewEngineResult = ViewEngines.Engines.FindView(context, viewPath, null);11 if (viewEngineResult == null)12 {13 throw new FileNotFoundException("View" + viewPath + "cannot be found.");14 }15 var view = viewEngineResult.View;16 context.Controller.ViewData.Model = model;17 using (var sw = new StringWriter())18 {19 var ctx = new ViewContext(context, view, context.Controller.ViewData, context.Controller.TempData, sw);20 view.Render(ctx, sw);21 return sw.ToString();22 }23 }調用時候的代碼:(修改與之類似)
三. 詳細步驟和效果展示
1. 主頁面展示列表、包含查看詳情、增加信息、修改信息三個操作。
前端代碼分享
1 @{ 2 Layout = null; 3 } 4 5 6 7 8 9 10 Index 11 44 45總結
以上是生活随笔為你收集整理的赋值后页面不渲染_第七节:框架搭建之页面静态化的剖析的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 转元组 python_Python基础教
- 下一篇: css 科技 边框_CSS 边框