CakePHP View Cache的乙個問題

2021-08-25 06:13:01 字數 916 閱讀 7217

最近一直在使用cakephp,感覺挺不錯。不過這幾天在使用view cache的時候卻發現乙個問題:url帶查詢引數時總是不命中快取。檢視**後發現問題所在,原來在view中使用cachehelper類來處理快取,每次儲存快取時採用的檔案路徑是:

$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其他設定方法不變,可以參考[url]

問乙個簡單的問題

問乙個簡單的問題 delphi windows sdk api 初學delphi 需要時間不明確的情況下 迴圈體次數不定 怎麼用乙個動畫來讓使用者知道程式還在執行 具體用什麼控制項,如何寫呢 謝謝 sf 你可以在迴圈開始之前將游標設定成漏斗狀,然後在結束時恢復原來的箭頭狀!怎麼寫呢?我想問一下滑鼠那...

問乙個簡單的問題

問乙個簡單的問題 delphi windows sdk api 初學delphi 需要時間不明確的情況下 迴圈體次數不定 怎麼用乙個動畫來讓使用者知道程式還在執行 具體用什麼控制項,如何寫呢 謝謝 sf你可以在迴圈開始之前將游標設定成漏斗狀,然後在結束時恢復原來的箭頭狀!怎麼寫呢?我想問一下滑鼠那個...

乙個effective java中的效率問題

package com.liuc public class autopackage long end system.currenttimemillis system.out.println end start 1000 執行時間19s 和下面這個程式 package com.liuc public ...