用PHP去實現靜態化

2021-09-09 02:34:51 字數 3515 閱讀 2771

我們在php站點開發過程中為了站點的推廣或者seo的須要,須要對站點進行一定的靜態化,這裡設計到什麼是靜態頁面,所謂的靜態頁面。並非頁面中沒有動畫等元素,而是指網頁的**都在頁面中,即不須要再去執行php指令碼等server端的語言去執行,我們能夠直接訪問到的網頁。這就是靜態網頁。

那麼靜態網頁有什麼優點呢?第乙個主要原因就是由於搜尋引擎,由於搜尋引擎對php頁面搜鹿和html頁面的收錄有一定的區別,而且面臨著頁面資源的占用問題。我們須要對.php檔案進行靜態化。

有一種方式是改寫訪問位址,能夠通過url的pathinfo模式來改動它。讓它看上去更像乙個靜態頁面。從而有更大的機率被搜尋引擎抓取和收錄。

站點能夠在使用者訪問站點之前就通過一定的程式來進行靜態化。生成靜態頁面。當使用者去訪問該頁面的時候。因為訪問的是靜態頁面,因此,訪問速度會比訪問動態頁面的速度快了非常多倍。

這樣的技術對於大站點來說非常有必要。對於小站點也能夠採用。它在前台的表現是頁面載入速度變快,在後台的表現是降低了資料庫的連線。降低了資料庫的壓力,唯一的缺點就是相對佔的硬碟多一些。只是,硬碟相對便宜的多。

既然了解了靜態化的一些長處。那麼怎樣做到靜態化呢?我們用php所能做到的靜態化分為純靜態化和偽靜態化。二者的卻別在於聖經靜態頁面的機制不同,偽靜態化就是通過解析url和使用重寫模式來執行動態頁面,它僅僅是對搜尋引擎比較友好,並非真正意義上的靜態化,以下我們介紹一下純靜態化。

所謂純靜態化,就是生成html檔案的方式,我們須要開啟php自帶的快取機制,即ob_start來開啟快取。而且在ob_start之前不能有不論什麼輸出,否則執行失敗,然後我們用ob_get_contents函式來獲取快取中的內容,該函式會返回乙個字串。第三個函式就是ob_end_clean,它用來清空快取中的內容而且關閉,成功返回true,失敗返回false。

以下請看例項:

這裡我們從資料庫中取出資料而且把這些資料生成之後快取到頁面中。以下是該php檔案:

<?php

//開啟快取

ob_start();

//第一步連線資料庫

$conn = mysqli_connect("localhost","root","","bbs");

//第二步設定對應的字元編碼

$setting = 'set names utf8';

mysqli_query($conn,$setting);

//第三步進行查詢

$sql = 'select * from user';

$result = mysqli_query($conn,$sql);

//第四步把查詢結果轉化為乙個陣列

$rows = mysqli_num_rows($result);

$sqldata = array();

for($i = 0;$i <$rows;$i ++)

//然後列印該資訊

var_dump($sqldata);

//得到生成的html檔案,下次訪問就無需訪問資料庫了

$msg = ob_get_contents();

ob_end_clean();

//把輸出內容放入乙個html檔案裡

$f = fopen("static.html","w");

fwrite($f,$msg);

echo "靜態化成功";

我們執行上述頁面之後,發現該目錄下自己主動多了乙個html檔案,以下是它的**:

array(size=6)

0 =>array(size=4)

'id' =>

string

'1'(length=1)

'level' =>

string

'0'(length=1)

'name' =>

string

'辛星'

(length=6)

'pwd' =>

string

'bd04fcc97578ce33ca5fb331f42bc375'

(length=32)

1 =>array(size=4)

'id' =>

string

'2'(length=1)

'level' =>

string

'1'(length=1)

'name' =>

string

'小倩'

(length=6)

'pwd' =>

string

'61cb72858be523b9926ecc3d7da5d0c6'

(length=32)

2 =>array(size=4)

'id' =>

string

'3'(length=1)

'level' =>

string

'1'(length=1)

'name' =>

string

'小楠'

(length=6)

'pwd' =>

string

'a3d2de7675556553a5f08e4c88d2c228'

(length=32)

3 =>array(size=4)

'id' =>

string

'4'(length=1)

'level' =>

string

'1'(length=1)

'name' =>

string

'劉強'

(length=6)

'pwd' =>

string

'fcdb06a72af0516502e5fdccc9181ee0'

(length=32)

4 =>array(size=4)

'id' =>

string

'5'(length=1)

'level' =>

string

'1'(length=1)

'name' =>

string

'星哥'

(length=6)

'pwd' =>

string

'866a6cafcf74ab3c2612a85626f1c706'

(length=32)

5 =>array(size=4)

'id' =>

string

'6'(length=1)

'level' =>

string

'1'(length=1)

'name' =>

string

'辛勇'

(length=6)

'pwd' =>

string

'e93beb7663f3320eaa0157730d02dd0c'

(length=32)

當然這份**是我們寫的php程式自己主動生成的,能夠用瀏覽器直接訪問,從而減輕了資料庫的壓力。

PHP 如何實現靜態化

根據模版生成靜態頁面 模版是沒有內容的html頁面,也就是要生成的靜態頁面的版式。根據模版生成靜態頁面的方法是根據對模版檔案中的html 讀取,然後將關鍵字進行內容替換並寫入乙個新的html靜態頁面,由此實現根據模版生成靜態頁面。資料庫與靜態頁面的關係 一般說,在實際的應用中,靜態頁面生成是在系統向...

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實現頁面靜態化

一 buffer認知 buffer php存在的緩衝區,乙個記憶體位址空間,主要用於儲存資料區域 可在php.ini中開啟引數 output buffering on 或者在php檔案中手動開啟 ob start 開啟輸出控制緩衝 ob get contents 返回輸出緩衝區內容 ob clean...