让我们从一个典型的PHP / html / JavaScript环境开始.跳过< head>和< body>假设我们有:
<script>
var foo = <?PHP echo generateFoo(); ?>;
</script>
让我们假设这在各个方面都可以正常工作,除了一个小的缺陷.也就是说,每当我离开页面并单击“返回”时,都会得到foo的旧值,而不是更新的值.
我了解这个错误.单击“后退”将从缓存而不是服务器中加载页面,因此它将返回到PHP的先前值,而不是当前值.但是,我希望它强制更新. (这尤其重要,因为用户可能会在另一页上更改值,并且不是html专家的人会期望“返回”将您带到上一页的更新版本.代码总是更容易更改比用户行为).
我该写些什么,使其功能与上面的代码完全相同,但在用户向后导航时也将执行?
(我认为正确的解决方案可能使用AJAX,但也许我错了.该页面已经在使用jquery CDN中的AJAX,因此,如果可以的话,我也可以使用它.)
编辑:
一个允许缓存但仅更新一个变量的解决方案将是理想的.但是,如果停止缓存是唯一的解决方案,我什至不知道该怎么做.所以告诉我该怎么做会很好.
直接从我的代码复制而无需更改:
<?PHP
…
header("Cache-Control: no-cache, no-store, must-revalidate");
header("Pragma: no-cache");
header("Expires: 0 ");
?>
所以是的,我已经尝试停止缓存了.它在BFCache中不起作用.
解决方法:
window.addEventListener("pageshow", function (event) {
var historyTraversal = event.persisted ||
(typeof window.performance != "undefined" &&
window.performance.navigation.type === 2);
if (historyTraversal) {
// Reload the page.
window.location.reload();
}
});
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。