【发布时间】:2015-01-06 18:15:42
【问题描述】:
我使用的是 CakePHP 2.6
当我重定向回发出请求的同一视图时遇到问题。该视图似乎已被缓存,因此在再次刷新页面之前不会显示请求期间所做的任何更改。
这意味着:
- 用户看不到刚刚所做的更改。
- Flash 消息显示在 以下 视图中(这很糟糕)。
为什么会这样?
我检查过的内容:
- 我的 PHP 环境已关闭缓存
- 我的 CakePHP 配置是默认配置(见下文)。
- 缓存应该被禁用,因为我处于调试模式:
Configure::write('debug', 2); - 我正在多个浏览器中进行测试,其中 和 未启用浏览器缓存。
Configure::write('Session', array(
'defaults' => 'php'
));
代表性例子:
//Inside ListingsController...
$this->Listing->id = $id;
if ($this->Listing->save($listing)) {
$this->Flash->success(__('"%s" is now active.', $listing['Listing']['title']));
} else {
$this->Flash->error(__('Problem activating'));
}
//this is the original view...
$this->redirect( array('controller'=>'listings', 'action'=>'mylistings') );
【问题讨论】:
-
在调试模式下(在/Config/core.php 中有
Configure::write('debug', 2);),你还有这个问题吗?如果是,则不是缓存问题,而是其他问题,因为在调试模式下禁用了缓存。 -
@PGBI 是的。我处于调试模式,它仍在发生。有什么想法会导致这种情况吗?
-
不容易猜到...您的代码示例可能有助于弄清楚。
-
@PGBI 当然。刚刚添加了一个示例。
-
@SDP Righto,我非常乐于助人的同事将其归结为一些非常过分热心的缓存。他的笔记:“
must-revalidate仅在达到max-age时才有效。如果last-modified日期不在过去,它只会回复 304 并再次从缓存中提取”。我们在受影响操作的开头添加了以下三行,一切看起来都很好!让我知道这是否有帮助:header('Cache-Control: no-cache, no-store, must-revalidate'); header('Pragma: no-cache'); header('Expires: 0');
标签: php cakephp caching cakephp-2.0