让我们从一个典型的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中不起作用。
答案 0 :(得分:3)
Check out this thread和代码示例:
@IBAction func onSignUp(_ sender: Any) {
guard let usernameText = usernameField.text, let passwordText = passwordField.text else {return}
let newUser = PFUser()
newUser.username = usernameText
newUser.password = passwordText
newUser.signUpInBackground { (success: Bool, error: Error?) in
if success {
print("Created User")
} else {
print(error!.localizedDescription)
}
}
}