中文字幕日韩一区二区_国产一区二区av_国产毛片av_久久久久国产一区_色婷婷电影_国产一区二区精品

smarty模板嵌套之include與fetch性能測試

方法一、使用在父模板中使用{include file="child.tpl"}直接將子模板包含進來

  優(yōu)點:

    1、有利于模塊的劃分和模板的重用。

    2、嵌套層次不多的時候,模板的結(jié)構(gòu)清晰,一眼過去就知道這個模板的內(nèi)容和結(jié)構(gòu)。

    3、只需要一個smarty實例就能做完所有的事情,減少系統(tǒng)資源的占用。

  不足:

    1、子模板中的變量可能與父模板的變量發(fā)生沖突

    2、多重嵌套的時候,變量名沖突的幾率增大,為所有的變量賦值的難度也加大。

    3、子模板的可操控性差,例如不能通過設置$cache_id, $compile_id,來得到多個結(jié)果。

    4、擴展性差。如果需要添加新的模板的時候需要修改模板,同時還需要修改程序。

方法二、通過$smarty->fetch()將子模板的數(shù)據(jù)當成變量assign到父模板中

  優(yōu)點:

    1、同樣有利于模塊的劃分,模板的重用

    2、模板的結(jié)構(gòu)同樣清晰

    3、子模板作為單獨的對象,可操控性強

    4、擴展性較好 

    5、每個子模板都是單獨的對象,不會出現(xiàn)變量名沖突的問題

  不足:

    1、如果子模板多的時候,需使用多個smarty實例來實現(xiàn),php代碼顯得臃腫

    2、占用較多的系統(tǒng)資源

    3、......

在那個的時候,出于對性能的要求,以及在沒有測試的情況下,想當然的認為include的性能一定就比fetch的性能要高,所有本人使用include這個方法,結(jié)果隨著系統(tǒng)功能的不斷的增加,感覺到越寫越復雜,這有很大一部分原因是設計的問題,但是模板間的嵌套也是問題之一,于是回過頭來考慮使用fetch這個方法。在重新做出決定之前對這個方法的性能做了測試,分別對單個模板的情況下和多個模板的情況進行測試

單個子模板測試:

有三個頁面test1.php,test2.php,test3.php。這三個頁面都輸出同樣的內(nèi)容。test1.php的模板沒有嵌套,test2.php的模板使用了一次include,test3.php使用fetch來實現(xiàn)子模板的嵌套。使用apache自帶的ab測試訪問各個頁面所需要的平均時間(單位:ms)

第一次測試時,使用ab -n 10000 對以上三個頁面進行10次,每次累計10000個訪問,結(jié)果如下。

ab -n 10000test1.phptest2.phptest3.phptest2/test1test3/test1
15.1785.4426.0971.0509849361.177481653
25.2535.9726.0271.1368741671.147344375
35.2236.0395.9871.1562320511.146276087
45.5335.9976.021.0838604741.08801735
55.5576.3086.031.1351448621.085117869
65.2486.0025.9981.143673781.142911585
75.2115.9336.0031.1385530611.151986183
85.3036.0316.0481.1372807841.140486517
95.2135.9236.0331.1361979671.15729906
總計47.71953.64754.2431.1242272471.136717031

第二次測試時,使用ab -n 100000 對以上三個頁面進行1次,每次累計100000個訪問,結(jié)果如下。

ab -n 100000test1.phptest2.phptest3.phptest2/test1test3/test1
15.7237.8748.551.3758518261.493971693

第一次測試的數(shù)據(jù)中,test1和test2的波動比較明顯,test3則比較穩(wěn)定,這個現(xiàn)象讓我感到十分的奇怪。從平均數(shù)據(jù)來看,測試結(jié)果還是在預期之內(nèi)的,test1的性能最好,test2比test1多耗費了12.42%的時間,test3比test1多耗費了13.67%的時間,但是test2和test3之間的差距并不大,僅僅只有1.3%左右的差別。

第二次測試的結(jié)果,三個頁面的執(zhí)行時間比為1:1.37:1.49,奇怪的是這次的波動更大。。。

多個子模板測試:

同樣有三個頁面test1.php,test2.php,test3.php。這三個頁面都輸出同樣的內(nèi)容。test1.php的模板沒有嵌套,test2.php的模板使用了10次include嵌入了10個子模板,test3.php使用10次fetch嵌入了10個子模板。使用apache自帶的ab測試訪問各個頁面所需要的平均時間(單位:ms)

因為時間的關系我只進行了一次ab -n 50000的測試,數(shù)據(jù)如下

ab -n 50000test1.phptest2.phptest3.phptest2/test1test3/test1
15.686.0546.0281.065845071.061267606

 

雖然測試的方法和工具可能不是很好,但是通過這些數(shù)據(jù)的對比,在實際的應用中到底要采用哪種方法,我想大家應該心里有底了吧。

不足和錯誤之處還望指出,希望大家能多討論多交流。

php技術smarty模板嵌套之include與fetch性能測試,轉(zhuǎn)載需保留來源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 国产精品久久九九 | 毛片99| 高清人人天天夜夜曰狠狠狠狠 | 亚洲国产69 | 在线免费观看毛片 | 日韩免费av网站 | 欧美日韩成人在线观看 | 国产免费a | 国产福利在线小视频 | 国产精品久久久久久久久久久久久 | 四虎永久免费黄色影片 | 在线观看涩涩视频 | 欧美精品在线免费观看 | 亚洲日本激情 | 欧美日韩国产在线 | 黄色毛片在线看 | 日韩在线中文字幕 | 国产精品久久久久aaaa九色 | av电影手机版 | 久久久久国产一区二区三区 | 日韩免费一区二区 | 三级成人片 | 成人精品一区 | 日韩视频一级 | 最新国产视频 | 国产网站在线播放 | 亚洲精品电影在线观看 | tube国产 | 成人性生交大片免费看r链接 | 日本三级线观看 视频 | 亚洲精品68久久久一区 | 久久69精品久久久久久久电影好 | 亚洲乱码一区二区三区在线观看 | 精品亚洲一区二区三区四区五区 | 国产精品一区二区三级 | 日日骚视频 | 日韩亚洲一区二区 | 99久久精品免费看国产四区 | www.天天操 | 亚洲人成人一区二区在线观看 | 精品亚洲一区二区三区 |