概念
PHP靜態化分為:純靜態化 和 偽靜態化;
純靜態化又分為:區域性靜態化 和 完全靜態化
純靜態化:是把PHP生成的動態頁面儲存成靜態的html檔案,使用者存取該靜態頁面,而不是使用者每一次存取都重新生成一張相同的網頁,優點就是減小伺服器開銷,
區域性靜態化:是生成的靜態檔案中,有區域性的資料還是通過ajax技術動態獲取的;
完全靜態化:即不存在動態獲取資料的情況,所以內容都來自靜態的html頁面
偽靜態化:Apache伺服器rewrite設定
純靜態化的實現
利用php內建的ob函數實現頁面的靜態化,大概步驟如下:
<?php ob_start();//開啟快取 ?> <p>我是要生成的靜態內容,也可以在該處連結資料庫生成動態內容於此</p> <?php file_put_contents( 'index.html', ob_get_clean() );//把生成的靜態內容儲存到index.html檔案,而不是輸出到瀏覽器 ?>
觸發系統生成純靜態化頁面
方法:頁面新增快取時間;手動觸發
頁面新增快取時間
<?php $file_name = 'index.html'; if(file_exists( $file_name ) && filemtime( $file_name ) - time() < 10 ){//如果檔案是存在並且最後修改時間小於設定時間 10s //filemtime( $file_name );//得到檔案最後修改時間 //time();//當前時間 require_once( $file_name );//引入檔案 }else{ ob_start( ); ?> <p>我是要生成的靜態內容</p> <?php file_put_contents( $file_name, ob_get_contents() )//輸出到瀏覽器 }
如果後台資料存在更細,定時重新整理不能及時更改靜態頁面,怎麼辦?所有引入了手動觸發的功能
Linux下的crontab定時掃描程式
*/5****php/data/static/index.php
PHP偽靜態
Apache伺服器rewrite設定
在httpd.conf檔案中,找到
#注釋:去掉前邊的" # "開啟rewrite服務,重新啟動伺服器生效
#LoadModule rewrite_module modules/mod_rewrite.so
#注釋:http-vhosts.conf檔案是虛擬域名設定的檔案,開啟改檔案可以設定虛擬域名,一般預設是開啟的
#Include conf/extra/httpd-vhosts.conf
rewrite偽靜態設定
<VirtualHost *:80> ServerAdmin [email protected] DocumentRoot "c:/Apache24/docs/dummy-host.example.com" ServerName dummy-host.example.com ServerAlias www.dummy-host.example.com ErrorLog "logs/dummy-host.example.com-error.log" CustomLog "logs/dummy-host.example.com-access.log" common #設定規則如下所示 RewriteEngine on RewriteRule ^/vidio/([0-9]*).html$ /vidio.php?id=$1 </VirtualHost>
也可用.htacess檔案,放在網站目錄下,無需重新啟動伺服器。
以上就是PHP實現頁面靜態化、純靜態化及偽靜態化的詳細內容,更多請關注TW511.COM其它相關文章!