CakePHP提供有关用户代理的缓存控制器操作

时间:2012-12-22 10:15:58

标签: php cakephp caching cakephp-2.0

我可以使用CacheHelper在我的CakePHP 2应用程序中缓存控制器操作。这个助手让我选择缓存持续时间,页面的“nocache”部分等。

但是是否可以为访问者的用户代理提供缓存操作。例如,我计划向爬虫/机器人显示缓存页面,但如果访问者不是机器人,则构建页面。我不想选择页面的哪些部分将被缓存/缓存。整个页面。

1 个答案:

答案 0 :(得分:3)

我认为这对您有用:

假设您使用的是最新版本的cakephp,请将此添加到您的core.php中 下面是您配置Cache.check

的行

示例和代码:

/**
 * Enable cache checking.
 *
 * If set to true, for view caching you must still use the controller
 * public $cacheAction inside your controllers to define caching settings.
 * You can either set it controller-wide by setting public $cacheAction = true,
 * or in each action using $this->cacheAction = true.
 *
 */
    // Configure::write('Cache.check', true);
    $UAs = array(
        'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.101 Safari/537.11'
    );

    if (in_array(env('HTTP_USER_AGENT'), $UAs)) {
        define('USE_CACHE', '1 hour');
        Configure::write('Cache.check', true);
    } else {
        define('USE_CACHE', false);
        Configure::write('Cache.check', false);
    }

$ UAs是指机器人的用户代理

这是一个可用于测试代码的示例控制器:

<?php
App::uses('AppController', 'Controller');

class HomeController extends AppController {

    public $name = 'Home';

    public $uses = array();

    public $helpers = array(
        'Cache'
    );

    public $cacheAction = USE_CACHE;

    public function index() {}

}