ThinkPHP 的頁面靜態化功能的實現(一)
阿新 • • 發佈:2019-01-03
頁面靜態化有很多好處,加快頁面開啟瀏覽速度,有利於搜尋引擎優化SEO,減輕伺服器負擔,網站更安全,HTML頁面不會受php相關漏洞的影響。
使用方法也很簡單:
然後在根目錄下的HTML目錄中就會出現一個news.html檔案。
常說的頁面靜態化分為兩種,一種是偽靜態,即url 重寫,一種是真靜態化。
ThinkPHP 也自帶了生成靜態檔案的方法 buildHtml,方法在 /ThinkPHP/Library/Think/Controller.class.php,Line 86:
/** * 建立靜態頁面 * @access protected * @htmlfile 生成的靜態檔名稱 * @htmlpath 生成的靜態檔案路徑 * @param string $templateFile 指定要呼叫的模板檔案 * 預設為空 由系統自動定位模板檔案 * @return string */ protected function buildHtml($htmlfile='',$htmlpath='',$templateFile='') { $content = $this->fetch($templateFile); $htmlpath = !empty($htmlpath)?$htmlpath:HTML_PATH; $htmlfile = $htmlpath.$htmlfile.C('HTML_FILE_SUFFIX'); Storage::put($htmlfile,$content,'html'); return $content; }
使用方法也很簡單:
(1)在根目錄下的程式入口檔案index.php中加下面這行:
define('HTML_PATH', './HTML/');//生成靜態頁面的檔案位置
(2)在專案的配置檔案config.php中加下面這行:
'HTML_FILE_SUFFIX' => '.html',// 預設靜態檔案字尾
(3)在需要生成靜態頁的action裡呼叫方法
public function index(){ $map = "id = $_GET[id]"; $list = M("artical")->where($map)->limit(5)->order("add_time desc")->select(); $this->assign("news", $list); $this->buildHtml('news', HTML_PATH . '/news/', 'index'); $this->display(); }
然後在根目錄下的HTML目錄中就會出現一個news.html檔案。
這種方法雖然操作簡單,但其實沒什麼意義,在現實專案中基本用不到,因為它存在很多不足:
(1)它只是一個單純的靜態的HTML檔案,訪問網頁的時候也不會被訪問到。
(2)它只是根據方法生成頁面,在列表分頁的時候,多個頁面是同一個方法產生,但靜態化出來的只有一個檔案,也就是隻有一個頁面。
所以這種方法不推薦使用!!!