每次客户端访问站点时,应用程序缓存都会自动检查和更新文件。假设缓存仅在单击按钮时更新。单击将“清单”添加到标签中,仅针对该请求。在下一个请求中,“清单”被删除。
文件是否仍然在缓存中,还是被浏览器删除?
清单中未定义清单时是否仍会使用清单缓存文件?
每次客户端访问站点时,应用程序缓存都会自动检查和更新文件。假设缓存仅在单击按钮时更新。单击将“清单”添加到标签中,仅针对该请求。在下一个请求中,“清单”被删除。
文件是否仍然在缓存中,还是被浏览器删除?
清单中未定义清单时是否仍会使用清单缓存文件?
文件将仍在缓存中!这里的问题是:appcache 文件将一直被使用。缓存中的页面仍然保存清单条目。因此,您首先必须删除服务器端的条目,然后更新清单内容本身,以便代理将再次更新 appcache 中的页面,现在没有该清单条目。
我知道这是一个老问题,但令人惊讶的是关于这个问题的信息很少。
结合 Marvin 的回答,您可以利用清单的一个鲜为人知的功能来清除缓存:
如果无法检索缓存部分中提到的任何文件,则将忽略整个缓存。
因此,在更新清单后,您需要做的就是让使用它的文件指向一个不存在的清单文件,然后一切都应该被转储。
你可以使用一点 PHP 让事情变得更干净:
<?php
$CACHE = false;
?><!DOCTYPE html>
<html manifest="<?php if(!$CACHE){echo "BREAK";} ?>manifest.php">