`
jqj031
  • 浏览: 72893 次
  • 性别: Icon_minigender_2
  • 来自: 苏州
最近访客 更多访客>>
社区版块
存档分类
最新评论

CakePHP View Cache的一个问题

阅读更多
最近一直在使用CakePHP,感觉挺不错。不过这几天在使用View Cache的时候却发现一个问题:URL带查询参数时总是不命中缓存。查看代码后发现问题所在,原来在View中使用CacheHelper类来处理缓存,每次保存缓存时采用的文件路径是:
    $cache = convertSlash($this->here); //这里采用$this->here,$this->here是app/config/routes.php里配置的路径,不带查询参数的。
    $cache = $cache . '.php';
   return cache('views' . DS . $cache, $file, $timestamp); //$file和之后的参数不用管。
   这段代码节选自CacheHelper中的cache函数

而在cake/bootstrap.php中,获取缓存文件路径的计算方法是:
    $uri = setUri(); //这里采用的是setUri(),与上面计算缓存文件路径的方法是不一样的
    $filename=CACHE . 'views' . DS . convertSlash($uri) . '.php';
    这段代码节选自cake/bootstrap.php

为了让Cake支持带查询参数url的缓存,把CacheHelper中cache函数计算缓存文件路径的代码作如下修改:
    $cache = convertSlash($this->here);
    =>
    $cache = str_replace("?","_",convertSlash(setUri()));
把cake/bootstrap.php计算缓存文件路径的代码作如下修改:
    $filename=CACHE . 'views' . DS . convertSlash($uri) . '.php';
    =>
    $filename=CACHE . 'views' . DS . str_replace("?","_",convertSlash($uri)) . '.php';

View Cache其他设置方法不变,可以参考http://www.cnblogs.com/confach/articles/577365.html
分享到:
评论

相关推荐

    CakePHP 3.5 开发手册文档 CakePHP Cookbook Documentation Release 3.5/共900页 PDF

    **CakePHP 3.5** 是该框架的一个重要版本,包含了诸多改进和新特性。本手册将重点介绍 **CakePHP 3.5** 的主要组成部分及其功能。 #### 二、框架架构与工作流程 - **Conventions Over Configuration**: CakePHP ...

    CakePHP视频教程(AVI格式)

    **蛋糕PHP(CakePHP)** 是一个基于**MVC(Model-View-Controller)**设计模式的开源PHP框架,用于构建高效、可扩展且易于维护的Web应用。它以其简单的约定优于配置的理念,以及丰富的社区支持,成为了PHP开发者的...

    cakephp-cakephp-2.0.0-dev-0-gbe96338

    "cakephp-cakephp-2.0.0-dev-0-gbe96338" 是CakePHP框架的一个特定版本,它代表了该框架在2.0大版本中的一个开发分支。此版本在官方网站上可获取,确保了其官方支持和更新,为开发者提供了稳定且安全的开发环境。 ...

    CakePHP 1.3 Application Development Cookbook

    - 如何使用CakePHP构建一个简单的博客系统。 - 实现用户注册与登录功能。 - 开发一个多语言支持的电子商务平台。 #### 六、总结 《CakePHP 1.3 Application Development Cookbook》是一本不可多得的好书,它不仅...

    cakephp1.3.11

    CakePHP,一个深受开发者喜爱的PHP框架,自其诞生以来就以其简洁、高效和强大的特性赢得了广泛的赞誉。这里的焦点是它的1.3.11版本,被誉为“目前最稳定版”。让我们深入探讨这个版本中的关键知识点,以及它如何在...

    cakephp中文手册

    CakePHP是一个基于Model-View-Controller(MVC)架构的开源PHP框架,旨在使Web开发更加简单、快速。这份手册深入浅出地介绍了如何使用CakePHP进行开发,以下将对其中的关键知识点进行详细阐述。 1. **安装与配置**...

    cakephp手册(doc打印版).rar

    CakePHP是一个基于MVC(Model-View-Controller)设计模式的开源PHP框架,它旨在简化开发过程,提高代码的可读性和可维护性。这份文档包含了关于 CakePHP 的所有核心概念、组件、工具和最佳实践,是学习和参考的重要...

    CakePHP-1.2-Cheatsheet

    2. **create([data])**: 创建一个用于保存的新记录,可选传入初始数据。 3. **delete([id,cascade])**: 删除指定ID的记录,可选参数cascade用于控制是否级联删除关联的数据。 4. **deleteAll(conditions,[cascade,...

    Cakephp 执行主要流程

    CakePHP的执行主要流程是一个涉及多个步骤的过程,涵盖了从启动应用到处理请求、返回响应的整个周期。 CakePHP加载基本文件的步骤从cake/basics.php开始,该文件定义了一些基础的方法和时间常量,紧接着记录了脚本...

    国外主流PHP框架对比评测.pdf

    标题中的“国外主流PHP框架对比评测”指的是对...而Zend Framework则是一个全面的解决方案,尤其在库支持和灵活性方面表现出色,尽管需要较高的学习成本,但潜力巨大。开发者应根据项目需求和团队能力选择合适的框架。

    最流行的PHP MVC框架.docx

    4. **CakePHP** - 是一个基于MVC模式的开源PHP框架,其设计理念是简化开发,提高开发效率。CakePHP提供了清晰的API和约定优于配置的规则,使得开发过程更加顺畅。 除了框架,提高PHP运行速度的方法主要包括: 1. *...

    Cake Syrup-开源

    `CakePHP` 是一个基于 Model-View-Controller (MVC) 设计模式的开源 PHP 框架,它提供了丰富的功能,如自动化路由、数据验证、安全特性以及简单的 ORM(对象关系映射),使开发者能够快速构建可维护、高性能的 Web ...

    主流PHP框架的优缺点对比分析

    3. Cache功能强大,支持多种缓存机制,数据库操作功能多样,支持多种驱动。 然而,Zend Framework也存在挑战: 1. View层功能相对较弱,难以实现复杂前端控制。 2. 缺乏自动化脚本,初始设置较为繁琐,入门难度较...

Global site tag (gtag.js) - Google Analytics