Cakephp 在组件中使用缓存

Posted

技术标签:

【中文标题】Cakephp 在组件中使用缓存【英文标题】:Cakephp using Cache in Component 【发布时间】:2014-06-10 20:24:47 【问题描述】:

我正在使用 Cakephp 2.3,我想在我的几个控制器中执行很多常见的计算。所以我在我的 appcontroller 中编写了这些函数并缓存了一些数据.. 但是会发生什么是我的 appController 会变胖.. 所以我创建了一些组件来执行这些操作.. 我不知道我的方法是否正确..?请建议..

    我想在我的组件中使用缓存,我尝试了这段代码。但什么都没有缓存..

        public $helpers =array('Cache');
    

     $result = Cache::read('fm_data', 'long');
       if (!$result) 
       $result =
 $this->TFmStation->find('all',array('contain'=>array('TLocation',
            'TLanguage','TMediaOrg','TContactPerson',
                    'TAddress','TFmProgram'=>array('TTargetGroup'))));
                       Cache::write('fm_data', $result, 'long');
                
 return $result;
    请帮我了解如何在组件中使用缓存 在应用程序中更常见的功能的情况下如何有效地使用 cakephp 中的组件类.. 当我在 appController 中编写这些功能时,它会根据内存加载所有功能,如何有效地使用组件

【问题讨论】:

如果您只想为一个页面生命周期(一个请求和响应)保存数据,我建议您实现一个模型(例如Calculations),其中包含您用于这些计算的业务逻辑并且您有访问每个控制器。 如果您想通过多个请求将计算数据与客户端分开保存,可以将计算数据保存在会话或 cookie 中。 最后,计算数据可以通过浏览器中的javascript保存在客户端。如果您需要这些计算数据集在服务器端进行计算,您可以通过 ajax 发送它们。注意:不要在客户端存储敏感数据(例如密码)。 @SimontheSourcecoderer 非常好的建议。帮我很多。 @SimontheSourcecoderer 问题是,我有 7 个不经常更改的表数据,所以我认为最好的方法是在启动时加载这些数据。我将它保存在 appcontroller 中并缓存了这些数据。但我需要添加大约 20 个函数来操作这些数组并获得结果。在 appcontroller 中写 20 个函数不是很好,它变得很胖。这就是我对这些函数进行分类并创建 3 个组件的原因,因此无论何时需要,我都可以加载这些组件并调用这些函数。但我无法访问组件中的缓存数据?反正?如何创建自定义类和函数? 【参考方案1】:

模型TFmStation 是具有上述逻辑的最佳位置。组件用于通用功能,如 UploadComponent、EmailComponent、RecaptchaComponent 等。如果您的逻辑部分与模型有关,那么它应该进入该模型。

可以从 AppController.php 以与调用组件类似的方式调用模型。

【讨论】:

以上是关于Cakephp 在组件中使用缓存的主要内容,如果未能解决你的问题,请参考以下文章

在模型中使用 cakephp 组件

使用 CakePHP 'Acl' 组件

如何在 CakePhp 组件中调用回调?

在 CakePHP 中使用控制器之外的组件

Cakephp 在帮助器中调用组件方法

CakePHP 3组件在一个单元格中