PHP 頁面靜態化 純靜態化 偽靜態化

2021-09-20 04:16:11 字數 2714 閱讀 2633

概念

php靜態化分為:純靜態化 和 偽靜態化;純靜態化又分為:區域性靜態化 和 完全靜態化

純靜態化:是把php生成的動態頁面儲存成靜態的html檔案,使用者訪問該靜態頁面,而不是使用者每一次訪問都重新生成一張相同的網頁,優點就是減小伺服器開銷,

區域性靜態化:是生成的靜態檔案中,有區域性的資料還是通過ajax技術動態獲取的;

完全靜態化:即不存在動態獲取資料的情況,所以內容都來自靜態的html頁面

偽靜態化:其實還是動態訪問,其實質是動態生成資料,你訪問的**類似於"http://yourhost,com/index/post/12",是乙個靜態位址,該位址多見於部落格位址,但偽靜態化中,你訪問的**實際上經過伺服器解析,還是會解析成類似於"http://yourhost,com/?c=index&a=post&id=12"的位址,所以稱之為偽靜態化

偽靜態的優點:美觀;便於搜尋引擎收錄

純靜態化的實現

利用php內建的ob函式實現頁面的靜態化,大概步驟如下:

<?php ob_start();//開啟快取 

?>

我是要生成的靜態內容,也可以在該處鏈結資料庫生成動態內容於此

<?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 )else

如果後台資料存在更細,定時重新整理不能及時更改靜態頁面,怎麼辦?所有引入了手動觸發的功能

手動觸發

除此之外還有linux下的crontab定時掃瞄程式

*/5****php/data/static/index.php
區域性靜態化內容不做敘述

php偽靜態

// 靜態:

// 動態:

$pathinfo = $_server['path_info'];

if( preg_match('/^\/(\d+)\/(\d+)/', $pathinfo,$path) )else

apache伺服器rewrite配置

在httpd.conf檔案中,找到

#注釋:去掉前邊的" # "開啟rewrite服務,重啟伺服器生效

#loadmodule rewrite_module modules/mod_rewrite.so

#注釋:http-vhosts.conf檔案是虛擬網域名稱配置的檔案,開啟改檔案可以配置虛擬網域名稱,一般預設是開啟的

#include conf/extra/httpd-vhosts.conf

如果你不會配置虛擬網域名稱,可以參考我的另外一篇文章:wampserver配置修改及問題彙總

rewrite偽靜態配置

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

rewriteengine其他配置規則以後會再新增

現在你訪問時,相當於訪問了

問題:配置完上面的內容後,又存在以下問題?如果專案目錄下存在該靜態頁面時,到底是訪問我們的靜態頁面還是訪問我們偽靜態的檔案呢?

經過測試我們發現,並不會訪問靜態頁面,如果我們想訪問我們的靜態頁面怎麼辦?

偽靜態和靜態頁面衝突時解決辦法:

#完整的配置規則如下

rewriteengine on

#新增以下兩項,!-d 和 !-f 分別表示 目錄 和 檔案

#當訪問的偽靜態和相應的靜態目錄和檔案衝突時,訪問靜態頁面

rewritecond %% !-d

rewritecond %% !-f

rewriterule ^/index/([0-9]*).html$ /index.php?id=$1

PHP 頁面靜態化 純靜態化 偽靜態化

概念 php靜態化分為 純靜態化 和 偽靜態化 純靜態化又分為 區域性靜態化 和 完全靜態化 純靜態化 是把php生成的動態頁面儲存成靜態的html檔案,使用者訪問該靜態頁面,而不是使用者每一次訪問都重新生成一張相同的網頁,優點就是減小伺服器開銷,區域性靜態化 是生成的靜態檔案中,有區域性的資料還是...

PHP實現頁面靜態化 純靜態化及偽靜態化

php靜態化分為 純靜態化 和 偽靜態化 純靜態化又分為 區域性靜態化 和 完全靜態化 純靜態化 是把php生成的動態頁面儲存成靜態的html檔案,使用者訪問該靜態頁面,而不是使用者每一次訪問都重新生成一張相同的網頁,優點就是減小伺服器開銷,區域性靜態化 是生成的靜態檔案中,有區域性的資料還是通過a...

PHP頁面靜態化 純靜態與偽靜態用法詳解

當使用者訪問乙個不經常更新的web頁面,php接到指示對php指令碼檔案進行解析,從資料庫查詢到該頁面所需要的資料,然後對頁面模板進行渲染,最後將乙個成品頁面展示給使用者。單次請求對於伺服器來說非常簡單,處理起來非常快,但是如果同時有成千上萬各使用者請求該頁面呢?這無疑是對資源的一種浪費,這就是我們...