靜態:
將php程式生成靜態的
html
檔案,儲存到伺服器的磁碟中。 原理: 在使用者訪問
php程式時,首先檢測靜態的
html
檔案是否存在,如果存在直接輸出靜態檔案,如果靜態檔案不存在,查詢資料庫,生成靜態檔案,並輸出。 優勢: 減少
php程式編譯和對資料庫的查詢。 資料緩衝區: 資料緩衝區是使用者前端用來儲存、操縱資料的物件。 通過輸出控制函式實現純靜態化。
html靜態頁(真靜態)的好處有三點;一是減少伺服器對資料響應的負荷
,二是載入不用調動資料庫,響應速度快。三是便於優化引擎。
缺點也有三點:一是維護不方便,每次都要手動生成。三是空間占用比較大。三是生成的檔案多了,伺服器對html檔案的響應負擔也較重。
我們知道使用php進行**開發,一般執行結果直接輸出到遊覽器,為了使用
php生成靜態頁面,就需要使用輸出控制函式控制快取區,以便獲取快取區的內容,然後再輸出到靜態
html
頁面檔案中以實現**靜態化。
php生成靜態頁面的思路為:首先開啟快取,然後輸出了
html
內容(你也可以通過
include
將html
內容以檔案形式包含進來),之後獲取快取中的內容,清空快取後通過
php檔案讀寫函式將快取內容寫入到靜態
html
頁面檔案中。
php檔案讀寫教程?
獲得輸出的快取內容以生成靜態html頁面的過程需要使用三個函式:
ob_start()、ob_get_contents()、ob_end_clean()。
1、ob_start函式一般主要是用來開啟快取,注意使用ob_start之前不能有任何輸出,如空格、字元等。
2、ob_get_contents函式主要用來獲取快取中的內容以字串形式返回,注意此函式必須在ob_end_clean函式之前呼叫,否則獲取不到快取內容。
錄入fopen,fwrite,fclose(file_put_contents)。
3、ob_end_clean函式主要是清空快取中的內容並關閉快取,成功則返回true,失敗則返回false
ob_end_flush: 傳送內部緩衝區的內容到瀏覽器,並且關閉輸出緩衝區
函式格式:void ob_end_flush(void)
說明:這個函式傳送輸出緩衝區的內容(如果有的話)
php輸出控制函式(
output control
)有很多應用,今後將陸續展開。
至此,使用php生成靜態
html
頁面以實現**靜態化的方法就介紹完了,根據實際情況和需求你可以選擇不同的靜態化方法。
如果想採用區域性快取可以才ajax的方式
tp框架想要採用快取的話 開啟手冊 搜尋靜態規則定義 把快取配置項 貼上到config.php中
全域性搜尋核心**
偽靜態定義:
偽靜態是相對真實靜態來講的,通常我們為了增強搜尋引擎的友好面,都將文章內容生成靜態頁面,但是有的朋友為了實時的顯示一些資訊。或者還想運用動態指令碼解決一些問題。不能用靜態的方式來展示**內容。但是這就損失了對搜尋引擎的友好面。怎麼樣在兩者之間找個中間方法呢,這就產生了偽靜態技術。
好處:一,可以方便的實現對化化引擎的優化,並且比生成靜態更加方便。二、佔空間比較小。三、首頁每天都自動變化,不用維護。**首頁一
art1234.aspx
,這個虛成n個頁
,如art_1234.aspx,news_1234.aspx
,top_1234.aspx,
在不同的頁面放 不同的廣告
.總之是動態的,你就可以隨意動。
缺點:我看只有乙個,那就是效率不如生成html的,因為它不是真正意義上的靜態頁,每次請求是要讀取資料庫的。但你可以用快取技術來補償一下。
設定偽靜態:
apache下的
rewrite
配置主要有2種,一種是針對整個apache伺服器的配置,此種配置的
rewrite
規則是直接在此目錄下建立乙個
.htaccess
首先需要去除httpd.conf檔案中
"#loadmodule rewrite_module modules/mod_rewrite.so"
前面的"#"號;
如果看到這裡說明已經重啟了
第一種方案
在未開啟vhost.conf的時候
在httpd.conf下書寫。
如果開啟了vhost.conf則在此
配置步驟如下:)然後再在
或者vhost.conf中書寫如下規則:
rewriteengine on
#當訪問任何以
t_開頭,以
.html
結尾的檔案時,將
$1用與
(.*)
匹配的字元替換後,訪問相應的
test.php
頁面 rewriterule ^/t_(.*).html$ /test.php?id=$1 #絕對路徑
第二種方案
針對apache伺服器下的某一目錄的配置,此種配置的
rewrite
規則需在此目錄下建立乙個
.htaccess
檔案來書寫。配置步驟如下:
(1)修改
檔案中的
"allowoverride none"
為"allowoverride all",
同時最好將
options
也置為"all",
否則可能會出問題。
(2)在目錄中建立
.htaccess
檔案(不一定非要根目錄),並用記事本開啟,書寫如下規則
: rewriteengine on
rewriterule ^t_(.*).html$ test.php?id=$1
rewriterule ^hello_(.*).html$ test/test.php?id=$1 #(相對路徑)
如何在tp中開啟偽靜態
偽靜態 mysql 靜態和偽靜態
一 偽靜態的用處 有些使用者覺得,偽靜態和真靜態實際被收錄量會相差很大,實在不然,從你個人角度,你去判定一下乙個帖子到底是真靜態還是偽靜態?估計很丟臉得出,由於所謂靜態的意思,就是位址中不帶問號,不帶問號的就是靜態,管他是真的還是偽的?搜尋引擎看得出嗎?所以說,實在不論是真的還是偽的,實在對於搜尋引...
apache偽靜態轉為nginx偽靜態
1.將原apache專案中的偽靜態檔案轉化為nginx的偽靜態 2.將轉化後的偽靜態覆蓋原來的偽靜態檔案內的內容 3.配置nginx伺服器的檔案 4.重新啟動nginx伺服器 詳解 1 找到專案中的偽靜態檔案 vim開啟檔案,將內容複製出來 下面這個是本人的檔案 2 下面這個是自動轉化的 3 將轉化...
頁面靜態化 偽靜態
1 先提出乙個問題 假設我的網域名稱為 www.servername.com,能否實現www.servername.com aaa bbb.html實際上是訪問www.servername.com ccc ddd.php?問題分析 首先,www.servername.com實際上已經確定了ip和埠號...