用户重定向时的缓存页面?

时间:2016-01-29 02:24:07

标签: php caching

我发现了很多关于如何停止缓存的信息,但很少有关于强制缓存的信息。我有一个动态的PHP页面,它从数据库中检索数据。在这个页面上,我有一个按钮,它使用JS函数重新加载页面,并在用户点击它时更新内容。该页面也会在一段时间后重定向。

  • 如果用户在浏览器中按下按钮后页面已重定向,则显示重定向前存在的同一页面。

这只能使用标头缓存控制吗?

现在,我使用的header("Cache-Control: max-age=3600, private");根本不会缓存页面。

1 个答案:

答案 0 :(得分:0)

为了解决这个问题,你必须考虑几件事。

首先,对于动态内容,您需要设置标题的页面可能不一定是您认为的页面。这是一个例子。

  

假设您有一个PHP脚本,其中包含另一个PHP脚本。该   包含的页面是您和用户看到的,但是,就此而言   浏览器关注的是来自该父PHP文件的请求。在我的   我试图在included.php中设置标题,而不是。{   parent.php

第二个考虑因素是您是否正在使用会话。如果您需要缓存会话数据以及页面内容,则需要使用session_cache_limiter()在该页面上启动会话之前设置正确的标头。

当我使用浏览器开发人员工具查看网络请求并查看标题时,我的问题变得明显。即使我正在设置它们并指定过期(max-age),浏览器也会忽略它。

enter image description here

但是,即使在设置了正确的缓存控制头之后,在开发人员工具中看到它们,页面仍然没有被缓存。怎么会这样!?!我会告诉你原因,请注意那些标题中的Pragma: "no-cache"?这就是为什么!我们需要改变它。

header("Cache-Control: max-age=5600, private_no_expire");
header("Pragma: cache");

require_once 'included.php';

enter image description here

看起来更好。现在好运,你的页面将被缓存。