導航:首頁 > 編程語言 > php靜態頁面生成

php靜態頁面生成

發布時間:2022-09-18 05:09:57

1. 如何讓thinkphp生成全靜態頁面

可以使用php的ob緩存來實現靜態頁面的生成。
比如:
你原本要輸出a.php頁面的內容,但是這個是php的動態文件,是要經過處理的,
因此,你在該文件的尾部(在業務都處理完了的地方),開始ob緩存(ob_start();),
然後將緩存存入到一個變數($content = ob_get_contents();),最後再將該變數保存到
靜態的html文件中(file_put_contents('/a.html','$content');)就可以了。

2. PHP網站如何實現網頁偽靜態或靜態

偽靜態 實際是伺服器的設置,php實現靜態,就是用php生成靜態頁,可以考慮用php的smarty 模板引擎

3. thinkphp發布文章怎樣生成靜態頁面呢

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

手冊裡面講解的很詳細,去看看就明白了

4. 如何用PHP輸出靜態頁面

用PHP輸出靜態頁面有2種方法

一種是利用模板技術,另一種是用ob系列函數。兩種方法,看起來都差不多,但是實際上,卻是不同的。

第一種:利用模板

目前PHP的模板可以說是很多了,有功能強大的smarty,還有簡單易用的smarttemplate等。

它們每一種模板,都有一個獲取輸出內容的函數。

我們生成靜態頁面的方法,就是利用了這個函數。

用這個方法的優點是,代碼比較清晰,可讀性好。

這里我用smarty做例子,說明如何生成靜態頁

<?php
require('smarty/Smarty.class.php');
$t=newSmarty;
$t->assign("title","HelloWorld!");
$content=$t->fetch("templates/index.htm");
//這里的fetch()就是獲取輸出內容的函數,現在$content變數裡面,就是要顯示的內容了
$fp=fopen("archives/2005/05/19/0001.html","w");
fwrite($fp,$content);
fclose($fp);
?>

第二種方法:利用ob系列的函數

這里用到的函數主要是ob_start(),ob_end_flush(),ob_get_content(),

其中ob_start()是打開瀏覽器緩沖區的意思,

打開緩沖後,所有來自PHP程序的非文件頭信息均不會發送,

而是保存在內部緩沖區,直到你使用了ob_end_flush().

而這里最重要的一個函數,就是ob_get_contents(),

這個函數的作用是獲取緩沖區的內容,相當於上面的那個fetch(),

道理一樣的。代碼:

<?php
ob_start();
echo"HelloWorld!";
$content=ob_get_contents();//取得php頁面輸出的全部內容
$fp=fopen("0001.html","w");
fwrite($fp,$content);
fclose($fp);
?>

5. thinkphp怎麼生成靜態頁面 還有發布的文章也是

你先搜下不就行了....

1、在入口文件index.php文件中定義生成靜態頁面的文件位置
define('HTML_PATH','./htm');
2、在根目錄的config文件夾中的config.php配置靜態頁面的類型,設為 html
'HTML_FILE_SUFFIX' => '.html',// 默認靜態文件後綴
3、在「Tpl/default/」目錄中新建一個Index的文件夾,文件夾下面新建一個index.html的模板,
模板裡面內容為:這是生成靜態頁例子
4、控制器IndexAction.class.php中的代碼
class IndexAction extends Action{
publicfunction index(){
$this->buildHtml('1',HTML_PATH.'/','index','utf8');//注意:這里的utf8不能寫成utf-8
$this->display();
}
}
解釋:
這里的buildHtml是thinkphp內置的函數,這里的意思是:
將index的模板文件生成utf8編碼格式的靜態網頁,該文件名為1.html,存在於根目錄的htm文件中
該函數有5個參數,具體如下:
buildHtml($htmlfile,$htmlpath,$templateFile,$charset,$contentType='text/html')
參數:
$htmlfile生成的靜態文件名稱
$htmlpath生成的靜態文件路徑
$templateFile 指定要生成靜態的模板文件
$charset生成靜態文件的編碼格式
$contentType生成靜態文件的類型

6. phpcms怎麼生成靜態網站

如果是合格的phpcms模板本身就是帶標題的。 你打開pc原模板的header.html,把title的代碼復制到你的模板就行了。
運行CMD後使用dir命令,加一個/b,會生成一個簡單的文件名列表,不包括其它信息,這種方法可以用來提取文件夾和文件名列表。比如要提取D盤下ABC文件夾里的文件名列表:dir d:\abc /s /b >d:filelist.txt這樣就會在D盤生成一個filelist.txt的文本...
先在擴展裡面設置URL規則, 然後在欄目設置裡面設置 這些都可以根據需求設置
首頁第一步你要編輯自己的靜態規則,如果對系統自帶的滿意的話可以忽略。 即找到擴展——>URL規則管理,再修改相應的生成靜態規則的規則,如果不想在原有的基礎上修改,可以自己添加,這個很簡單,生成什麼樣的目錄你自己說了算,看示例就會 了。 ...
你好! 手機門戶沒有生成靜態頁面一說的,應該是php寫的動態頁面。 現在都是html5的時代了,建議開發html5響應式網站,兼顧PC、平板、移動顯示效果。 希望我的回答能夠幫到你,望採納
我來回答吧:) 1. 進入後台-->網站頻道 2.到這個時候,你網站的所有頻道都會在"右窗口"顯示出來. 3.找到你需要修改的頻道,點擊其右側管理操作的"修改"鏈接... 4.轉入的這個頁面就是此頻道的詳細信息,分別有"基本信息"."許可權設置"."上傳選項"."生成...
你好! 生成了很多多餘的目錄可能跟你的內容頁URL規則設置有關系。如圖: 個人覺得phpcms生成靜態文件是多餘的,完全可以用偽靜態來實現。易於維護和管理,實現也較容易。 希望我的答案對你有所幫助,記得採納哦~
更新URL更新緩存這是phpcms使用問題的萬能葯膏,我問了很多不同的問題,都是這樣的回答,並且都不能解決問題
後台-內容-內容管理-欄目管理-選擇某個欄目-修改-生產html選項 勾完以後更新一下欄目緩存
兩個都可以訪問的,生成靜態後,訪問的靜態地址頁面,伺服器就不會去執行資料庫; 比如,你有10篇文章,動態的話,你每訪問一篇文章都要在資料庫里去找出這張篇文章,而靜態的話,10篇文章就是10個靜態頁面,不用查找資料庫,直接顯示的。 這樣...如果還有不明白的話,你也可以去後盾人平台看看php基礎教學視頻看看,也是不錯的選擇,希望能幫到你,給個採納吧謝謝(^_^)

7. php如何實現網頁靜態

一、靜態化的優點:
1有利於搜索引擎收錄網站頁面的信息:搜索引擎更喜歡靜態的,更變於抓取,搜索引擎SEO排名會更容易提高。
2靜態網頁化網頁穩定
3可以提高網頁載入速度
4減輕伺服器負擔,瀏覽器不需要頻發調用資料庫。
5資料庫出錯不會影響正常訪問
二、偽靜態
PHP偽靜態:是利用Apache mod_rewite實現url重寫的方法
改寫訪問地址,能夠通過URL的PATHINFO模式來改動它。讓它看上去更像一個靜態頁面。從而有更大的幾率被搜索引擎抓取和收錄,僅是對搜索引擎比較友好,偽靜態化
三、純靜態化
純靜態化,就是生成HTML文件的方式,我們須要開啟PHP自帶的緩存機制,即ob_start來開啟緩存。而且在ob_start之前不能有不論什麼輸出,否則運行失敗,然後我們用ob_get_contents函數來獲取緩存中的內容,該函數會返回一個字元串。第三個函數就是ob_end_clean,它用來清空緩存中的內容而且關閉,成功返回True,失敗返回False。
<?php
if(file_exists("match.html") && (time()-filemtime("match.html"))<300)
{
//如果存在對應的靜態文件,則直接訪問
require_once("match.html");
}else{
//這里用數組來模擬資料庫操作,現實一般都是操作資料庫得到對應數據
$student = array("huangxing","chenyuwei",'xufei','zhangjingwen','xuepei');
ob_start();
//載入模板
require_once("muban.php");
file_put_contents("match.html",ob_get_clean());
require_once('match.html');
}

8. PHP怎麼全站批量生成靜態頁面

這個要看你本身的程序具備不具備靜態的功能,就像我的網站 http://www.gengtima.com 本身就有靜態的功能,所以根本就不用考慮這個問題了。 國內比較好的靜態程序,有dede、supersite等。

9. php程序如何批量生成靜態頁

在速度上,靜態頁面要比動態頁面的比方php快很多,這是毫無疑問的,但是由於靜態頁面的靈活性較差,如果不藉助資料庫或其他的設備保存相關信息的話,整體的管理上比較繁瑣,比方修改編輯.比方閱讀許可權限制等,但是,對應一些我們經常頻頻使用的文件,比方說,開發的新聞發布系統,我們不希望很多用戶都讀取資料庫才顯示結果,這樣一方面消耗了伺服器的資源,另一方面佔去了瀏覽者大量可貴的響應時間,所有,有了"靜態頁面話"的做法,當前很多網站都採用這種技術,一般都是由管理後台控制,或者生成html直接顯示,或者xhtml用css控制顯示,或者生成xml用xslt顯示,這些技術都不是難的,在這里我就淺顯的說說生成html的方法.
有些信息比方經常不變的,但是還是能變的信息放在緩存中以加快顯示速度,這是很有價值的,所謂的緩存,通俗的理解就是一些保存在伺服器端的共用信息.它是於伺服器同生死的,我們在保存緩存的時候可以指定下次更新的時間的判斷,比方要在5分鍾更新一次,可以記錄上次更新的時間,和當前時間比較,如果大於
5
分鍾
,讀取資料庫,更新換成,否則直接讀取緩存數據,當然,緩存需要客戶端用戶激活的,只需一次.
ob_start()函數:打開輸出緩沖區.
函數格式
void
ob_start(void)
說明:當緩沖區激活時,所有來自PHP程序的非文件頭信息均不會發送,而是保存在內部緩沖區。為了輸出緩沖區的內容,可以使用ob_end_flush()或flush()輸出緩沖區的內容。
Flush:刷新緩沖區的內容,輸出。
函數格式:flush()
說明:這個函數經常使用,效率很高。
ob_get_contents
:返回內部緩沖區的內容。
函數格式:string
ob_get_contents(void)
說明:這個函數會返回當前緩沖區中的內容,如果輸出緩沖區沒有激活,則返回
FALSE.
ob_get_length:返回內部緩沖區的長度。
函數格式:int
ob_get_length(void)
說明:這個函數會返回當前緩沖區中的長度;和ob_get_contents一樣,如果輸出緩沖區沒有激活,則返回
FALSE.
ob_end_clean:刪除內部緩沖區的內容,並且關閉內部緩沖區
函數格式:void
ob_end_clean(void)
說明:這個函數不會輸出內部緩沖區的內容而是把它刪除
ob_end_flush:發送內部緩沖區的內容到瀏覽器,並且關閉輸出緩沖區
函數格式:void
ob_end_flush(void)
說明:這個函數發送輸出緩沖區的內容(如果有的話)
ob_implicit_flush:打開或關閉絕對刷新
函數格式:void
ob_implicit_flush
([int
flag])
說明:默認為關閉緩沖區,打開絕對輸出後,每個腳本輸出都直接發送到瀏覽器,不再需要調用
flush()
文件寫入:
int
fwrite
(
resource
handle,
string
string
[,
int
length]
)
fwrite()

string
的內容寫入
文件指針
handle
處。
如果指定了
length,當寫入了
length
個位元組或者寫完了
string
以後,寫入就會停止,視乎先碰到哪種情況。
fwrite()
返回寫入的字元數,出現錯誤時則返回
FALSE

相關參考官方網站:
文件參考
三、解決方案
思路:開啟
ob_start緩沖,當已經調出數據的時候獲取
ob_get_contents,然後生成靜態頁,ob_end_clean清除緩沖.ok,就這么來,來看一個例子(php+mysql的結合):
創建資料庫:
CREATE
TABLE
`bihtml`
(
`id`
int(11)
NOT
NULL
auto_increment,
`szdtitle`
varchar(16)
NOT
NULL,
`szdcontent`
text
NOT
NULL,
PRIMARY
KEY
(`id`)
)
TYPE=MyISAM;
獲取當前的ID,並導入模板:
ob_start();
$id=_POST['id']
if(!isset($id)&&is_integer($id))
{
@$db=new
mysqli('localhost','root','admin','bihtml');
$result=$db->fetch_one_array("select
*
from
szd_bi
where
id='$id'");
if(!empty($result))
{
$tmp->assign(array(
"Szdtitle",htmlspecialchars($result['titles']),
"Szdcontent",$result['titles']));
}
$tpl->display('default_1.tpl');
$this_my_f=
ob_get_contents();
//此處關鍵
ob_end_clean();
$filename
=
"$id.html";
if(tohtmlfile_cjjer($filename,$this_my_f))
echo
"生成成功
$filename";
else
echo
"生成識別";
}
}
//把生成文件的過程寫出函數
function
tohtmlfile_cjjer($file_cjjer_name,$file_cjjer_content)
{
if
(is_file
($file_cjjer_name)){
@unlink
($file_cjjer_name);
}
$cjjer_handle
=
fopen
($file_cjjer_name,"w");
if
(!is_writable
($file_cjjer_name)){
return
false;
}
if
(!fwrite
($cjjer_handle,$file_cjjer_content)){
return
false;
}
fclose
($cjjer_handle);
//關閉指針
return
$file_cjjer_name;
}

10. php生成靜態頁面問題

顧老兄上次問個CVS的問題,這次又問這個。長此以往,老兄你要成為「疑難雜症」專家啦。

你問的是實時更新,我們從這個角度出發來發散分析:

實現實時更新方法有以下幾種:

1、純動態頁面,這種方式想必不用多說了吧。就是asp呀,php呀這些伺服器語言進行實時更新的,這種方法沒有更新時間差;

2、擬靜態頁面:這種方式是基於第1項的前提下,進行URL重寫,這種方式也比較常見。

3、緩存頁面:這種方式的特點是更新,但不實時,但也只是相對來說的,如果在對更新速度要求不是很高的特定要求下,也可變相地稱之為實時更新;

4、靜態頁面重生成:(根據你的問題來看,核心問題就是這種,那我們就詳細分析一下)網站頁面採用了html純靜態頁面的方式,但是在用戶瀏覽頁面時,是由php頁面進行跳轉來的,雖然進行了頁面中轉的過程,但是因為程序執行的代碼很少、大量的頁面內容並不需要重新查詢資料庫重新得來,所以總體效率還是最高的。那麼如何實現呢,且看下方步驟:

1) 需要使用URL重寫服務,這種重寫服務其實只是一種過場,比如我們有一個鏈接是:www..com/88.html。

2)當有用戶點擊它的時候,由重寫服務鏈接到特定的鏈接管理頁面(link.php)

3)這個頁面上傳來的鏈接不用經過改造,直接使用,但是這個頁面有一個主要的工作是查看更新標志位,也就是說,這個頁面會對這個已經生成了靜態頁面的88.html資料庫中的更新標志位進行檢查

4)需要注意的一點是,這個標志位是資料庫中事先進行過設定的,就是說,網站的每一個靜態頁面都有對應的這個資料庫欄位。

5)如果該標志位為0(是什麼由設計員決定,只要有一個統一協議就好。)說明沒有更新,直接顯示,如果有更新,則鏈接到相應的php頁面對該靜態html頁面重新生成。

6)如果有新留言或進行了某些後台頁面更改操作後,將這個標志位置為1,然後呢?哼哼,誰在置了標志位後第一個瀏覽這個頁面,伺服器就會重新生成它,然後復原標志位。

這種方案比緩存方式的更新速度來得更快,可以應用在流量大、更新速度要求很高的網站上。當然,這種方案是從網站的設計之初,也就是框架設計的時候就已經開始「預謀」了。否則,要想在設計的中途改動,怕是要傷筋動骨的。

(以上過程是我個人採用的方式,未經論證、未經審核、未經批准、未經備案。曬到這里也希望有其它涉及過相關技術的朋友進行批評指正。小可不勝感激。)

5、html+ajax:這種方案用來解決 你這個問題也不錯,如何實現呢,且看:

1)html大體框架頁面生成了靜態,也不用經常性地頻繁重生成,然而在留言區加入ajax代碼。

2)這個ajax代碼負責留言區的顯示任務、無刷新提交任務。

3)當用戶點擊www..com/88.html的時候,裡面的ajax載入觸發,到html_ajax.php頁面去下載本頁面的留言內容,然後寫入前端頁面。

這種方案在用戶體驗上相當不錯,但個人總感覺它可能會對搜索引擎對留言區的收錄會出現一些問題,但應該不會產生太大問題罷。

好了,以上方案臨時構思,請大家批評指正。

閱讀全文

與php靜態頁面生成相關的資料

熱點內容
壓縮因子定義 瀏覽:967
cd命令進不了c盤怎麼辦 瀏覽:213
葯業公司招程序員嗎 瀏覽:973
毛選pdf 瀏覽:659
linuxexecl函數 瀏覽:727
程序員異地戀結果 瀏覽:374
剖切的命令 瀏覽:228
干什麼可以賺錢開我的世界伺服器 瀏覽:290
php備案號 瀏覽:990
php視頻水印 瀏覽:167
怎麼追程序員的女生 瀏覽:487
空調外壓縮機電容 瀏覽:79
怎麼將安卓變成win 瀏覽:459
手機文件管理在哪兒新建文件夾 瀏覽:724
加密ts視頻怎麼合並 瀏覽:775
php如何寫app介面 瀏覽:804
宇宙的琴弦pdf 瀏覽:396
js項目提成計算器程序員 瀏覽:944
pdf光子 瀏覽:834
自拍軟體文件夾名稱大全 瀏覽:328