(此文章同時發表在本人微信公眾號“dotNET每日精華文章”,歡迎右邊二維碼來關注。)
題記:這個問題是我最近工作中,一直在思考的內容,今天和大家分享和討論一下我的看法。
定義
靜態網站:整個網站只由靜態的內容(HTML\CSS\JS\Images…)組成,服務端發送給客戶端的都是直接的內容,而不是通過動態網頁技術(不管是ASP\JSP\PHP\Django\RoR\NodeJS)在收到請求的時候由服務端進行渲染出最終HTML發送給客戶端。
靜態網站生成器:基於動態內容生成靜態網站的技術。通常背后會利用一種模板標記語言(或規范),通過模板引擎生成最終的靜態網站內容。現在最流行的靜態網站生成技術恐怕就是Jekyll了。
靜態網站生成服務:提供一個SaaS服務,讓用戶可以在雲服務中而非在本地運行靜態網站生成器。讓用戶可以方便的持續交付自己的靜態網站。即用戶只需編輯內容,提交更改,靜態網站生成服務就會自動刷新靜態網站。
靜態網站托管服務:和一般網站托管服務的最大區別就在於,其只托管靜態內容。而現在世界上最大的靜態網站生成服務和托管服務應該就是GitHub Pages了吧。
為什么
靜態網站其實一直都存在,可以說萬維網的最初形態就是靜態網站,為什么現在說要變成一種流行趨勢了呢?
我覺得是幾個方面的原因:
- 現代瀏覽器和前端技術的迅猛發展導致后端功能越來越簡單,尤其Angular和React帶來的越來越多的Rich Web App出現,后端只需要托管靜態內容和提供數據API。
- 持續交付技術及其背后的自動化腳本技術越來越成熟,從而簡化了大量的之前需要手動處理的配置、部署等工作。
- 現在網站需要服務的客戶數量越來越大,且地理分布越來越廣,使用動態網頁技術面臨着更多挑戰
- 當然動態網頁技術的安全問題的突顯,也讓靜態網頁優勢明顯。比如“1200萬個Drupal站點需要緊急打補丁”。
從下面的Google趨勢圖中,我們也可以看到靜態網站生成器的搜索趨勢從2013年開始大量增長,尤其2015年更是猛增。
另外,InfoQ中有一篇名為《靜態網站生成器將會成為下一個大熱門》的文章也詳細談到了這個趨勢,其中介紹了一家在硅谷專門做靜態網站托管的創業公司Netlify。甚至一家總部在紐約的企業協作SaaS服務商Wework都把自己整個站點利用靜態網站生成器移植為靜態網站並托管到Netlify,並寫了一篇文章來分享他們的經驗《Why WeWork.com uses a static generator and why you should too》。
優勢
靜態網站的特點決定了它有天生的高性能,尤其可以把整站都利用CDN進行加速,那么速度更加飛快。當然,靜態網站的動態化部分(指由JS調用后端API處理的部分)會依賴於后端API的響應速度。
由於靜態網站並不會在服務端渲染網頁結果,所以一些針對動態網頁框架的安全漏洞不會對其產生影響。當然服務器的安全和數據API的安全防護和機制還是必須的。
同時,由於靜態網站對於服務器的負載很低,那么托管成本也就可以非常低。以我的初步設計為例,不啟用CDN配額為10G空間的網站可以低到2人民幣/每月,進行免費增值的商業模式完全沒有問題。
后續
在技術和實現層面(生成服務和托管服務),我最近也進行了一些研究,已經有了初步的想法,現在在進行一些技術原型驗證。等有了初步結果,會進行一個偏重技術層面分享一下。如果你在靜態網站方面有任何想法,歡迎留言評論和我交流。