在yii中缓存商品网站

时间:2014-12-25 16:36:22

标签: php caching yii

但我是缓存技术的新手。阅读docs(及以下)和一些examples后,我仍然不知道如何使用它。

我需要为我们开发的CMS / CRM网站应用缓存。应用程序/网站是网上商店和客户订单处理的混合,如何优化?哪些缓存组件最适合使用?

典型用户请求(缓存的主要问题)是assortment/goods grid page能够按类别,品牌,制造商,文章等过滤商品。

我的概念是,无法预测每个用户关于他将对给定数据施加何种选项/过滤器的行为。那么如何应用缓存呢?请纠正我,如果不是这样的话。用户可能已登录或未登录。

我在 main.php 中设置了组件中的cache设置:

'components'=>array(
    'cache'=>array(
        'class'=>'system.caching.COutputCache',
             'connectionID'=>'db',
             'autoCreateCacheTable'=>false,
             'cacheTableName'=>'cache',
            ),
 ...

我已将缓存设置添加到filters()的{​​{1}}中:

AssortmentController
  1. 除了这两段代码,我错过了哪些东西?我应该在视图文件或布局文件中的某处使用public function filters() { return array( 'accessControl', // perform access control for CRUD operations 'postOnly + delete', // we only allow deletion via POST request array( 'COutputCache', 'duration'=>1000, 'varyByParam'=>array('id'), ), ); } beginCache,如果是这样的话?
  2. 但是假设我还想使用CFileCache?应该/我可以在组件/缓存数组中定义它以及已定义的COutputCache吗?
  3. 在此docs未提及COutputCache,如何正确配置它?
  4. 但是仍然可能有更多的GET参数(除了endCache),例如分类[title] 分类[文章] 花色[groupCategory] ​​? 我也应该添加它们吗?

    id

  5. 任何更正,文档链接,指南都是值得注意的。

1 个答案:

答案 0 :(得分:1)

  1. 你不需要做任何额外的事情来开始缓存。从问题来看,看起来您正在使用DbCaching - 因此您应该能够在缓存表中查看记录。如果您只想缓存部分视图/输出,BeginCache / EndCache会很有用。
  2. 要为特定视图创建缓存,请添加以下内容:' COutputCache + view',(这意味着只会'查看'操作将被缓存)

    1. 您可以通过定义cacheId并在beginCache $ this-> beginCache(' name',array(' cacheID' =)中引用它来使用多个缓存>' filecache'))。

    2. 此处引用COutputCache(http://www.yiiframework.com/doc/api/1.1/COutputCache)。

    3. 只有varyByParams中的params才会被考虑用于缓存键。 / products / view / 1 / some / param AND / products / view / 1 / another / param将从同一缓存中提供

    4. 如果您有其他参数将添加/成为缓存的一部分,您需要添加它们。