優質團隊專業清潔
打掃迅速全年無休
租屋廣利代書事務所
買賣過戶、繼承贈與設定塗銷、陽台補登

首頁  •  j2h 論壇 • 程式設計討論     • 

關於產生靜態頁面速度的問題

房東:可愛鐘
發表時間:2007-01-30


關於產生靜態頁面速度的問題樓主keaizhong(可愛鐘)(溫州的PHPER)(19801010)2006-02-17 11:37:55 在 Web 開發 / PHP 提問
我利用ob_get_contents()來取得動態頁面產生的頁面內容輸出一個靜態頁面的,然後轉向靜態頁面訪問,這個轉向只有在要重新產生靜態的時候發生。。
所以要產生靜態頁面都是訪問一下動態頁面,這樣子的速度是很慢的,尤其是批量產生靜態頁面的時候。
不曉得大家是用什麼方法透過ob_get_contents()產生靜態頁面快一點的?
能用程式直接取得動態產生的內容嗎?我想這樣了肯定會比訪問一下網站快很多。

下面是我靜態輸出轉向的代碼,請大家給我一些見意。多謝了。
========================================
//設定靜態輸出檔案名時才執行
if( $filename ) {
$content = $ofun->make_static(ob_get_contents());//替換動態連接為靜態

$outfile = "../".$dir.$filename;
if( ! file_exists( dirname($outfile) ) ) {//檔案夾不存在
$ofun->makedir( dirname($outfile) , 0777 );//建立檔案夾
}

$ofun->putfile( $outfile , $content );//靜態輸出
//echo $content;//檢視輸出靜態檔案內容(測試用)

header( "location: ".$outfile );//轉向到靜態
exit;
ob_flush();
}

問題點數︰200、回複次數︰56
Top

1 樓kangqin(小康)Top

2 樓keaizhong(可愛鐘)(溫州的PHPER)(19801010)回複於 2006-02-17 14:24:10 得分 0 REWRITE這個我知道。。現下我營運在IIS下面,暫時不那麼做。。
只能是一個一個的生成靜態頁存放在伺服器上。

主要是想了解一下用ob_get_contents()有沒有快速的方法,你們是不是和我一樣?
Top

3 樓keaizhong(可愛鐘)(溫州的PHPER)(19801010)回複於 2006-02-18 10:17:58 得分 0 怎么人氣這么差?
還是我問的問題不對?
Top

4 樓litcat(裡子)回複於 2006-02-18 10:38:09 得分 3php版貌似人氣較差
我是菜鳥,幫頂
Top

5 樓kangqin(小康)Top

6 樓keaizhong(可愛鐘)(溫州的PHPER)(19801010)回複於 2006-02-18 15:18:34 得分 0 小康,沒有辦法呀。我領導這么要求的,一定要生成 靜態,說是有助於搜索引擎收錄啦。
所以我不得不這么做了。

另外IIS怎么設定REWRITE?
Top

7 樓aiiiq(外星人木有小JJ)回複於 2006-02-18 15:49:56 得分 3/usr/local/php/bin/php /home/wwwweb/abc.php > /home/wwwweb/abc.html
可以用exec()函數寫程式
Top

8 樓aiiiq(外星人木有小JJ)回複於 2006-02-18 15:52:12 得分 0 如果透過web訪問一定會慢的
http://www.abc.com/makepage.php?p=abc.php
Top

9 樓syre(神仙)Top

10 樓adleyliu(留印)回複於 2006-02-20 08:24:07 得分 3生成速度慢,不過用戶訪問HTML速度快,也值得﹗
Top

11 樓raid79(山鷹)Top

12 樓lzkd(浪子快刀)回複於 2006-02-20 08:39:43 得分 15可愛鐘同學

你設定為添加一條新聞後就自動生成一些相關的靜態頁(如首頁),不就可以了?
或者,所有新聞添加成功後(或者添加了5條後),就自動靜態生成首頁一次.

有些時候,把工作給別人完成一部分了哈.什麼事都由程式員來完成,好像不太合理.大家也要合作的嘛
Top

13 樓keaizhong(可愛鐘)(溫州的PHPER)(19801010)回複於 2006-02-20 09:05:00 得分 0 那就是說我的方法沒有錯嘍。
我以為我你們還會有其它快速的方法怒。

其實我慢也就慢在批量生成的時候。一條記錄生成並不會慢。。
在前台是看不出來的,主要是後台控制重新生成的時候啦。

不過奇怪的是我領導給我看了一個ASP的靜態網站,後台生成速度是飛快呀,不像我用的這么慢。。所以奇怪向大家請教下嘍。
Top

14 樓uuq(杜牧)回複於 2006-02-20 12:03:52 得分 15$ofun->putfile( $outfile , $content );//靜態輸出
//echo $content;//檢視輸出靜態檔案內容(測試用)
直接輸出$content不行嗎
//header( "location: ".$outfile );//轉向到靜態

批量生成時候,我不知道你用什麼模板
一般用模板替換後輸出,直接用一個循環就可以了
速度也很快的。幾百頁幾秒可以完成了
Top

15 樓lzkd(浪子快刀)回複於 2006-02-21 08:50:12 得分 0 可愛鐘用的大概是phplib模版吧?在以前的貼子裡提起過...

可能是模版的問題,以前我也用phplib,現下在改smartTemplate,等比較出個結果來的時候,我說一下就是了
Top

16 樓keaizhong(可愛鐘)(溫州的PHPER)(19801010)回複於 2006-02-21 11:00:50 得分 0 $ofun->putfile( $outfile , $content );//靜態輸出
我的這個函數就是直接輸出靜態檔案的。。

我用的是PHPLIB的。輸出的時候我是循環訪問每個動態頁面,我這些動態頁訪問一次就會更新一次靜態頁面的。
smartTemplate有緩存的,會快很多吧。

這個不是模版的問題吧。。和模式有關係。
比如我現下要生成首頁--那就訪問一下我的域名︰http://www.abc.com
這樣子肯定是慢的。。能改種模式直接在伺服器上轉存成靜態就會快很多。大家的招嗎?
Top

17 樓lucklrj(123)回複於 2006-02-21 12:48:54 得分 3把php輸出寫到靜態的html上,然後再瀏覽它。
Top

18 樓lzkd(浪子快刀)回複於 2006-02-22 09:02:43 得分 15可愛鐘...你是要訪問後才能夠生成靜態?

訪問你的http://www.abc.com應該是一個生成靜態的php檔案,在這個檔案的最後,你使用了類似header轉到生成的靜態頁,是這樣吧?

我是這樣處理的.在數據庫裡就有相對應這條資料的靜態頁面的位址,批量生成(主要是用於整體網站改版)的時候,直接就重新寫出新的靜態頁面.這樣可能要快一點.
Top

19 樓keaizhong(可愛鐘)(溫州的PHPER)(19801010)回複於 2006-02-22 10:01:34 得分 0 快刀說的就是。我就是這樣子做的,訪問動態PHP頁,就能生成對應的靜態頁面,然後轉向。因為我裡面有些是動態頁面的,並不是純靜態的站點。。
我是根據動態位址有規律的生成靜態頁面。所以知道動態位址透過換算就可以知道靜態位址了。

問題是我用訪問模式來生成靜態的,我覺得這模式慢了。
基於我現下的靜態模式,是不是可以找到另外一種靜態生成快速的方法?
我主要是想和大家討論這個。

快刀說的從數據庫讀出對應資料,這個在生成靜態的時候肯定要這樣子做的。
Top

20 樓mynamesucks(迅雷不及掩耳盜鈴之勢如破竹)回複於 2006-02-22 17:51:56 得分 3linux下寫個crontab定時營運一下你的php程式生成靜態頁
windows下可以用計畫任務達到同樣的效果

如果有人手,也可以安排一個人在更新某些頁面後執行一下啊
Top

21 樓lzkd(浪子快刀)回複於 2006-02-23 09:44:25 得分 15可愛鐘同學...

個人意見是,你可以把訪問動態PHP頁面的這一個工作省掉呀.如果我理解的不錯,你訪問100個頁面,才生成100個靜態,那自然比不上不用訪問頁面,直接生成100個靜態來的那麼快了.至於說有的頁面不是靜態的,有的靜態頁面不需要一起生成,這個在程式裡過濾一下就是了.

具體頁面的位址,直接在數據庫裡儲存,也不要進行什麼換算了.我就是這么處理的.

個人看法,呵....
Top

22 樓keaizhong(可愛鐘)(溫州的PHPER)(19801010)回複於 2006-02-23 11:06:08 得分 0 哈哈。對啊。就是怎么不用訪問頁面來產生靜態?
我現下用ob_get_contents()必須要訪問呀。難道我用的方法不對?

靜態位址和動態位址透過換算這個我想應該沒有問題,這個靈活性好一些。這個只有在產生靜態的時候才進行的。
Top

23 樓xuzuning(嘮叨)Top

24 樓sinolge()Top

25 樓xuzuning(嘮叨)Top

26 樓sinolge()Top

27 樓uuq(杜牧)回複於 2006-02-23 15:22:23 得分 5我有一個挺好的想法
就是你每個頁面用一個javascript
再次訪問伺服器,生成下一次將要生成的內容
如果有了就不生成了
Top

28 樓lzkd(浪子快刀)回複於 2006-02-23 16:29:42 得分 15哈哈。對啊。就是怎么不用訪問頁面來產生靜態?
我現下用ob_get_contents()必須要訪問呀。難道我用的方法不對?

*****

可愛鐘同學...

不用訪問當然可以產生靜態.一個不算是例子的例子
表裡有100條記錄(你的數據一般總是放在表裡,那些1萬年不變,如企業簡介那個不算),現下你需要生成靜態頁面.
$sql = "select .....";
$query=mysql_query($sql);
while(...)
{
//在這裡就是一條一條的內容了

//在這裡讀一條記錄生成一條靜態

}

就是這樣了.當然,這裡面要考慮到一次不能生成太多條,還是一般不是每次都生成庫裡所有的數據,不過,這都是小節了.

用ob_get_contents()應該不會影響速度.


個人看法...呵...
Top

29 樓keaizhong(可愛鐘)(溫州的PHPER)(19801010)回複於 2006-02-23 17:33:44 得分 0 嘮叨,謝謝你的提醒,你說的這裡確實有一個多餘的時間損耗。但我一定要用LOCATION來轉向一下,因為有時候會訪問到動態頁面,轉過去之後位址欄中就變成靜態的html頁面了,要不然還是動態,領導這樣子要求也沒有辦法。也就是說現下我的靜態和動態頁面是互通滴,靜態中有動態,動態訪問不是處理需要都會直接轉向到靜態去了。

uuq(杜牧) 你的想法我懂了,多謝了。有可能的話我會付注實踐的,這個一定還要加個更新時間的設定吧。嘿嘿。其實有點兒像STAMTTEMPLATE的緩存更新了,我說的沒錯吧。

lzkd(浪子快刀) 我批量產生靜態的時候就是你這樣子的。我的問題就是嘮叨提到的,可能是多損耗了一半時間,所以顯得特別慢。

哦,對了,還有一個伺服器回應的時間和產生靜態的時間也有關係了,網路不好的話不是不能產生靜態了?怎么問題越來越多呀。。

Top

30 樓lzkd(浪子快刀)回複於 2006-02-24 09:02:55 得分 5暈..不明白...如果按這么來,怎么會有損耗呢?為什麼非要"LOCATION來轉向一下,"....除非..你根本就是為了產生靜態頁而產生靜態頁,並不是真的需要產生靜態..大概是你的頭家聽說靜態可以增加搜索排名...才......

不然的話,怎么解釋...."也就是說現下我的靜態和動態頁面是互通滴,靜態中有動態"...天..可愛鐘你也太可憐了...
Top

31 樓xuzuning(嘮叨)Top

32 樓lzkd(浪子快刀)回複於 2006-02-24 11:26:34 得分 0 蜘蛛也擔心陷入你的陷阱的

老大的這句話,有點意思..呵

可愛鐘,這種頭家就不要了,離開吧^_*
Top

33 樓keaizhong(可愛鐘)(溫州的PHPER)(19801010)回複於 2006-02-24 13:52:36 得分 0 呵呵。不是頭家,是主管啦。
他不懂PHP的。要求這么做我也沒有辦法。都是混口飯吃的。

嘮叨,那生成的靜態頁面就會在那裡了。訪問的時候還是在靜態之間相互跳轉的,只有少部分是動態跳到靜態。
Top

34 樓lzkd(浪子快刀)回複於 2006-02-25 08:42:35 得分 0 想不明白.可愛鐘同學是怎么安排的......繼續關注
Top

35 樓mrshelly(Shelly)回複於 2006-02-25 08:56:14 得分 3如果樓主用模板技術。就會知道如何操作了。
Top

36 樓keaizhong(可愛鐘)(溫州的PHPER)(19801010)回複於 2006-02-25 09:50:51 得分 0 lzkd(浪子快刀) 我的站點以靜態出現的。在一些處理控制的時候就用到動態,從這些動態頁面轉到靜態的時候,其中連接的也是動態頁面,只是系統中發現此動態 頁面有靜態的時候就會更新靜態並自動轉向。


mrshelly(Shelly)我用的是PHPLIB模版處理網站的。
Top

37 樓boystones(獨孤一劍)Top

38 樓lzkd(浪子快刀)回複於 2006-02-25 13:42:09 得分 0 奇怪並且複雜的功能.....可愛鐘同學,你把網站貼出來,讓我們也看看,學習一下吧,也了解一下,為什麼你的主管需要這么奇怪的東西

又及,如果這樣的話,我相信,需要使用這么動態轉向到靜態的頁面應該不是很多,又何必在乎生成速度呢?

又又及,剛才試了一下smartTemplate的靜態生成,發現比phplib快許多.要不?可愛鐘同學,你也改一下模版用?
Top

39 樓keaizhong(可愛鐘)(溫州的PHPER)(19801010)回複於 2006-02-25 14:35:08 得分 0 東西都已經開發完了,還換?你要我命呀,哈哈。。
網站暫時還沒有掛上去啦。。現下只能在我本機子上用。

是的呀。我只是覺得慢,問一下大家是不是有更好的方法。。
我的動態頁面確實不是很多,從動態轉向靜態的就更少了。基本上客戶是在靜態頁面訪問。
Top

40 樓keaizhong(可愛鐘)(溫州的PHPER)(19801010)回複於 2006-02-25 14:38:27 得分 0 類似於www.made-in-china.com
不過我覺得上面這個網站是利用REWRITE技術的,我主管不相信我說的,只有聽他的了,做到我現下這樣子了。。
Top

41 樓lzkd(浪子快刀)回複於 2006-02-27 09:02:47 得分 0 hehe有點意思..掛上去後,通知一下大家哈...也看看這么複雜的東西是怎么個樣子

我現下在把公司整個網站用smartTemplate換架構重寫..累死了....不過,覺得這樣挺有意思,所以..也建議你換
Top

42 樓keaizhong(可愛鐘)(溫州的PHPER)(19801010)回複於 2006-02-27 09:13:08 得分 0 哈哈。我也想換呀。這等於重新寫一次代碼似的。
時間上不允許呀。。

現下得到一個消息。
我的領導說,搜索引擎搜索頁面是從上到下,從左到右的,都被搞迷糊了。。。

大家跟我說一下,到底蜘蛛是怎么工作的??
在我看來,最重要的的關鍵字就在html中的title和content裡
Top

43 樓blue2004(簡單就是快樂)Top

44 樓loswing(修)回複於 2006-02-27 16:26:05 得分 0 偶一直在用smarty這個東西不錯。呵呵。
---
至今還不會用phplib,慚愧ing。
Top

45 樓keaizhong(可愛鐘)(溫州的PHPER)(19801010)回複於 2006-03-01 08:24:52 得分 0 莫有辦法了,他是領導聽他的唄,現下做得我一點兒信心都沒有了。
這個項目本來我了上手就覺得沒有什麼大的作為的。但是現下做到一半又不能走。
沒有辦法呀,要不就對自己慘忍點,否則就只有對別人慘忍了。

phplib 很簡單的,不用一個晚上你就可以搞定。我會PHPLIB還不會SMARTY呢。都一樣,大家喜歡的東西不一樣,再就是看你先接觸哪個了。

Top

46 樓lzkd(浪子快刀)回複於 2006-03-01 09:05:18 得分 5沒有辦法呀,要不就對自己慘忍點,否則就只有對別人慘忍了。


******

有點意思.那,個人建議,對別人殘忍好過對自己殘忍...
要不---可愛鐘同學就跳吧.
Top

47 樓xuzuning(嘮叨)Top

48 樓keaizhong(可愛鐘)(溫州的PHPER)(19801010)回複於 2006-03-01 11:02:35 得分 0 有點意思.那,個人建議,對別人殘忍好過對自己殘忍...

這個我贊成了。。哈哈。。等待中。。。溫州這邊做PHP少呀。
有好機會 當然要對別人慘忍了。哈哈。。。

我們的討論好像偏離了主題了。我就當兩三個問題來好了。到時候我會加分的。多謝各位了。

我們提到這兩個模版,再順便問個問題了。
置頂的neatTempate,好像集成了PHPLIB和smartTemplate的諸多優點,大家覺得如何?
一直在用PHPLIB,用到現下發現有些不順手了,正想尋找一個小巧的模版,看好smartTemplate的時候neatTemplate出現了,個人發現挺不錯的,大家給評評。
Top

49 樓xuzuning(嘮叨)Top

50 樓zairwolft(君子蘭)回複於 2006-03-01 11:48:42 得分 3又學一招。
Top

51 樓keaizhong(可愛鐘)(溫州的PHPER)(19801010)回複於 2006-03-01 14:28:48 得分 0 呵呵。我也學到一招。。
老大,自己做的模版當然是好了,用著習慣不說,以後擴展也方便,再加上每個人對自己的東西有著與別人的無法比擬的感情在裡面。哈哈。可以的話我也想自己做一個。
老大的模版引擎能不能共享一下?
Top

52 樓feyge(菲戈@http://feyge.spaces.msn.com/)回複於 2006-03-01 14:31:46 得分 0 sign
Top

53 樓keaizhong(可愛鐘)(溫州的PHPER)(19801010)回複於 2006-03-01 14:32:37 得分 0 裡面有個下載位址的。不曉得怎么回事,沒有幾個人對那個模版發表意見。

http://nt.neatcn.com/NEATTemplate_1_0_0.rar
Top

54 樓dadwxf(三個夏天)Top

55 樓lzkd(浪子快刀)回複於 2006-03-01 16:43:09 得分 3通常搜索引擎搜索頁面是︰
1、檢查meta標記
2、分析並跟蹤頁面中的url

當發現是動態url時多半就不跟蹤了,因為動態頁面的內容會變不宜分類。
當然如果你已經付費了,動態連接也是會被收錄的

-----------

相信可愛鐘同學不會罵我(嘻嘻^_*),跟在後面想問一下嘮叨老大..所謂"動態url時多半就不跟蹤了"這裡面的動態url是指如index.php還是如index.php?path=root

也就是說,一個單獨的,php檔案後面沒有加上如?path=root這樣的參數,蛛蛛會不會跟蹤?
Top

56 樓keaizhong(可愛鐘)(溫州的PHPER)(19801010)回複於 2006-03-01 16:49:53 得分 0 根據老大說的,動態的應該也包括index.php了。在變的不好分類收錄,這也是在變的。




  • 贊助網站       

    廣利不動產-板橋在地生根最實在--新板特區指名度最高、值得您信賴的好房仲
    完整房訊,房屋、店面熱門精選物件,廣利不動產 優質仲介,房屋租賃、買賣資訊透明,交易真安心!
    廣利不動產-新板特區指名度最高、值得您信賴的好房仲
    您的托付,廣利用心為您服務



  •  共 0 人回應

    姓名:
    佈告內容:
    其他選項: