頁面靜態化

靜態化概念:將頁面內須要用到的數據從數據庫中查詢出來,而後生成一個靜態的HTML頁面,好比首頁。用戶來訪問時直接返回靜態頁面便可。
html

 

靜態化緣由:前端

  1. 隨着網站的內容的增多和用戶訪問量的增多,無可避免的是網站加載會愈來愈慢,受限於帶寬和服務器同一時間的請求次數的限制,此時每每須要對網站進行代碼優化和服務器配置的優化。sql

  2. 加快頁面打開瀏覽速度,靜態頁面無需鏈接數據庫打開速度較動態頁面有明顯提升;
  3. 有利於搜索引擎優化SEO,Baidu、Google都會優先收錄靜態頁面,不只被收錄的快還收錄的全;數據庫

  4. 減輕服務器負擔,瀏覽網頁無需調用系統數據庫;瀏覽器

  5. 網站更安全,HTML頁面不會受程序相關漏洞的影響;觀看一下大一點的網站基本全是靜態頁面,並且能夠減小攻擊,防sql注入。緩存

 

靜態頁面實現:安全

 

  • 提早準備一個模板文件,在模板文件中把全部用到的數據以及數據展現代碼都提早寫好(模板語言)
  • 定義一個函數,經過執行這個函數來生成靜態頁面。
    • 從數據庫中查詢出所需數據。
    • 使用對應模板文件,給模板文件傳遞數據進行模板渲染(將模板中的變量替換,獲得替換以後的頁面內容)
    • 將替換後的頁面內容保存爲一個靜態文件。

 

 

靜態頁面更新 :服務器

  • 定時任務:對於數據更新比較頻繁的頁面,可使用操做系統的定時任務,讓操做系統每隔一段時間自動調用生成靜態頁面的函數,來從新生成靜態頁面,以此來保持頁面數據和數據庫數據同步。
  • 修改時更新:對於數據更新不頻繁的頁面,更新頁面的策略爲,若是Admin站點經過後臺管理界面修改了對應數據,就會從新生成對應的靜態頁面。

  首頁數據更新比較頻繁,採用定時任務進行首頁靜態頁面的更新;對於詳情頁面,只有當管理員經過admin界面修改了數據纔會更新對應商品的詳情頁面。併發

 

 

動態網站進行靜態處理頁面靜態化是指將動態頁面變成html/htm靜態頁面。動態頁面通常由JavaScript,Vue,jQuery,Python等程序語言編寫而成,很是便於管理。可是訪問網頁時還須要程序先處理一遍,因此致使訪問速度相對較慢。而靜態頁面訪問速度快,卻又不便於管理。那麼動態頁面靜態化便可以將兩種頁面的好處集中到一塊兒。函數

 

靜態處理帶給網站的好處

(1)減輕服務器負擔,瀏覽網頁無需調用系統數據庫。

(2)有利於搜索引擎優化SEO,Baidu、Google都會優先收錄靜態頁面,不只被收錄的快還收錄的全;

(3)提升了頁面的訪問速度,靜態頁面無需鏈接、訪問數據庫,瀏覽器直接加載渲染html頁便可;

(4)網站更安全,HTML頁面不會受程序相關漏洞的影響;大型網站基本全是靜態頁面。

(5)數據庫出錯時,不影響網站的正常訪問。

(6)靜態網頁不宜遭到黑客攻擊,若是黑客不知道你網站的後臺、網站採用程序、數據庫的地址,靜態網頁, 更不容易受到黑客的攻擊。並且能夠減小攻擊,防sql注入

(7)提高用戶體驗,不會由於程序、數據庫等出現問題,而直接影響網站的訪問,可以提高用戶對網站的信任度。

 

頁面靜態化原理:全靜態化 & 僞靜態化 

  • 動態生成一個頁面的開銷每每很大,例如須要屢次查詢數據庫或者外部服務。爲了減小服務器端的開銷和加快網站的運行效率,服務器端會將一個頁面的總體內容保存爲一個HTML文件,這樣每次在服務器端獲取客戶端請求的時候,只要讀取相應的文件便可,而不須要從新查詢數據庫或外部服務並從新生成頁面內容。缺點是數據更新以後沒法及時的顯示在瀏覽者面前。能夠利用Django、Flask模板實現頁面靜態化。
  • 僞靜態是指經過路由的方法把Python的後綴轉換成HTML,即URL重寫。例如,咱們須要從客戶端獲取一個「頁碼」,而後在頁面上呈現出這一頁的內容。從客戶端傳遞信息的方式有多種,其中最多見的即是經過Query String進行傳遞。栗子,咱們能夠經過 goods?id=3 這樣的方式來請求id爲3的商品。可是若是純粹使用Query String來傳遞信息的話,一個URL可能會帶有許多項查詢字符串。例如 goods?page=3&keywords=helloworld&category=6&....這樣的URL因爲明顯是動態的,所以搜索引擎對它的處理可能會有所負面傾斜,例如將其權值放低。所以,不少程序都會把爲URL規範爲特別的形式,例如 goods/3,甚至是 goods_3.html。使用htm或html做爲URL的結尾,是爲了「欺騙」搜索引擎,讓搜索引擎覺得這是一個直接從存儲設備上直接讀取的資源不會改變,所以「它的權值可能會相對提升」。這樣更有利於網站優化以及頁面的抓取,但實際仍是須要走服務器從數據庫獲取數據。優勢是數據更新時,能夠當即顯示在瀏覽者面前。
 
如何選擇:
  • 網站實時性要求比較高,不要使用頁面靜態化(真靜態、僞靜態均不適宜)
  • 若是網站訪問量較小,沒有必要使用靜態化技術
  • 若是數據項目很少,可是訪問頻率極大,建議使用真靜態,如新浪新聞頻道
  • 若是數據醒目海量使用真靜態會生成海量的html靜態頁面,建議使用僞靜態

 

靜態化和緩存的主要區別

  •  頁面靜態化是將數據庫靜態化到頁面,客戶端訪問不須要查詢數據庫,主要存放形式是靜態化文件資源,存儲於硬盤;
  •  緩存是將數據存儲於服務器內存,兩者存放位置和形式不同。

這兩者使用主要看業務場景及網站優化的點,好比說秒殺的時候,肯會都要把頁面進行靜態化放到CDN上面,這樣在前端就能抗住大量的併發請求;可是在廣告頁面的廣告數據咱們就可使用頁面緩存來實現,一樣不用對數據庫進行查詢,只要訪問內存就行。

相關文章
相關標籤/搜索