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