StevenGuo 发表于 2008-11-28 09:01:02

关于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是相同的,缓存就是一样的。反之则不同。
请大家多多指教。谢谢!

StevenGuo 发表于 2008-11-28 09:23:37

刚刚做两个一个测试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\ 目录下确实有缓存文件。
请问各位大侠这到底是什么原因????

kissmumu 发表于 2008-11-28 12:28:28

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.

kissmumu 发表于 2008-11-28 12:29:06

有中文的啊 :L

警告: 由于CI存储缓存文件的方式,只有通过 view 文件的输出才能被缓存。

StevenGuo 发表于 2008-11-28 12:58:03

回复 4楼 的帖子

呵呵,我也是才看到这条Warning 。谢谢,提醒!:lol

sam 发表于 2008-11-28 13:38:14

好像只能缓存view文件

漫无目的 发表于 2009-2-22 03:06:54

只要在action里加缓存就行了吧
不管你是怎么传参的
页: [1]
查看完整版本: 关于CI缓存的疑问。