1.簡介
(1)問題分析
現在,我們的頁面是通過thymeleaf模板引擎渲染後返回到客戶端。在後台需要大量的資料查詢,而後渲染得到html頁面。會對資料庫造成壓力,並且請求的響應時間過長,併發能力不高。
大家能想到什麼辦法來解決這個問題?
首先我們能想到的就是快取技術,比如之前學習過的redis。不過redis適合資料規模比較小的情況。假如資料量比較大,例如我們的商品詳情頁。每個頁面如果10kb,100萬商品,就是10gb空間,對記憶體占用比較大。此時就給快取系統帶來極大壓力,如果快取崩潰,接下來倒霉的就是資料庫了。
所以快取並不是萬能的,某些場景需要其它技術來解決,比如靜態化。
(2)什麼是靜態化
靜態化是指把動態生成的html頁面變為靜態內容儲存,以後使用者的請求到來,直接訪問靜態頁面,不再經過服務的渲染。
而靜態的html頁面可以部署在nginx中,從而大大提高併發能力,減小tomcat壓力。
(3)如何實現靜態化
目前,靜態化頁面都是通過模板引擎來生成,而後儲存到nginx伺服器來部署。常用的模板引擎比如:
我們之前就使用的thymeleaf,來渲染html返回給使用者。thymeleaf除了可以把渲染結果寫入response,也可以寫到本地檔案,從而實現靜態化。
2.
thymeleaf實現靜態化
(1)概念
先說下thymeleaf中的幾個概念:
<1>context
上下文: 用來儲存模型資料,當模板引擎渲染時,可以從context上下文中獲取資料用於渲染。
當與springboot結合使用時,我們放入model的資料就會被處理到context,作為模板渲染的資料使用。
<2>templateresolver
模板解析器:用來讀取模板相關的配置,例如:模板存放的位置資訊,模板檔名稱,模板檔案的型別等等。
當與springboot結合時,templateresolver已經由其建立完成,並且各種配置也都有預設值,比如模板存放位置,其預設值就是:templates。比如模板檔案型別,其預設值就是html。
<3>templateengine
模板引擎:用來解析模板的引擎,需要使用到上下文、模板解析器。分別從兩者中獲取模板中需要的資料,模板檔案。然後利用內建的語法規則解析,從而輸出解析後的檔案。來看下模板引擎進行處理的函式:
templateengine.process("模板名", context, writer);
三個引數:
在輸出時,我們可以指定輸出的目的地,如果目的地是response的流,那就是網路響應。如果目的地是本地檔案,那就實現靜態化了。
而在springboot中已經自動配置了模板引擎,因此我們不需要關心這個。現在我們做靜態化,就是把輸出的目的地改成本地檔案即可!
商品詳情靜態頁面
商品詳情靜態頁面,很好看的商品詳情靜態頁面,有規格引數 商品介紹 商品評價 售後保障 掃手機下單 加入購物車 檔案 n459.com file 25127180 477876958 以下內容無關 分割線 git reset功能整體的操作分為三個步驟,我們拆分開來詳細介紹。第一步 移動指標 雖然res...
5 3 頁面靜態化
頁面靜態化 頁面是存為html,動態的資料是通過介面來從服務端進行獲取的。所以服務端只需要寫介面。極大的節省網路流量,提高響應速度。這種技術越來越流行,越來越多的公司開始使用這種技術。頁面靜態化,就是前後端分離。前端技術越來越多,越來越火的比如angularjs,vue.js 本次靜態化利用的是瀏覽...
1 2 頁面靜態化真靜態
0x00 1.頁面靜態化的分類 從形式化上劃分 真靜態 把乙個動態頁面 操作了資料庫,或者php結尾的 生成乙個靜態頁面.html檔案 偽靜態 從表面上看是乙個靜態頁面,實際操作時動態頁面。例如 實際上是訪問是 偽靜態主要是利用seo防sql注入 從範圍來說 全部靜態 區域性靜態 比如使用者登入 使...