【问题标题】:CakePHP caching issue when redirecting back to same page重定向回同一页面时的 CakePHP 缓存问题
【发布时间】:2015-01-06 18:15:42
【问题描述】:

我使用的是 CakePHP 2.6

当我重定向回发出请求的同一视图时遇到问题。该视图似乎已被缓存,因此在再次刷新页面之前不会显示请求期间所做的任何更改。

这意味着:

  1. 用户看不到刚刚所做的更改。
  2. 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


【解决方案1】:

我也有同样的问题。你找到这一切的原因了吗?当我试图解决这个问题时,我在响应标题中看到了这个

Age 0 
Connection keep-alive 
Date Tue, 21 Apr 2015 08:47:21 GMT 
Server ATS/3.2.4

所有带有304 Not Modified Status 的文件都有 Apache Traffic Server (ATS)(来自我的 LAN),这让我认为它是导致所有这些行为的原因;我按照here 的解释强制了非缓存,我没有更多这样的问题。

【讨论】:

    【解决方案2】:

    试试这个它会重定向到引用者

    $this->Listing->id = $id;
    if ($this->Listing->save($listing)) {
        $this->Flash->success(__('"%s" is now active.', $listing['Listing']['title']));
        // Redirect the referer
        $this->redirect(
            $this->referer()
        );
    } else {
        $this->Flash->error(__('Problem activating'));
    }
    

    谢谢..!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-05-06
      • 1970-01-01
      • 1970-01-01
      • 2016-04-11
      • 1970-01-01
      • 2012-12-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多