最近一直在使用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 3.5** 的主要组成部分及其功能。 #### 二、框架架构与工作流程 - **Conventions Over Configuration**: CakePHP ...
**蛋糕PHP(CakePHP)** 是一个基于**MVC(Model-View-Controller)**设计模式的开源PHP框架,用于构建高效、可扩展且易于维护的Web应用。它以其简单的约定优于配置的理念,以及丰富的社区支持,成为了PHP开发者的...
"cakephp-cakephp-2.0.0-dev-0-gbe96338" 是CakePHP框架的一个特定版本,它代表了该框架在2.0大版本中的一个开发分支。此版本在官方网站上可获取,确保了其官方支持和更新,为开发者提供了稳定且安全的开发环境。 ...
- 如何使用CakePHP构建一个简单的博客系统。 - 实现用户注册与登录功能。 - 开发一个多语言支持的电子商务平台。 #### 六、总结 《CakePHP 1.3 Application Development Cookbook》是一本不可多得的好书,它不仅...
CakePHP,一个深受开发者喜爱的PHP框架,自其诞生以来就以其简洁、高效和强大的特性赢得了广泛的赞誉。这里的焦点是它的1.3.11版本,被誉为“目前最稳定版”。让我们深入探讨这个版本中的关键知识点,以及它如何在...
CakePHP是一个基于Model-View-Controller(MVC)架构的开源PHP框架,旨在使Web开发更加简单、快速。这份手册深入浅出地介绍了如何使用CakePHP进行开发,以下将对其中的关键知识点进行详细阐述。 1. **安装与配置**...
CakePHP是一个基于MVC(Model-View-Controller)设计模式的开源PHP框架,它旨在简化开发过程,提高代码的可读性和可维护性。这份文档包含了关于 CakePHP 的所有核心概念、组件、工具和最佳实践,是学习和参考的重要...
2. **create([data])**: 创建一个用于保存的新记录,可选传入初始数据。 3. **delete([id,cascade])**: 删除指定ID的记录,可选参数cascade用于控制是否级联删除关联的数据。 4. **deleteAll(conditions,[cascade,...
CakePHP的执行主要流程是一个涉及多个步骤的过程,涵盖了从启动应用到处理请求、返回响应的整个周期。 CakePHP加载基本文件的步骤从cake/basics.php开始,该文件定义了一些基础的方法和时间常量,紧接着记录了脚本...
标题中的“国外主流PHP框架对比评测”指的是对...而Zend Framework则是一个全面的解决方案,尤其在库支持和灵活性方面表现出色,尽管需要较高的学习成本,但潜力巨大。开发者应根据项目需求和团队能力选择合适的框架。
4. **CakePHP** - 是一个基于MVC模式的开源PHP框架,其设计理念是简化开发,提高开发效率。CakePHP提供了清晰的API和约定优于配置的规则,使得开发过程更加顺畅。 除了框架,提高PHP运行速度的方法主要包括: 1. *...
`CakePHP` 是一个基于 Model-View-Controller (MVC) 设计模式的开源 PHP 框架,它提供了丰富的功能,如自动化路由、数据验证、安全特性以及简单的 ORM(对象关系映射),使开发者能够快速构建可维护、高性能的 Web ...
3. Cache功能强大,支持多种缓存机制,数据库操作功能多样,支持多种驱动。 然而,Zend Framework也存在挑战: 1. View层功能相对较弱,难以实现复杂前端控制。 2. 缺乏自动化脚本,初始设置较为繁琐,入门难度较...