内联过滤器Inline Filters

本文介绍了如何使用内联过滤器(Inline Filters)来优化关键API端点的性能。通过一个匿名函数,在PHP 5.3+环境中,当请求的URL不等于'posts/recent.json'时,内联过滤器会加载并返回最近的Post数据。通过设置过滤器的优先级为9,确保其优先执行,减少其他逻辑的影响。然而,尽管内联过滤器强大,但过度使用可能增加应用的维护难度。通常,控制器和组件是更适合处理请求的工具。
摘要由CSDN通过智能技术生成
你的最后一个例子将使用一个匿名函数(只可在PHP 5.3 +)为JSON格式的文章列表,我们鼓励您使用控制器和JsonView类,但让我们想象你需要节省几毫秒关键API端点:
$postsList = function($event) {
    if ($event->data['request']->url !== 'posts/recent.json') {
        return;
    }
    App::uses('ClassRegistry', 'Utility');
    $postModel = ClassRegistry::init('Post');
    $event->data['response']->body(json_encode($postModel->find('recent')));
    $event->stopPropagation();
    return $event->data['response'];
};

Configure::write('Dispatcher.filters', array(
    'AssetDispatcher',
    'CacheDispatcher',
    'recent-posts' => array(
        'callable' => $postsList,
        'priority' => 9,
        'on'=> 'before'
    )
));
在前面的例子中,我们选择的优先级9为我们的过滤器,所以跳过任何其他逻辑放置在定制或等核心过滤器CakePHP内部路由系统。虽然不是必需的,它显示了如何使你的重要的代码运行,以防你需要削减一些请求尽可能多的脂肪。
由于显而易见的原因这有可能让你的应用程序很难维护。过滤器是一个极其强大的工具,当使用得当,为每个URL添加响应处理程序在你的应用程序并不是一个好使用。但是如果你有一个有效的理由这样做,然后你有一个干净的解决方案。记住,不是所有的需要一个过滤器,控制器和组件通常是一个更准确的选择任何请求处理代码添加到应用程序。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值