關(guān)于smarty緩存的設置問(wèn)題?
來(lái)源:昆明多彩網(wǎng)絡(luò )公司 日期:2011-03-05 閱讀: 發(fā)表評論
smarty的緩存開(kāi)關(guān)變量是$caching,默認是關(guān)閉狀態(tài),值為false,一般是在調試狀態(tài)下就關(guān)閉,但是真正投入到生產(chǎn)環(huán)境的時(shí)候是需要開(kāi)啟緩存的,能夠極大提升網(wǎng)站的打開(kāi)速度。
但是smarty的緩存也是一把雙刃劍,在緩存前臺頁(yè)面的同時(shí),如果后臺數據更新的非常頻繁,如果緩存設置不當的話(huà),前臺將無(wú)法及時(shí)更新。
這里介紹另外一個(gè)smarty的變量:$compile_check(編譯檢查變量),如果開(kāi)啟此變量,smarty會(huì )檢查模板文件是否改動(dòng)過(guò),如果模板改動(dòng)過(guò)的話(huà)smarty就會(huì )重新生成模板編譯文件,但是否會(huì )生成緩存文件需要看兩個(gè)方面,第一是smarty是否開(kāi)啟了緩存,第二是對應的緩存文件是否存在著(zhù)。
下面我們列舉幾個(gè)可能性:
1、$compile_check開(kāi)啟,$caching開(kāi)啟,同時(shí)設置$caching失效時(shí)間為3600秒(即一小時(shí))
a.如果只是數據庫更新了內容,模板無(wú)改動(dòng),不會(huì )更新模板編譯文件(就算刪除模板編譯也不會(huì )重新生成,模板編譯步驟直接跳過(guò)),在這3600中,前臺頁(yè)面無(wú)法體現出數據更新后的效果;
b.如果更新了模板文件,smarty只會(huì )重新生成模板的編譯文件,但是緩存依然不會(huì )重新生成(除非將之前生成的緩存文件刪除);
c.如果模板和數據庫都有更新,效果同前一個(gè)效果,只是重新生成模板的編譯文件,前臺效果需要3600秒后才會(huì )更新(除非將之前生成的緩存文件刪除)。
2、$compile_check關(guān)閉,caching開(kāi)啟,同時(shí)設置$caching失效時(shí)間為3600秒(即一小時(shí))
a.如果只是數據庫更新了內容,模板無(wú)改動(dòng),在這3600中,前臺頁(yè)面無(wú)法體現出數據更新后的效果;
b.如果更新了模板文件,smarty不會(huì )生成模板的編譯文件,緩存不會(huì )重新生成(除非將之前生成的緩存文件刪除);
c.如果模板和數據庫都有更新,模板和緩存都不會(huì )重新生成,刪除之前生成的緩存后可以重新生成緩存,但是模板編譯文件依舊不會(huì )生成。
綜合上述條件,我們在網(wǎng)站制作中,可以采用這樣的策略:
第一種策略:如果為了達到更大的性能,可以將$compile_check關(guān)閉,caching開(kāi)啟;
第二種策略:如果只是想僅達到mvp代碼和模板分離的效果,可以將$compile_check開(kāi)啟,Caching關(guān)閉即可。
發(fā)表評論評論列表(有 條評論)