这两天研究在PHP代码中如何ZendFramework的Zend_Cache,在研究对控制器页面进行缓存时,可以使用
Zend_Cache_Frontend_Page 。于是依据书上,依葫芦画瓢,根据手册上的例子,进行操作,可是始终没有缓存结果,奇怪了,什么原因呢?
跟踪Zend_Cache_Frontend_Page的源代码,发现缓存采用ob_start(callback)来实现的,我就想,会不会是我使用的Smarty原因(我在使用的ZF框架中,集成了Smarty,测试的时候,我没有取消),去掉Smarty,重新测试,果然缓存目录里有文件了(原来因为在Smarty中也使用了ob_start),这下正确了吧,于是再测试,新问题出现了,缓存文件是有了,可是里面没有存储任何内容。实在不太明白,于是翻查手册,在Google上搜寻,花了几个小都没有发现解决方案,头都大了,都快放弃了,偶然间在国外的一个网站看到一句话“disableOutputBuffering must be true to work Zend_Cache_Frontend_Page.”,就是说要使用Zend_Cache_Frontend_Page,必须把disableOutputBuffering设为True.disableOutputBuffering是前端控制器的一个变量,控制着前端输出缓冲区,只要在创建前端控制器后,通过$front->setParam('disableOutputBuffering', true); 就可以了。设置后,果然正确了!ZF的手册上关于这一点,竟然没有写明白。(或者是我没有找到:-))