當前位置:首頁 » 編程語言 » php靜態地址

php靜態地址

發布時間: 2024-12-30 14:44:20

php如何實現靜態化(php靜態頁面)

PHP網站如何純靜態化

純靜態網站在網站中是怎麼實現的?

純靜態的製作技術是需要先把網站的頁面總結出來,分為多少個樣式,然後把這些頁面做成模板,生成的時候需要先讀取源文件然後生成獨立的以.html結尾的頁面文件,所以說純靜態網站需要更大的空間,不過其實需要的空間也不會大多少的,尤其是對於中小型企業網站來說,從技術上來講,大型網站想要全站實現純靜態化是比較困難的,生成的時間也太過於長了。不過中小型網站還是做成純靜態的比較,這樣做的優點是很多的。

而動態網站又是怎麼進行靜態處理的?

頁面靜態化是指將動態頁面變成html/htm靜態頁面。動態頁面一般由asp,php,jsp,.net等程序語言編寫而成,非常便於管理。但是訪問網頁時還需要程序先處理一遍,所以導致訪問速度相對較慢。而靜態頁面訪問速度快,卻又不便於管理。那麼動態頁面靜態化即可以將兩種頁面的好處集中到一起。

北大青鳥設計培訓:PHP應用中常用的9大緩存技術?

一、全頁面靜態化緩存也就是將頁面全部生成html靜態頁面,用戶訪問時直接訪問的靜態頁面,而不會去走php伺服器解析的流程。

此種方式,在CMS系統中比較常見,比如dedecms;一種比較常用的實現方式是用輸出緩存:Ob_start()******要運行的代碼*******$content=Ob_get_contents();****將緩存內容寫入html文件*****Ob_end_clean();二、數據緩存顧名思義,就是緩存數據的一種方式;比如,商城中的某個商品信息,當用商品id去請求時,就會得出包括店鋪信息、商品信息等數據,此時就可以將這些數據緩存到一個php文件中,文件名包含商品id來建一個唯一標示;下一次有人想查看這個商品時,首先就直接調這個文件裡面的信息,而不用再去資料庫查詢;其實緩存文件中緩存的就是一個php數組之類;Ecmall商城系統裡面就用了這種方式;三、查詢緩存其實這跟數據緩存是一個思路,就是根據查詢語句來緩存;將查詢得到的數據緩存在一個文件中,下次遇到相同的查詢時,就直接先從這個文件裡面調數據,不會再去查資料庫;但此處的緩存文件名可能就需要以查詢語句為基點來建立唯一標示;按時間變更進行緩存就是對於緩存文件您需要設一個有效時間,在這個有效時間內,相同的訪問才會先取緩存文件的內容,但是超過設定的緩存時間,就需要重新從資料庫中獲取數據,並生產最新的緩存文件;比如,我將我們商城的首頁就是設置2個小時更新一次。

四、頁面部分緩存該種方式,是將一個頁面中不經常變的部分進行靜態緩存,而經常變化的塊不緩存,最後組裝在一起顯示;可以使用類似於ob_get_contents的方式實現,也可以利用類似ESI之類的頁面片段緩存策略,使其用來做動態頁面中相對靜態的片段部分的緩存。

該種方式可以用於如商城中的商品頁;五、Opcode緩存首先php代碼被解析為Tokens,然後再編譯為Opcode碼,最後執行Opcode碼,返回結果;所以,對於相同的php文件,第一次運行時可以緩存其Opcode碼,下次再執行這個頁面時,直接會去找到緩存下的opcode碼,直接執行最後一步,而不再需要中間的步驟了。

比較知名的是XCache、TurckMMCache、PHPAccelerator等。

六、按內容變更進行緩存這個也並非獨立的緩存技術,需結合著用;就是當資料庫內容被修改時,即刻更新緩存文件;比如,一個人流量很大的商城,商品很多,商品表必然比較大,這表的壓力也比較重;我們就可以對商品顯示頁進行頁面緩存;當商家在後台修改這個商品的信息時,點擊保存,我們同時就更新緩存文件;那麼,買家訪問這個商品信息時,實際問的是一個靜態頁面,而不需要再去訪問資料庫;試想,如果對商品頁不緩存,那麼每次訪問一個商品就要去資料庫查一次,如果有10萬人在線瀏覽商品,那伺服器壓力就大了;七、內存式緩存提到這個,可能大家想到的首先就是Memcached;memcached是高性能的分布式內存緩存伺服器。

一般的使用目的是,通過緩存資料庫查詢結果,減少資料庫訪問次數,以提高動態Web應用的速度、提高可擴展性。

它就是將需要緩存的信息,緩存到系統內存中,需要獲取信息時,直接到內存中取;比較常用的方式就是key_value方式;connect($memcachehost,$memcacheport)ordie("Couldnotconnect");$memcache-set('key','緩存的內容');$get=$memcache-get($key);//獲取信息?八、apache緩存模塊apache安裝完以後,是不允許被cache的。

廈門IT培訓認為如果外接了cache或squid伺服器要求進行web加速的話,就需要在htttpd.conf里進行設置,當然前提是在安裝apache的時候要激活mod_cache的模塊。

大家好,請問一下yii2.0怎麼實現頁面靜態化?

//基本方式

//file_put_contents()函數?

//使用php內置緩存機制實現頁面靜態化?—output-bufferring.

//1.使用PHP文件讀寫功能生成靜態頁面

?

$out1?=?"htmlheadtitlePHP網站靜態化教程/title/headbody歡迎訪問PHP網站開發教程網,本文主要介紹PHP網站頁面靜態化的方法/body/html";

$fp?=?fopen("leapsoulcn.html","w");

if(!$fp)

{

echo?"System?Error";

exit();

}

else

{

fwrite($fp,$out1);

fclose($fp);

echo?"Success";

}

2.利用PHP模板生成靜態頁面

PHP模板實現靜態化非常方便,比如安裝和使用PHPSmarty實現網站靜態化。

在使用Smarty的情況下,也可以實現頁面靜態化。下面先簡單說一下使用Smarty時通常動態讀取的做法。?

一般分這幾步:

1、通過URL傳遞一個參數(ID);

2、然後根據此ID查詢資料庫;

3、取得數據後根據需要修改顯示內容;

4、assign需要顯示的數據;

5、display模板文件。

Smarty靜態化過程只需要在上述過程中添加兩個步驟。

第一:在1之前使用ob_start()打開緩沖區。

第二:在5之後使用ob_get_contents()獲取內存未輸出內容,然後使用fwrite()將內容寫入目標html文件。

//3.用PHP輸出控制函數(Output?Control)/ob緩存機制生成靜態頁面

?

ob_start();

echo?"html".

"head".

"titlePHP網站靜態化教程/title".

"/head".

"body歡迎訪問腳本之家,本文主要介紹PHP網站頁面靜態化的方法/body".

"/html";

$out1?=?ob_get_contents();

ob_end_clean();

$fp?=?fopen("leapsoulcn.html","w");

if(!$fp)

{

echo?"System?Error";

exit();

}

else

{

fwrite($fp,$out1);

fclose($fp);

echo?"Success";

}

??

//或者

?php

$gid?=?$_GET['gid']+0;//商品id?

$goods_statis_file?=?"goods_file_".$gid.".html";//對應靜態頁文件?

$expr?=?3600*24*10;//靜態文件有效期,十天?

if(file_exists($goods_statis_file)){

$file_ctime?=filectime($goods_statis_file);//文件創建時間?

if($file_ctime+$expr--time()){//如果沒過期?

echo?file_get_contents($goods_statis_file);//輸出靜態文件內容?

exit;

}else{//如果已過期?

unlink($goods_statis_file);//刪除過期的靜態頁文件?

ob_start();

//從資料庫讀取數據,並賦值給相關變數?

//include?("xxx.html");//載入對應的商品詳情頁模板?

$content?=?ob_get_contents();//把詳情頁內容賦值給$content變數?

file_put_contents($goods_statis_file,$content);//寫入內容到對應靜態文件中?

ob_end_flush();//輸出商品詳情頁信息?

}

}else{

ob_start();

//從資料庫讀取數據,並賦值給相關變數?

//include?("xxx.html");//載入對應的商品詳情頁模板?

$content?=?ob_get_contents();//把詳情頁內容賦值給$content變數?

file_put_contents($goods_statis_file,$content);//寫入內容到對應靜態文件中?

ob_end_flush();//輸出商品詳情頁信息?

}

?

如何實現網頁靜態化

方法一:使用現成的插件,比如:ISAPI_Rewrite、IISRewrite、Apache

HTTP伺服器的mod_rewrite等,它們都是基於正則表達式解析器開發的重寫引擎。它們的使用方法查看它們自帶的幫助即可。

方法二:自己寫的代碼實現動態網頁靜態化,方法也有好幾種:

1、創建FSO對象,利用此對象將所需的內容動態創建到文件中生成HTML頁面;

2、利用模板技術,將模板中特殊代碼的值替換為從表單或是資料庫欄位中接受過來的值生成HTML文件;

3、使用Server.Transfer轉換技術,

方法三:使用HttpWebRequest請求客戶端的方式,獲取返回資源,生成靜態頁面。一般這樣只需要獲取網頁內容即可,其它資源可放置在伺服器上,自動載入。(註:此方法缺點明顯,需要大量更改匹配URL,建議慎用)

方法四:在asp中有IhttpMole介面。Ihttpmole可以簡單理解為一個可以在執行像.aspx,或者mvc中control/action前,添加我們自定義的操作的東西。

我們只需要編寫這么一個HttpMole就可以了,當用戶第一次請求asp處理時,我們可以在ihttpmole中攔截到這個請求,然後獲取到這次請求應該返回的html代碼,然後我們返回這些html給用戶,並保存剛才我們獲取到的html到文件內,當用戶下次請求時,我們只需要直接返回我們已經保存的html文件即可

PHP沒用框架怎麼靜態化?

用html寫好靜態化的模板。所有動態的部分用一個特有標簽代替。php讀取模板文件,preg_match匹配出特有的標簽,將資料庫中的內容替換上去。就這樣!

比如

body

{{content}}

/body

新聞頁面的靜態化就像這樣

㈡ Thinkphp3.0版本的靜態緩存該如何配置

'HTML_CACHE_ON' => true, // 開啟靜態緩存'HTML_CACHE_TIME' => 60, // 全局靜態緩存有效期(秒)'HTML_FILE_SUFFIX' => '.shtml', // 設置靜態緩存文件後綴'HTML_CACHE_RULES' => array( // 定義靜態緩存規則 // 定義格式1 數組方式 '靜態地址' => array('靜態規則', '有效期', '附加規則'), // 定義格式2 字元串方式 '靜態地址' => '靜態規則', )

手冊上是這樣配的,你是不是寫的作用於不對,要在config文件夾中配置。

㈢ 如何配置ThinkPHP中靜態緩存的存放路徑

1)首先查看ThinkPHP核心文件core.php,發現引入的各種類php中,有一名為:View.class.php,視圖類。顧名思義此類應與模板輸出、緩存及相關操作有關。
2)
打開View.class.php,用eclipse的outline視圖查看該類的結構,發現一方法名為:buildHtml(),創建靜態頁面。此方
法有一行代碼為:$htmlpath = !empty($htmlpath)?$htmlpath:HTML_PATH;
這行代碼很
顯然是定義靜態頁面的路徑的,其中可以看到前面說到的HTML_PATH。使用eclipse的查看變數源位置(按住ctrl,滑鼠左鍵點擊變數),可以
看到有2個供追蹤的變數源位置,paths.php和~runtime.php,後者是非核心臨時文件,舍棄之。
3)打開
paths.php,可以找到HTML_PATH的這一行代碼:define('HTML_PATH',APP_PATH.'/'.HTML_DIR.'
/');,看此處可知,HTML_PATH的結果與系統變數HTML_PATH無關,而是由另外兩個系統變數拼湊而成。
其中
APP_PATH為項目所在路徑,HTML_DIR追蹤之,可在同一文件內找到代碼:define('HTML_DIR',
'Html');而這個Html文件夾正是我怎麼改都改不掉的緩存存放路徑,於是改之,刪Runtime(因為前面可以看到該臨時文件夾有存放
HTML_PATH變數),刷新,成功解決

㈣ php偽靜態如何獲取地址欄url

程序偽靜態後,搜索引擎又收錄了之前的大量動態地址,如何處理呢?
你可能以為設置301就可以了,但似乎301更搜索引擎更新過來也是需要相當一段時間,而搜索到以前的動態地址,訪問還是有點不好,畢竟還是希望訪問靜態地址,這里就需要在頁面里做一下判斷了。

首先,用了php內置函數,因程序偽靜態了,發現取得的都是真實的url地址,和顯示的url根本是兩樣。
網上找了很久,都沒有找到辦法。問題實再是很棘手。

無意中看到一個asp的例子,其中包含:http_x_rewrite_url,於是用php試了下,沒想到卻可以獲取到地址欄的地址,至此問題解決。

例子,php偽靜態如何獲取地址欄url。

代碼示例:

<?php
if(strstr($_server["http_x_rewrite_url"],".php"){//判斷是否包含.php的地址。
header("http/1.1301movedpermanently");
header("location:http://www..com/$id.html");//跳轉到新的靜態地址。
exit;
}
//只適用於windows的伺服器,liunx則需要用$_server['request_uri']來獲取
if(strstr($_server['request_uri'],".php"){//判斷是否包含.php的地址。
header("http/1.1301movedpermanently");
header("location:http://www..com/$id.html");//跳轉到新的靜態地址。
exit;
//只要輸入以前的動態地址都會以301方式轉到新的靜態地址。
?>
熱點內容
電腦上怎麼把圖片壓縮 發布:2025-01-02 20:59:46 瀏覽:931
易安卓編程 發布:2025-01-02 20:58:52 瀏覽:850
忘記了筆記本開機密碼怎麼辦 發布:2025-01-02 20:57:12 瀏覽:149
一起提醒對方密碼修改是什麼意思 發布:2025-01-02 20:46:07 瀏覽:968
放假解壓 發布:2025-01-02 20:46:03 瀏覽:946
為什麼數據老是斷網安卓手機 發布:2025-01-02 20:45:23 瀏覽:227
多ip伺服器如何實現域名 發布:2025-01-02 20:29:38 瀏覽:549
聯網伺服器1302什麼意思 發布:2025-01-02 20:28:50 瀏覽:900
樂視手機相冊在哪個文件夾 發布:2025-01-02 20:22:27 瀏覽:570
騰訊雲伺服器部署 發布:2025-01-02 20:18:04 瀏覽:508