阅读完这个问题后,我想知道是否可以通过将我的应用程序版本附加到索引文件顶部的 uri 来防止浏览器缓存......就像这样:
$revision = getRevision();
if($_GET['v'] != $revision){
header('Location: index.php?v=' . $revision);
}
这行得通吗?
最终目标是重置整个缓存 - JavaScript, CSS, images
当我推送更新时,最好是一个不错的小班轮
阅读完这个问题后,我想知道是否可以通过将我的应用程序版本附加到索引文件顶部的 uri 来防止浏览器缓存......就像这样:
$revision = getRevision();
if($_GET['v'] != $revision){
header('Location: index.php?v=' . $revision);
}
这行得通吗?
最终目标是重置整个缓存 - JavaScript, CSS, images
当我推送更新时,最好是一个不错的小班轮
如果页面本身被缓存,是的。您还必须对通过站点上的 URL 可用的任何图像/css/js 或外部文件执行此操作(假设您正在传递缓存标头,因此它们实际上已被缓存)并且包含在该页面中,因为浏览器会缓存所有可用的 URL,它们不会按页面调用它们的方式组合在一起——它们都是独立的。因此,如果 index.php 包含一个 IMG,那么即使您更改 index.php?v=1234,该 IMG 仍会从缓存中调用。您还必须在图像上添加 ?v=1234 才能重新获取页面和图像。
版本系统通常是您附加到所有可以修改的可缓存 URL(如 css 和 js)但希望在更新后立即失效的东西。您通常以任何有意义的方式将 ?VERSION 附加到 URL 或将 ?version=VERSION 附加到所有 URL(确保不破坏 URL 参数)。
是的你可以; 附加一个随机忽略的参数是一种经典的方法来阻止缓存。您还可以使用标题:Cache-control: no-cache
并Expires:
及时设置。