新聞中心
本教程操作環(huán)境:windows7系統(tǒng)、php7.1版、DELL G3電腦

PHP 頁面靜態(tài)化的概念
PHP靜態(tài)化分為:純靜態(tài)化 和 偽靜態(tài)化;
純靜態(tài)化:是把PHP生成的動態(tài)頁面保存成靜態(tài)的html文件,用戶訪問該靜態(tài)頁面,而不是用戶每一次訪問都重新生成一張相同的網(wǎng)頁
優(yōu)點(diǎn)就是減小服務(wù)器開銷,
如果細(xì)分純靜態(tài),那么可以分為“局部純靜態(tài)”、“全部純靜態(tài)”:
-
局部靜態(tài)化:是生成的靜態(tài)文件中,有局部的數(shù)據(jù)還是通過ajax技術(shù)動態(tài)獲取的;
-
完全靜態(tài)化:即不存在動態(tài)獲取數(shù)據(jù)的情況,所以內(nèi)容都來自靜態(tài)的html頁面
偽靜態(tài)化:是指將動態(tài)頁面的url地址轉(zhuǎn)換成類似于靜態(tài)頁面的url地址的過程
偽靜態(tài)化其實(shí)還是動態(tài)訪問,其實(shí)質(zhì)是動態(tài)生成數(shù)據(jù),你訪問的網(wǎng)址類似于"http://yourhost,com/index/post/12",是一個靜態(tài)地址,該地址多見于博客地址,但偽靜態(tài)化中,你訪問的網(wǎng)址實(shí)際上經(jīng)過服務(wù)器解析,還是會解析成類似于"http://yourhost,com/?c=index&a=post&id=12"的地址,所以稱之為偽靜態(tài)化
偽靜態(tài)的優(yōu)點(diǎn):美觀;便于搜索引擎收錄
純靜態(tài)化的實(shí)現(xiàn)
利用php內(nèi)置的ob函數(shù)實(shí)現(xiàn)頁面的靜態(tài)化,大概步驟如下:
我是要生成的靜態(tài)內(nèi)容,也可以在該處鏈接數(shù)據(jù)庫生成動態(tài)內(nèi)容于此
觸發(fā)系統(tǒng)生成純靜態(tài)化頁面
方法:頁面添加緩存時間;手動觸發(fā)
頁面添加緩存時間
我是要生成的靜態(tài)內(nèi)容
如果后臺數(shù)據(jù)存在更細(xì),定時刷新不能及時更改靜態(tài)頁面,怎么辦?所有引入了手動觸發(fā)的功能
手動觸發(fā)
手動觸發(fā)的大概樣式就類似于優(yōu)酷視頻評論區(qū),當(dāng)有新評論時,會后一條屎黃屎黃的小提示框:“有新評論,點(diǎn)擊更新”,也類似于app中的下滑刷新的機(jī)制,自己去尋找吧。。
除此之外還有Linux下的crontab定時掃描程序
*/5****php/data/static/index.php局部靜態(tài)化內(nèi)容不做敘述
PHP偽靜態(tài)
// 靜態(tài):http://yourhost.com/index.php/12/2.html // 動態(tài):http://yourhost.com/index.php?type=12&id=2 $pathinfo = $_SERVER['PATH_INFO']; if( preg_match('/^\/(\d+)\/(\d+)/', $pathinfo,$path) ){ $type = $path[1]; $id = $path[2]; echo 'type=',$type,'&id=',$id;//獲得type 和 id 進(jìn)一步處理 }else{ //錯誤處理 echo "err"; }Apache服務(wù)器rewrite配置
在httpd.conf文件中,找到
#注釋:去掉前邊的" # "開啟rewrite服務(wù),重啟服務(wù)器生效 #LoadModule rewrite_module modules/mod_rewrite.so #注釋:http-vhosts.conf文件是虛擬域名配置的文件,開啟改文件可以配置虛擬域名,一般默認(rèn)是開啟的 #Include conf/extra/httpd-vhosts.conf如果你不會配置虛擬域名,可以參考我的另外一篇文章:WAMPServer配置修改及問題匯總
rewrite偽靜態(tài)配置
ServerAdmin webmaster@dummy-host.example.com 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 #配置規(guī)則如下所示 RewriteEngine on RewriteRule ^/vidio/([0-9]*).html$ /vidio.php?id=$1 RewriteEngine其他配置規(guī)則以后會再添加
現(xiàn)在你訪問http://yourhost.com/vidio/12.html時,相當(dāng)于訪問了http://yourhost.com/vidio.php?id=12
問題:配置完上面的內(nèi)容后,又存在以下問題?如果項(xiàng)目目錄下存在該靜態(tài)頁面時,到底是訪問我們的靜態(tài)頁面還是訪問我們偽靜態(tài)的文件呢?
經(jīng)過測試我們發(fā)現(xiàn),并不會訪問靜態(tài)頁面,如果我們想訪問我們的靜態(tài)頁面怎么辦?
偽靜態(tài)和靜態(tài)頁面沖突時解決辦法:
#完整的配置規(guī)則如下 RewriteEngine on #添加以下兩項(xiàng),!-d 和 !-f 分別表示 目錄 和 文件 #當(dāng)訪問的偽靜態(tài)和相應(yīng)的靜態(tài)目錄和文件沖突時,訪問靜態(tài)頁面 RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} !-d RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} !-f RewriteRule ^/index/([0-9]*).html$ /index.php?id=$1
文章題目:php頁面靜態(tài)化是什么意思
網(wǎng)頁URL:http://www.dlmjj.cn/article/djcodgi.html


咨詢
建站咨詢
