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 在组件中使用缓存的主要内容,如果未能解决你的问题,请参考以下文章