什麼是php靜態化
php靜態化的簡單理解就是使**生成頁面以靜態html的形式展現在訪客面前,php靜態化分純靜態化和偽靜態化,兩者的區別在於php生成靜態頁面的處理機制不同。
真靜態化,也稱為磁碟快取:將資料持久化儲存到磁碟中,伺服器重啟、關機等操作不會造成資料的丟失
偽靜態化,也稱為記憶體快取:將資料儲存到記憶體中,相對於磁碟快取而言,讀取速度要更快。
為什麼要讓網頁靜態化
一、加快頁面開啟瀏覽速度,靜態頁面無需連線資料庫開啟速度較動態頁面有明顯提高;
二、有利於搜尋引擎優化seo,baidu、google都會優先收錄靜態頁面,不僅被收錄的快還收錄的全;
三、減輕伺服器負擔,瀏覽網頁無需呼叫系統資料庫;
四、**更安全,html頁面不會受php相關漏洞的影響; **一下大一點的**基本全是靜態頁面,而且可以減少攻擊,防sql注入
ok,在對靜態化有乙個整體認識之後,我們就先從記憶體快取開始學習。
記憶體快取嚴格來說也分為好幾類,包括ob快取、memcached快取、nosql等等,今天我們先來學習記憶體快取中的ob快取使用,至於其他快取的使用會在下面的文章中學習。
在開始學習ob快取之前,我們還需要了解ob快取的幾個關鍵函式
(1)ob_start() - 開啟ob快取
(2)ob_flush() - 輸出快取中的內容
(3)ob_clean() - 清空ob快取內容
(4)ob_end_flush() - 輸出ob快取內容並關閉ob快取
(5)ob_end_clean() - 清空ob快取並關閉ob快取
(6)ob_get_contents() - 返回ob快取中的內容
ob快取的使用也比較簡單,下面我寫了乙個測試檔案
<?php
header("content-type:text/html; charset=utf-8");
$goods_statis_file = "goods_file.html";//對應靜態頁檔案
$expr = 3600*24*10;//靜態檔案有效期,十天
/*檔案存在*/
if(file_exists($goods_statis_file))else
} /*檔案不存在*/
else
?>
上面**的主要意思就是當我們訪問乙個檔案的時候,先判斷該對應的靜態檔案是否存在。如果存在則判斷這個檔案是否失效,如果沒失效則直接輸出這個檔案,如果失效則啟用ob快取,並把生成的靜態快取起來。同樣是不存在該檔案對應的靜態檔案時,啟用ob快取,將生成的靜態檔案快取起來。
在這裡舉例學習的ob快取比較簡單,一般情況下,ob快取都是結合模板使用的。
(1)在靜態檔案有效期內訪問該php檔案,都是直接訪問的靜態檔案,那如果在這個有效期內,我恰巧有修改了一些內容,需要生成新的靜態檔案,這個時候如何實現呢?
(2)如果該php檔案是產品檔案,訪問該檔案時就需要根據傳入的產品id生成不同的靜態頁面,這個時候如果有很多的產品,就會造成靜態頁面很龐大,該如何解決呢?
PHP 頁面靜態化 純靜態化 偽靜態化
概念 php靜態化分為 純靜態化 和 偽靜態化 純靜態化又分為 區域性靜態化 和 完全靜態化 純靜態化 是把php生成的動態頁面儲存成靜態的html檔案,使用者訪問該靜態頁面,而不是使用者每一次訪問都重新生成一張相同的網頁,優點就是減小伺服器開銷,區域性靜態化 是生成的靜態檔案中,有區域性的資料還是...
PHP 頁面靜態化 純靜態化 偽靜態化
概念 php靜態化分為 純靜態化 和 偽靜態化 純靜態化又分為 區域性靜態化 和 完全靜態化 純靜態化 是把php生成的動態頁面儲存成靜態的html檔案,使用者訪問該靜態頁面,而不是使用者每一次訪問都重新生成一張相同的網頁,優點就是減小伺服器開銷,區域性靜態化 是生成的靜態檔案中,有區域性的資料還是...
頁面靜態化 偽靜態
1 先提出乙個問題 假設我的網域名稱為 www.servername.com,能否實現www.servername.com aaa bbb.html實際上是訪問www.servername.com ccc ddd.php?問題分析 首先,www.servername.com實際上已經確定了ip和埠號...