什麼是PHP靜態化
PHP靜態化的簡單理解就是使網站生成頁面以靜態HTML的形式展示在訪客面前,PHP靜態化分純靜態化和僞靜態化,二者的區別在於PHP生成靜態頁面的處理機制不一樣。php
將PHP的執行頁面預先轉換成HTML,是所謂的PHP靜態化方法之一。html
爲何要讓網頁靜態化
1、加快頁面打開瀏覽速度,靜態頁面無需鏈接數據庫打開速度較動態頁面有明顯提升;
2、有利於搜索引擎優化SEO,Baidu、Google都會優先收錄靜態頁面,不只被收錄的快還收錄的全;
3、減輕服務器負擔,瀏覽網頁無需調用系統數據庫;
4、網站更安全,HTML頁面不會受php相關漏洞的影響; 觀看一下大一點的網站基本全是靜態頁面,並且能夠減小攻擊,防sql注入。sql
靜態化的做用:數據庫
提升網站的響應速度,下降服務器的負載;
用於搜索引擎的SEO;
利用PHP輸出buffer直接寫成html,定時後臺定時掃一遍網站,是比較容易實現的網頁靜態化。瀏覽器
數據庫出錯時,不影響網站正常訪問。
生成html文章雖操做上麻煩些,程序上繁雜些,但爲了更利於搜索,爲了速度更快些,更安全,這些犧牲仍是值得的。
PHP生成靜態HTML頁面的方法
利用PHP模板生成靜態頁面
PHP模板實現靜態化很是方便,好比安裝和使用PHP Smarty實現網站靜態化,也能夠本身寫一套模板解析規則,常見的能夠模仿各種cms的模板規則。
1.使用PHP文件讀寫功能與ob緩存機制生成靜態頁面
好比某個商品的動態詳情頁地址是: http://xxx.com?goods.php?gid=112
那麼這裏咱們根據這個地址讀取一次這個詳情頁的內容,而後保存爲靜態頁,下次有人訪問這個商品詳情頁動態地址時,咱們能夠
直接把已生成好的對應靜態內容文件輸出出來。
緩存
2.使用nosql從內存中讀取內容(其實這個已經不算靜態化了而是緩存);
以memcache爲例:
1 $gid = $_GET['gid']+0;//商品id 2 $goods_statis_content = "goods_content_".$gid;//對應鍵 3 $expr = 3600*24*10;//有效期,十天 4 5 $mem = new Memcache; 6 $mem--->connect('memcache_host', 11211); 7 8 $mem_goods_content = $mem->get($goods_statis_content); 9 10 11 12 if($mem_goods_content){ 13 echo $mem_goods_content; 14 }else{ 15 ob_start(); 16 17 //從數據庫讀取數據,並賦值給相關變量 18 19 //include ("xxx.html");//加載對應的商品詳情頁模板 20 21 $content = ob_get_contents();//把詳情頁內容賦值給$content變量 22 $mem->add($goods_statis_content,$content, false, $expr); 23 ob_end_flush();//輸出商品詳情頁信息 24 25 }
memcached是鍵值一一對應,key默認最大不能超過128個字節,value默認大小是1M,所以1M大小知足大多數網頁大小的存儲。
其餘還有模板替換法,opcache等方法。
轉自http://www.jb51.net/article/59619.htm