[教學]Template cacheing 的使用~

phpBB Installation & Usage Support
phpBB 2 安裝於各類型作業平台之問題討論;外掛問題,請到相關版面依發問格式發表!
(發表文章請按照公告格式發表,違者砍文)

版主: 版主管理群

版面規則
本區是討論關於 phpBB 2.0.X 架設安裝上的問題,只要有安裝任何外掛,請到外掛討論相關版面按照公告格式發表。
(發表文章請按照公告格式發表,違者砍文)
頭像
台灣阿堂
竹貓好朋友
竹貓好朋友
文章: 307
註冊時間: 2002-03-26 20:42
來自: 台灣台中
聯繫:

[教學]Template cacheing 的使用~

文章 台灣阿堂 »

首先先判斷你要針對"資料庫"或是"網頁"做Cache~

建議剛裝PHPBB2.0.0版的朋友們針對"網頁"做Cache~
如果你的"資料庫"資料很多的話建議針對"資料庫"做Cache~
只能選一個方法使用~

做法:

一 . 針對"網頁"做Cache~

在你的 templates/subSilver 目錄下新建二個目錄

cache/
cache/admin/

目錄權限設為777

再把 phpBB2/contrib/template_file_cache.php這個檔案改名為template.php
放到includes目錄下取代原有的template.php就可以了~


二 . 針對"資料庫"做Cache~

在你的PHPBB資料庫執行下段指令:

CREATE TABLE phpbb_template_cache (
template_name char(255) NOT NULL default '',
template_handle char(50) NOT NULL default '',
template_cached int(11) NOT NULL default '0',
template_echo tinyint(1) NOT NULL default '1',
template_compile text NOT NULL,
PRIMARY KEY (template_name)
)

再把 phpBB2/contrib/template_db_cache.php這個檔案改名為template.php
放到includes目錄下取代原有的template.php就可以了~
oO]-[Oo
南宮博士
南宮博士
文章: 512
註冊時間: 2001-11-11 18:09
來自: TAIWAN
聯繫:

文章 oO]-[Oo »

嗯.. 糾正一下..
file_caching 和 db_caching 差別只在暫存的方法不同, 一個將資料寫進file一個寫進db, 相對的在讀取時, 也是從file或db讀進. template暫存的好處是, 在線上人數多的時候, 會直接利用暫存的資料來產生output以減少重複讀取相同的資料. 就常理來講, db_caching應該比db_chching來的快, 可是上次很多人測的結果都是file_caching比較快一點, 原因我就不清楚了.. 但是file_caching的缺點是, cache/底下要chmod777, 也就是門戶洞開了.. 這部分的安全性問題我也不大清楚...
OOHOO said:
有事Mail給我, 不要P我, 因為根本沒辦法P.
kenlai
星球公民
星球公民
文章: 55
註冊時間: 2002-01-15 13:03
聯繫:

[分享]據說是這樣啦.....

文章 kenlai »

OOHOO 寫:就常理來講, db_caching應該比db_chching來的快, 可是上次很多人測的結果都是file_caching比較快一點, 原因我就不清楚了..
我曾經請教過指導教授這方面的問題(隨口問問關於聊天室的儲存資料方式),他是說資料量少的時候,是 flat-file 的方式較快;但資料量大的時候,就是 DB 較快了....而且當資料越來越多的時候更為明顯。

所以我想應該很多人上線的時候就可以看出端睨了。


供各位參考。;-)
1. 不要傳私人訊息問我問題(私人問題例外)
因為我功力沒那麼強,而且討論區比較能夠集思廣益 ;-)

2.善用搜尋功能及看公告及精華區,你可以更快找到答案,而且會多學到很多相關的東西
oO]-[Oo
南宮博士
南宮博士
文章: 512
註冊時間: 2001-11-11 18:09
來自: TAIWAN
聯繫:

文章 oO]-[Oo »

嗯.. 難怪, 因為那些暫存的templates, 不多不少, 的確是用file caching會比較快一點點..
差大概 0.00.....幾秒... ㄏㄏ.. 不管他, 用哪個都好, 至少選一個來用就對了
OOHOO said:
有事Mail給我, 不要P我, 因為根本沒辦法P.
IVAN
星球普通子民
星球普通子民
文章: 19
註冊時間: 2002-03-05 09:17
聯繫:

文章 IVAN »

做法:

一 . 針對"網頁"做Cache~

在你的 templates/subSilver 目錄下新建二個目錄

cache/
cache/admin/

目錄權限設為777

再把 phpBB2/contrib/template_file_cache.php這個檔案改名為template.php
放到includes目錄下取代原有的template.php就可以了~
我照做了,但不能夠進入控制台!何解呢? :x
頭像
台灣阿堂
竹貓好朋友
竹貓好朋友
文章: 307
註冊時間: 2002-03-26 20:42
來自: 台灣台中
聯繫:

文章 台灣阿堂 »

這個是加袂網頁的存取~
產生的快取檔會放在上述的目錄裡~
只要有人瀏覽你的網頁,就會先去快取目錄
將網頁送到畫面,減少對資料庫的查詢
所以可以加快網頁出來的速度呦~
頭像
jondy
星球普通子民
星球普通子民
文章: 4
註冊時間: 2002-04-03 23:52

文章 jondy »

Good idea for Cache ! :-)
最後由 jondy 於 2002-04-12 00:29 編輯,總共編輯了 1 次。
peigs
星球普通子民
星球普通子民
文章: 11
註冊時間: 2002-03-14 09:08

文章 peigs »

我也進不去控制台說
這是為什麼啊
我是用file cache
peigs
星球普通子民
星球普通子民
文章: 11
註冊時間: 2002-03-14 09:08

文章 peigs »

我可以進去了
原來我剛剛忘了把cache/admin也設為777啦\r
呵呵喝
akimasa
竹貓好朋友
竹貓好朋友
文章: 173
註冊時間: 2002-02-02 15:51
來自: 台灣台北
聯繫:

文章 akimasa »

那這快取是如何判斷資料是否更新過?
只要使用者按reload就會重新產生新的快取檔案嗎?
進藤光
星球公民
星球公民
文章: 291
註冊時間: 2005-03-16 18:48
來自: BNW 時尚資訊網
聯繫:

文章 進藤光 »

oO]-[Oo 寫:嗯.. 糾正一下..
file_caching 和 db_caching 差別只在暫存的方法不同, 一個將資料寫進file一個寫進db, 相對的在讀取時, 也是從file或db讀進. template暫存的好處是, 在線上人數多的時候, 會直接利用暫存的資料來產生output以減少重複讀取相同的資料. 就常理來講, db_caching應該比db_chching來的快, 可是上次很多人測的結果都是file_caching比較快一點, 原因我就不清楚了.. 但是file_caching的缺點是, cache/底下要chmod777, 也就是門戶洞開了.. 這部分的安全性問題我也不大清楚...
這篇文章已經超級老舊了,不過倒是還能用在最新的 phpBB 2.0.21 就是了~
我覺得透過 SQL 快取只會更慢不會更快!特別是你把 SQL Server 安裝在另外一部主機,只透過網路連線的話... 如果都是裝在 localhost 還有可能因為現在的 Core Duo 夠快、記憶體夠大、硬碟也夠快,才有可能會更快!

要不然 file_cache 應該會更快,我安裝之後確實是 file_cache 快許多... 但還是沒有 100% 滿意...

原來 Cache 只不過是把風格的 .tpl 檔轉成編譯好的內容,風格幾乎不會改來改去了,可以轉成新的 .php 也不見得更快,除非縮減 .php 裡面的指令,都只要丟 HTML 出去,要不然 php 還是會很忙...
※架設伺服器主機:Mac mini G4-1.5GHz, 1GB RAM 三台
※架設主機作業系統:Mac OS X Server 10.4.2 Tiger
※我的上網方式:固定制 ADSL 4M/1M、3 IP
※安裝的伺服器:Apache 1.3.33 + php 4.3.11 + MySQL 5.0.19-max
※我的 phpBB2 版本:phpBB 2.0.21 UTF-8 版
※我的會議室網址: http://bbs.bnw.com.tw/conference/
chiouss
竹貓忠實會員
竹貓忠實會員
文章: 1741
註冊時間: 2002-11-29 18:19

文章 chiouss »

進藤光 寫:這篇文章已經超級老舊了,不過倒是還能用在最新的 phpBB 2.0.21 就是了~
我覺得透過 SQL 快取只會更慢不會更快!特別是你把 SQL Server 安裝在另外一部主機,只透過網路連線的話... 如果都是裝在 localhost 還有可能因為現在的 Core Duo 夠快、記憶體夠大、硬碟也夠快,才有可能會更快!

要不然 file_cache 應該會更快,我安裝之後確實是 file_cache 快許多... 但還是沒有 100% 滿意...

原來 Cache 只不過是把風格的 .tpl 檔轉成編譯好的內容,風格幾乎不會改來改去了,可以轉成新的 .php 也不見得更快,除非縮減 .php 裡面的指令,都只要丟 HTML 出去,要不然 php 還是會很忙...
這個問題其實我之前也和 ckmarkhsu 討論過,大概猜測如下 :Q

用 cache 的方法通常是把 tpl 和 php 產生出來的 html 拿來當 cache (通常是這樣,像 Smarty),目的在節省 tpl 沒有更動的情況下每次去 parse 你 template 的時間。寫在檔案的話就像是去開一般 static 的 html page 一樣,寫在 db 的話 db 本身會對 query 結果做 cache,在一般情況下這會比讀 html 快,因為 db 的 cache 通常就在 memory 裡面了。但是在 query 還沒 cache 起來之前,query 的時間會比直接去讀 static html 還要慢,因為 db server 本身需要去 parse 你的 query 然後再去抓出對應的資料,這中間的時間會花費比較多。

以 Gallery 為例,G1 就是用檔案系統,G2 改用 db,官方也是說在人多的情況下 G2 會比較快,因為對檔案的 r/w 一般 http server 是沒有 cache 的 (這工作是由另外的 proxy/cache server 執行)。
進藤光
星球公民
星球公民
文章: 291
註冊時間: 2005-03-16 18:48
來自: BNW 時尚資訊網
聯繫:

文章 進藤光 »

chiouss 兄說的我懂... 以前你也有提到 Smarty,不過我覺得 Smarty 太複雜,這樣真的會快得起來嗎??

我把我的意思重新整理一下:

當你把 SQL Server 安裝在另外一部主機,只透過 100M 區域網路連線的話... 當網路封包傳送的資料量越大的時候,SQL 只會變得更慢,只有減少 SQL 資料在兩台 Server 端上的資料傳輸量,才有可能會更快。

因此要是把更多的 Cache 資料放在 SQL 上,透過 SQL 抓取大量的快取資料,我認為只會更慢不會更快!也就是會變成 PHP 在等 SQL 把大量資料透過網路傳送過來,導致網頁產生速度變慢!

除非你把 phpBB 與 MySQL 通通架設在一台 Server 上,加大 DDRAM 到 2GB 甚至 4GB 以上,並且使用雙核心或是雙 CPU,一顆跑 php,另一顆跑 MySQL (當然囉~這不是絕對的,而是看誰不忙誰就會幫忙跑) 直接從 RAM Cache 抓取資料,這才可能會變快!

至於 File Cache 套用在 WinXP 與 Linux 都沒錯,不過套用在我這裡可就不一定成立囉~哈哈~~只要開啟過的檔案,File System 都會自動快取,反正整個 phpBB 檔案也不會整天改來改去的,因此到最後這些硬碟上的檔案,其實都被 Cache 到 SDRAM 裡面,效果與 MySQL 使用的 RAM Cache 一樣。 :mrgreen:

再不然 WinXP 與 Linux 也可以裝一個 RAM Disk,或是 RAM Disk Card (Gigabyte 有),把 phpBB 整個檔案放在 RAM 裡面,這樣就夠快了吧~XD :mrgreen:
※架設伺服器主機:Mac mini G4-1.5GHz, 1GB RAM 三台
※架設主機作業系統:Mac OS X Server 10.4.2 Tiger
※我的上網方式:固定制 ADSL 4M/1M、3 IP
※安裝的伺服器:Apache 1.3.33 + php 4.3.11 + MySQL 5.0.19-max
※我的 phpBB2 版本:phpBB 2.0.21 UTF-8 版
※我的會議室網址: http://bbs.bnw.com.tw/conference/
chiouss
竹貓忠實會員
竹貓忠實會員
文章: 1741
註冊時間: 2002-11-29 18:19

文章 chiouss »

進藤光 寫:chiouss 兄說的我懂... 以前你也有提到 Smarty,不過我覺得 Smarty 太複雜,這樣真的會快得起來嗎??
用 template 本身就已經會慢了,哪有可能會快多少? XD
它頂多只是比那些不會 cache 的 template 快而已...
當你把 SQL Server 安裝在另外一部主機,只透過 100M 區域網路連線的話... 當網路封包傳送的資料量越大的時候,SQL 只會變得更慢,只有減少 SQL 資料在兩台 Server 端上的資料傳輸量,才有可能會更快。

因此要是把更多的 Cache 資料放在 SQL 上,透過 SQL 抓取大量的快取資料,我認為只會更慢不會更快!也就是會變成 PHP 在等 SQL 把大量資料透過網路傳送過來,導致網頁產生速度變慢!
這樣做會有一些安全上的問題,因為 php 和 db 之間的連線是完全沒有保護的,會不會被 sniff 或是 MIMTA 都很難說 :Q

當然也不是沒有辦法克服啦!MySQL 4.1+ 有支援使用 SSL 連線 (但是 PHP func. 好像還沒做進去),4.0 之前也可以用 SSH tunnel 去避免安全上的問題,但是加密會讓資料傳輸變慢這是一定的道理,要 tweak performance 的話這實在不是個好方法...
除非你把 phpBB 與 MySQL 通通架設在一台 Server 上,加大 DDRAM 到 2GB 甚至 4GB 以上,並且使用雙核心或是雙 CPU,一顆跑 php,另一顆跑 MySQL (當然囉~這不是絕對的,而是看誰不忙誰就會幫忙跑) 直接從 RAM Cache 抓取資料,這才可能會變快!
資源有限的情況下當然是分散開來比較有利,但是如果可以選我應該會讓 web 要用的 db 放在同一台上面,同一台機器 I/O 再怎樣慢也應該比再透過個網路 I/O 來得快。
至於 File Cache 套用在 WinXP 與 Linux 都沒錯,不過套用在我這裡可就不一定成立囉~哈哈~~只要開啟過的檔案,File System 都會自動快取,反正整個 phpBB 檔案也不會整天改來改去的,因此到最後這些硬碟上的檔案,其實都被 Cache 到 SDRAM 裡面,效果與 MySQL 使用的 RAM Cache 一樣。 :mrgreen:
這的確是 OS 本身的差異...
再不然 WinXP 與 Linux 也可以裝一個 RAM Disk,或是 RAM Disk Card (Gigabyte 有),把 phpBB 整個檔案放在 RAM 裡面,這樣就夠快了吧~XD :mrgreen:
這也要實驗才知道,單純的 RAM Disk 分配的大小也要兼顧到 server 本身的 RAM 維持,畢竟這台 server 不是只跑 httpd 而已,要留多少 resource 給其他程式去用也要考慮。甚至其他的使用者 (如果那是台 public 的 server 的話就要考慮)

另外,任何一種方法都有 tweaking 的技巧可以讓他避免掉某些缺點 (像是你說的 i-RAM) 之類的,file cache 或是 db cache 都有,所以沒什麼好爭的,畢竟我們知識都離專家有一段距離 :Q
進藤光
星球公民
星球公民
文章: 291
註冊時間: 2005-03-16 18:48
來自: BNW 時尚資訊網
聯繫:

文章 進藤光 »

chiouss 寫:這樣做會有一些安全上的問題,因為 php 和 db 之間的連線是完全沒有保護的,會不會被 sniff 或是 MIMTA 都很難說 :Q
哈哈~~應該還不至於被 sniffer 給偷走... :mrgreen:
我想我的防火牆雖然不怎麼頂級,但是想要從 WAN 混進來可不是件簡單的事!再加上我的 Mac 本身就有內建高級的 Firewall,遠比 WinXP 好太多,形成雙重防火牆!

再加上 Web Server 與 SQL Server 之間並不是走普通 192.168.x.x 網段,而是內部第二網路,這個與防火牆並沒有連接,想要 Sniffer 到連不過去的網路,不太可能吧~ XD :mrgreen:

如果鄰居想要 sniffer 我的無線網路,也會到不了我真正的 LAN,至於前往 DMZ 應該也只有 80, 110, 25 這幾個 port,因此我不用擔心這個問題。

倒是把 Web Server 與 SQL Server 架在一起,我之前會有一個問題,那就是 Primary Server 掛掉,Secondary Server 接手之後,因為 SQL 不同裡面備份的資料也不同,即便你一天照三餐備份 3 次,也不可能完全一樣,除非你的討論區真的很冷清... :mrgreen: :mrgreen:

但是把 SQL 獨立之後就不同了,Primary Server 與 Secondary Server 都是抓相同的 SQL 資料,user 感覺不到已經掛掉其中一台 Web Server。當然囉~為了避免 SQL 也掛掉,也只好架成 Primary Server 與 Secondary Server 方式,但是資料又會面臨同步的問題...

至於 RAM Disk,建議至少 2GB 甚至 4GB 以上才能這樣玩。
我買了一張 CF card to IDE 的轉接卡,可是大多數 CF 卡的讀取速度比硬碟還慢,要想用這種方式來提高網站速度可能會效果不佳...
※架設伺服器主機:Mac mini G4-1.5GHz, 1GB RAM 三台
※架設主機作業系統:Mac OS X Server 10.4.2 Tiger
※我的上網方式:固定制 ADSL 4M/1M、3 IP
※安裝的伺服器:Apache 1.3.33 + php 4.3.11 + MySQL 5.0.19-max
※我的 phpBB2 版本:phpBB 2.0.21 UTF-8 版
※我的會議室網址: http://bbs.bnw.com.tw/conference/
主題已鎖定

回到「phpBB 2 安裝與使用」