靜態網頁、動態網頁都是網頁,都是在瀏覽器上用 HTML 展示出來的頁面。HTML 是網頁的基礎結構,網頁如何排版、每個元素在什麼位置,都是由它來描述的。
我們每天看到的網頁,無論是新聞網站,還是線上編輯、下載網站等,大部分都是動態網頁,其中摻雜了少數的靜態網頁(例如,展示一個公司的電話號碼、logo 及地址的網頁一般是靜態網頁)。
靜態網頁和動態網頁的核心區別是後台是否有資料庫的支撐,也可以簡單地描述為網頁上展示的內容是否要變化,是因人而異地顯示不同的內容(例如 QQ 空間),還是根據時間線呈現內容的變化(例如新聞用戶端),或是一直保持不變(例如一些國企或政府網站)。
靜態網頁無須經過後台程式的處理。例如,我們將一個 .txt 檔案的擴充套件名改為 html,放到伺服器中,如果有請求來到伺服器,伺服器會直接將此檔案吐回瀏覽器來顯示。
動態網頁要經過後台程式的處理,我們常見的 ASP、JSP、PHP 都是後台處理程式。以 PHP 為例,當網頁被請求時,首先到 PHP 容器中進行解釋,這時直譯器知道了當前頁面的需求(需要在網頁中展示一行文字和一張圖片),然後 PHP 程式連線資料庫,獲取這兩個資料,將其插入網頁的 HTML 中,再吐回瀏覽器來顯示。
可能大家會問,以 html、shtml 結尾的 URL 一定對應於靜態網頁,以 asp、jsp、php 結尾並包含“?”的 URL —定對應於動態網頁,對嗎?
咱們開啟一篇騰訊網站的新聞,觀察它的 URL(https://new.qq.com/cmsn/NEW20190/NEW2019042300832202.html)。
這個網頁的 URL 就是以 html 結尾的,但它內部包括視訊、正文、廣告等多種元素,而且都是網頁的主框架載入完之後,靠 AJAX 拉取資料的,所以上面問題的答案是:不對。這種格式主要是為了對搜尋引擎更友好而進行的動態網頁偽靜態化。
總的來說靜態網頁和動態網頁有以下特點:
-
靜態網頁和動態網頁都是網頁。
-
靜態網頁不需要後台程式干預處理,直接由伺服器返回。實現為靜態網頁後,一般不需要維護,因為資料不需要更新。
-
動態網頁一般需要由程式來處理(ASP、JSP、PHP、Python、Ruby 等),並由資料庫提供資料支撐。
-
不要以 URL 的形式來判斷一個網頁是靜態的還是動態的,而應該看頁面的屬性(產品經理最好具備一些偵錯技巧和經驗)。
-
動態網頁更靈活。