基于条件强制刷新

4
我有一个网站,其中有两种状态:未发布和已发布。
在已发布状态下,图像是从我的CDN中提供的,并设置了一个月的缓存。一旦发布,文件就不允许进行任何更改,因此我永远不会担心它。
然而,在未发布状态下,我希望每次查看页面时都能强制刷新。用户进行更新后,可以预览其内容以查看最新的更新文件,这需要进行硬刷新。
如何根据页面是否处于已发布或未发布状态来强制进行硬刷新?

1
类似于图像缓存的想法- https://dev59.com/6HRB5IYBdhLWcg3wET1J。通过在页面URL中添加一个随机生成的查询字符串,例如`?version=<?php echo time(); ?>`,可以防止缓存。或者,其他答案使用HTTP响应- https://dev59.com/6HRB5IYBdhLWcg3wET1J#728685 或在JavaScript中执行查询字符串- https://dev59.com/6HRB5IYBdhLWcg3wET1J#6116854。 - Sean
Sean,这个方法很管用,谢谢!不太确定如何将您的评论标记为答案,也许因为我的声望还很低...? - tllewellyn
我将翻译以下与编程有关的内容,返回翻译后的文本即可:我会以回答方式添加它,以便您可以标记它。 - Sean
1
你看,ttl不要把所有的积分都花在一个地方哦 ;) - Drew
@Drew Pierce 我在想发生了什么事情...谢谢,干杯! - tllewellyn
显示剩余3条评论
2个回答

2
使用与图像缓存相似的思路 - 禁用某些图像的缓存,您可以通过以下方式实现:
(1)通过向页面URL添加随机生成的查询字符串,例如 ?version=<?php echo time();?> - https://dev59.com/6HRB5IYBdhLWcg3wET1J#729623。也可以使用JavaScript实现 - https://dev59.com/6HRB5IYBdhLWcg3wET1J#6116854 (2)使用HTTP头(在PHP中)。
header("Pragma-directive: no-cache");
header("Cache-directive: no-cache");
header("Cache-control: no-cache");
header("Pragma: no-cache");
header("Expires: 0");

https://dev59.com/6HRB5IYBdhLWcg3wET1J#728685

使用元HTTP头信息。
<meta Http-Equiv="Cache-Control" Content="no-cache">
<meta Http-Equiv="Pragma" Content="no-cache">
<meta Http-Equiv="Expires" Content="0">
<meta Http-Equiv="Pragma-directive: no-cache">
<meta Http-Equiv="Cache-directive: no-cache">

https://dev59.com/6HRB5IYBdhLWcg3wET1J#14031623


0

我不确定我是否完全理解你所寻找的内容,但或许类似这样?

$state = "unpublished";

function updatePage($state)
{
   if($state == "unpublished")
   {
   $page = $_SERVER['PHP_SELF'];
   header("Refresh: $sec; url=$page");
   }
}

每当进行任何更新时,请调用此函数。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接