我有一个iPhone网络应用程序,我想知道如何强制缓存刷新。
我的缓存清单是:
CACHE MANIFEST
index.html
file1.css
file1.js
index.html
是应用程序的核心,所以我把它放在缓存中。在这一点上,我似乎很难受,因为我无法弄清楚如何让iPhone无效缓存。即使转到Settings > Safari > Clear Cache
也行不通,尽管我希望能够以编程方式控制它。从清单中删除index.html
并重新添加它似乎可行,但我必须知道我的所有客户都清理了更新后的清单。
如何缓存index.html
并在更改时仍然更新?
答案 0 :(得分:3)
在我的头顶,对清单的任何更改都可以解决问题 - 清单可以包含以#开头的注释。只需添加随机评论即可。
这是一个有用的属性,当我在git存储库中处理HTML5应用程序时,我曾经在每次提交后使用包含HEAD哈希的注释自动重新生成清单,以便更改始终传播给用户。
答案 1 :(得分:1)
WebKit浏览器中似乎存在一个错误,阻止他们在清单更改时重新加载网站,请参阅this link
除非直接调用index.html,否则无法解决变通方法。
没有机会将iPad / iPhone-WebApp固定在这个工作上......
答案 2 :(得分:0)
是的,您可以使用JavaScript强制Safari重新加载缓存的资源文件。
根据Apple的说法,修改缓存清单文件将导致Safari重新加载任何已更改的资源文件。 但在用户第二次访问该网站之前,浏览器不会使用这些重新加载的文件。这种延迟可能会带来痛苦,尤其是在发展过程中。
为了强制Safari立即重新加载缓存内容,Apple称你can use this JavaScript操纵applicationCache
对象:
function updateSite(event) {
window.applicationCache.swapCache();
}
window.applicationCache.addEventListener('updateready', updateSite, false);