`
jqj031
  • 浏览: 71502 次
  • 性别: 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
分享到:
评论

相关推荐

    PHP的框架之CakePHP-CakePHP教程

    打包下载,里面有CakePHP的框架源码,下载后可直接使用,版本是1.1的,稳定版;CakePHP的分页组件源码;CakePHP的中文及英文教程,CHM格式;CakePHP的中文打印版教程,WORD格式,下载后可直接打印,方便的;CakePHP...

    cakephp 框架

    cakephp 框架 cakephp 框架 cakephp 框架 cakephp 框架 cakephp 框架

    cakephp的CMS教程

    是cakephp框架的内容,用cakephp开发了一个的简单的CMS系统教程。

    cakephp php-framework

    There are two main ways to get a fresh copy of CakePHP. You can either download an archive copy (zip/tar.gz/tar.bz2) from the main website, or check out the code from the git repository. To download ...

    CakePHP php框架 v3.8.5

    CakePHP 是一个运用了诸如ActiveRecord、Association Data Mapping、Front Controller和MVC等著名设计模式的快速开发框架。该项目主要目标是提供一个可以让各种层次的PHP开发人员快速地开发出健壮的Web应用,而 又...

    CakePHP php框架 v3.7.0 beta1.zip

    CakePHP 是一个运用了诸如ActiveRecord、Association Data Mapping、Front Controller和MVC等著名设计模式的快速开发框架。该项目主要目标是提供一个可以让各种层次的PHP开发人员快速地开发出健壮的Web应用,而 又...

    cakephp-containable行为behaviour

    2:cakephp中虽然对模型的操作方法中并没有提供像上面提到的连贯方法 但是cake框架提供了一个containable行为类来更好的完善模型关联中遇到的上述问题 ">1:thinkphp中通过框架提供的连贯操作Model >join ‘other ...

    CakePHP php框架 v3.7.8.zip

    CakePHP 是一个运用了诸如ActiveRecord、Association Data Mapping、Front Controller和MVC等著名设计模式的快速开发框架。该项目主要目标是提供一个可以让各种层次的PHP开发人员快速地开发出健壮的Web应用,而 又...

    PHP的框架之CakePHP-CakePHP教程终极教程

    打包下载,里面有CakePHP的框架源码,下载后可直接使用,版本是1.1的,稳定版;CakePHP的分页组件源码;CakePHP的中文及英文教程,CHM格式;CakePHP的中文打印版教程,WORD格式,下载后可直接打印,方便的;CakePHP...

    CakePHP 3.4 开发手册文档 CakePHP Cookbook Documentation Release 3.4

    CakePHP 3.4 开发手册文档 CakePHP Cookbook Documentation Release 3.4

    cakephp分页.docx

    cakephp分页,cakephp框架的分页的方法的文档,是cakephp框架的内容。

    CakePHP PHP MVC框架

    CakePHP 一个开源PHP web 开发框架,PHPMVC结构框架,易与开发,是PHP技术人员的开发好的选择之一!

    cakePHP 中文手册

    CakePHP是一个开源的PHP on rails的full-stack framework。最开始从Ruby On Rails框架里得到灵感。程序员可使用它来快速创建的Web应用程序。我们的首要目的是使你以一种预置的快速且不失灵活性的方式开展工作。 为...

    Beginning CakePHP:From Novice to Professional

    Lead you from a basic setup of CakePHP to building a couple applications that will highlight CakePHPs functionality and capabilities without delving too deeply into the PHP language, but rather ...

    cakephp中acl详解

    cakephp中acl详解

    cakephp手册完整打印版

    下载了一个cakephp手册,里边有个单页手册,本来想打印出来慢慢看,发现单页手册不全,于是自己编辑了一个,供大家下载打印。为节省纸张,去掉了一些回车,修改了一些字号。大约120页。

    cakephp-1.2 manual

    cakephp-1.2 manual 英文版,离线版。

    cakephp 框架书籍 英文版

    cakephp 框架书籍 英文版

    CakePHP 框架模板 v2.02

    CakePHP是一个用PHP编写的开源Web应用框架,不过其模型是用Ruby on Rails设计的。作为PHP世界的Rails,CakePHP采纳了RoR的许多优秀特性,成熟度较高。

    CakePHP 2.10.6.zip

    CakePHP是一个快速开发PHP的开发框架,其中使用了一些常见的设计模式如ActiveRecord,Association Data Mapping,Front Controller以及MVC。其主要目标在于提供一个令任意水平的PHP开发人员都能够快速开发web应用的...

Global site tag (gtag.js) - Google Analytics