【问题标题】:Full view caching for dynamic routes in cakephpcakephp中动态路由的全视图缓存
【发布时间】:2009-10-03 17:31:13
【问题描述】:

我对 cakephp 中的完整 view caching 有一些问题。

我要缓存的url是/posts/badge/23/size:180x150我已经能够通过将$cacheAction = "1 hour";添加到控制器来成功缓存视图。

由于我不想缓存控制器中的所有方法(只是特定方法),我尝试使用数组语法来匹配 url /posts/badge/23/size:180x150 其中 23 是帖子 ID,大小是命名参数(有 2 大小的变化)。

所以我的问题是什么是合适的(如果有的话)匹配 cacheAction 缓存所有帖子/徽章/* 以下是我的一些示例 试过了:

var $cacheAction = array(
        'badge/*' => '+1 hour',
        'posts/badge/23/size:180x150' => '1 hour',
        'badge/23/size:180x150' => '1 hour',
        'posts/badge/:id/:size' => '1 hour',
        'badge/:id/:size' => '1 hour',
);

这些似乎都不匹配(或者至少不缓存某些 原因)。我确实需要缓存帖子/徽章//size: 并捕获每个 正在传递的参数。

同样,如果我设置 $cacheAction = "1 hour";那么缓存文件是 创建(文件 tmp/cache/views/posts_badge_23_size_180x150.php 是 创建)

有没有人能够为动态 url 创建缓存?

【问题讨论】:

  • 您使用的是什么版本的 CakePHP?我看到您链接到 1.1 版的一篇文章,但最新版本是 1.2.5 稳定版,与 1.1 有很大不同。
  • 我使用的是最新的 1.2.5 该链接只是缓存助手最完整的文档。好像没有复制到新书上。

标签: cakephp caching


【解决方案1】:

CakePHP 的 CacheHelper 目前不支持路由。 CacheHelper::cache(),它负责解析和检查 $cacheAction 设置不使用任何路由器功能,它只是做一些字符串检查。

您可以使用自己的CacheHelper,只需适当修改cache()方法并将文件cache.php放在app/views/helpers中即可。

这张票与您的问题类似,那里发布的解决方案可能会对您有所帮助:trac.cakephp.org/ticket/6192

【讨论】:

    【解决方案2】:

    在这个页面上:Caching in the Controller 上面写着:

    如果有的话,记得在 $cacheAction 中使用你的路由。

    因此,请尝试创建一些与您的 URL 结构匹配的路由并将它们用作 cacheAction 键。如果有效,请报告。

    【讨论】:

    • 这里没有做特殊的路由。它遵循默认路线。我很确定他们在这里谈论的是如果您更改了默认路由(例如重命名视图以显示),那么您会希望 cacheAction 与您的 route.php 中的路由匹配
    猜你喜欢
    • 2011-08-07
    • 1970-01-01
    • 2016-05-22
    • 1970-01-01
    • 1970-01-01
    • 2012-07-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多