关于CI缓存的疑问。
我对CI的缓存策略理解的不是很准确,我把我的想法说出来,让大家给评评。我的理解就是CI是针对URL进行缓存的。当我们需要开启页面缓存的时候。需要在controller的function中的任何位置添加$this->output->cache(n);
例如:
http://www.example.com/index.php/myclass/myfunction
如果我们在类Myclass的myfunction方法中添加了$this->output->cache(n);后就可以对该页面进行缓存。
但是我的问题来了。如果myfuntion 这个方法有参数的话如何缓存呢?
例如:http://www.example.com/index.php/myclass/myfunction/parameterA/parameterB
由于参数都是变化的,是无论什么参数都缓存呢,还是只要参数不同就进行不同的缓存么?是不是最终得这样的结论。只要URL是相同的,缓存就是一样的。反之则不同。
请大家多多指教。谢谢! 刚刚做两个一个测试CI的缓存功能的Case,更是奇怪了。
class Test extends Controller {
function Test()
{
parent::Controller();
}
function index()
{
// TODO
}
function testcache($p1=null,$p2=null){
echo 'Test for Caching:'.$p1.' '.$p2;
$this->output->cache(1);
}
}
通过浏览器访问: http://localhost/test/testcache/1/1
页面第一次输出结果:Test for Caching:1 1
呵呵,在浏览器点刷新页面,什么都不显示了。过了1分多钟再点刷新页面跟第一次输出的结果一样。然后再点刷新页面,还是什么都没有了。
太郁闷啊,这...这...这好像什么都没有缓存啊。然后我到我的 ...\system\cache\ 目录下确实有缓存文件。
请问各位大侠这到底是什么原因???? Warning: Because of the way CodeIgniter stores content for output, caching will only work if you are generating display for your controller with a view. 有中文的啊 :L
警告: 由于CI存储缓存文件的方式,只有通过 view 文件的输出才能被缓存。
回复 4楼 的帖子
呵呵,我也是才看到这条Warning 。谢谢,提醒!:lol 好像只能缓存view文件 只要在action里加缓存就行了吧不管你是怎么传参的
页:
[1]