一、buffer認知
buffer:php存在的緩衝區,乙個記憶體位址空間,主要用於儲存資料區域
可在php.ini中開啟引數
output_buffering = on
或者在php檔案中手動開啟
ob_start 開啟輸出控制緩衝
ob_get_contents 返回輸出緩衝區內容
ob_clean 清空輸出緩衝區,清空後不會在終端顯示
ob_get_clean 得到當前緩衝區的內容並刪除當前緩衝區內容,清空後不會在終端顯示
二、實現靜態化方式
1、file_put_contents(「靜態頁面檔名」,需要儲存的資料)
2、使用php內建快取機制實現頁面靜態化
ob_start() –>
require(「檔案」) /模板檔案 –>
if(file_get_contents(「檔名」, ob_get_contents()){}else{}
ob_end_flush();
3、fopen->fwrite->fclose
三、觸發系統生成靜態化頁面的方式
1、頁面新增快取時間
2、手動觸發方式
3、crontab定時掃瞄程式(linux)
四、例項
1、頁面新增快取時間
<?php
$gid = $_get['gid'];//商品id
$goods_statics_file = "goods_file_".$gid.".html";//對應靜態頁檔案
$expr = 3600*24*5
//靜態檔案有效期5天
if(file_exists($goods_statics_file))else
}else
?>
五、區域性動態化實現
ajax
六、偽靜態
1、通過正規表示式處理
/newlist.php/2/1.html
備註:nginx伺服器不支援pathinfo模式
preg_match(『/^\/(\d+)\/(\d+).html/』, $_server[『path_info』], $match);
$type = $match[1];
$category_id = $match[2];
2、web伺服器rewrite配置
apache下rewrite配置:
(1) 虛擬網域名稱配置
httpd.conf檔案中開啟相關模式
loadmodule rewrite_module modules/mod_rewrite.so
include conf/extra/httpd-vhosts.conf(apache預設是include conf/vhosts.conf)
找到hosts檔案配置網域名稱
(2) httpd_vhosts.conf配置檔案相關資訊
在.htaccess中加入
rewriteengine
onrewritecond
% !-d
rewritecond
% !-f
rewriterule
^(.*)$ /index.php[l,e=path_info:$1]
將 轉換為:
rewritecond % ^(\w+)=(\w+)$
rewriterule ^/path /path/%1/%2?
rewriterule重寫規範flag說明
[r=301] 強制外部重定向 301永久重定向 302臨時重定向 預設302
[c] 鏈結下一條規則,如果這一條不匹配,下一條就不進入
[l] 結束規則,立即停止重寫操作,並不再應用其他重寫規則
[ne] 不對url中的特殊字元進行hexcode轉碼
[nc] 不區分大小寫
[qsa] 用於在url中擷取查詢字串
[g] apache伺服器返回410
[f] (force url to be forbidden)禁用url,返回403http狀態碼。
[n](next round) 重新從第一條規則開始執行重寫過程。
[t]=mime-type(force mime type) 強制mime型別
[ns] (used only if no internal sub-request) 只用於不是內部子請求
[pt](pass through to next handler) 傳遞給下乙個處理
例如:
rewriterule ^/abc(.*) /def$1 [pt] # 將會交給/def規則處理
alias /def /ghi
[s]=num(skip next rule(s)) 跳過num條規則
[e]=var:val(set environment variable) 設定環境變數
rewritebase url-path 設定了目錄級重寫的基準url
rewritecond 指定定義了乙個規則的條件,即在rewriterule前加乙個條件
1、teststring 使用說明 1−
9 1-9 引用緊跟在rewritecond後面的rewriterule中模板中匹配的資料
2、teststring 使用說明 % 伺服器變數引用
3、teststring 使用說明 %1-9
%1-9 rewritecond條件中最後符合的條件中的分組成分
4、condpattern 使用說明
-d 是否是目錄 -f 是否是檔案
5、[flags]使用說明
[nc] 不區分大小寫
[or] 或語法,如果不加,預設為and
rewritemap
mapname 命名給rewriterule呼叫
maptype 檔案型別有txt、rnd
mapsource map檔案路徑
基於重定向的檔案訪問控制
防盜煉:
限制ip
rewritemap hosts-deny(拒絕的位址)
rewritecond
$ | notfound} deny[or]
rewritecond
$ | notfound} deny
rewriterule
^ -[f]
限制迅雷
先通過**分析出迅雷特徵
rewritecond
% 2.0.50727[nc,or]
rewritecond
% ^blackwido[nc,or]
rewriterule
. abuse.txt
然後獎abuse.txt檔案放到主目錄下
thinkphp配置url
rewritecond
% !-d
rewritecond
% !-f
rewriterule
^(.*)$ index.php/$1
[qsa,pt,l]
PHP保持靜態頁面,php實現頁面靜態化
php實現頁面靜態化 2017 4 19 hubo php開發 1.頁面分為靜態頁面和動態頁面,載入動態頁面會去執行動態檔案 php jsp等 會經過語法分析 編譯 執行等程式,而靜態頁面就是html 不需要經過動態檔案的過程,直接執行就可以了,所以載入靜態檔案要比載入動態檔案要快。3.動態頁面靜態...
php實現頁面靜態化
php生成靜態html頁面的方法 1.gid get gid 0 商品id goods statis file goods file gid.html 對應靜態頁檔案 expr 3600 24 10 靜態檔案有效期,十天 if file exists goods statis file else e...
PHP實現頁面靜態化
1 通過buffer來實現 需要用file put contents ob get clean 等內建函式 ob start include filterpost.html mtime filemtime filterpost.html 在這裡可以判斷檔案是否存在和過期,然後做快取或者生成靜態檔案操...