我已经创建了一个web应用程序,它缓存了所有必要的代码和数据,以便通过applicationCache脱机使用。然而,每次应用程序启动时,它都会立即尝试检查更新情况。这会阻塞浏览器相当长的时间,即使它找不到任何要更新的内容。这种行为对应用程序具有很大的破坏性(不应该在后台进行更新吗?)。仅仅是检查阶段就需要在移动设备上花费大量时间,如果它发现了更新,那么所有关于下载时间(b/c,它必须重新下载所有文件)的赌注都会消失--这也会冻结浏览器。
所以,我想知道:
编辑:也许清单文件上精心构造的缓存控制头就是答案?我会调查这个,但我希望有人能给我更多关于这些更新的信息。谢谢。
更新
好吧,我玩过头球,没有什么能帮到你。我要开始赏金了。如果你能帮忙,请帮忙!
发布于 2011-09-08 10:41:56
中止()方法可能是中止(),但我还没有遇到任何实现它的浏览器。
我有一个类似的问题,并尝试了一切,包括疯狂的想法,把清单本身,看看它是否会缓存自己。因此,我可以使用ajax请求和填充到localStorage...yikes中的eval‘’ing javascript手动进行更新。
最后,我用一个简单的清单创建了一个非常简单的html页面。当我测试它时,UI没有锁定。慢慢地,我开始将内容添加到页面中,并查看清单内容是否会导致applicationCache检查期间冻结。当我向页面添加一个图像时,我终于失败了,但是我把它放在了清单之外--这时UI又开始锁定了。我回到原来的项目中,发现了一些需要在清单中出现的图像,并且还解决了锁定UI问题。
applicationCache的检查阶段尝试异步(至少在我测试过的设备上)。但是,如果清单中缺少任何文件,则必须等待完成对的检查。
当浏览器需要一个尚未缓存的文件时,它会等待applicationCache完成更新,然后才会对该文件提出请求--这是有意义的,因为其他资源可能依赖于丢失的文件。这将刹车的渲染,并使UI冻结。如果无法访问清单(例如,在不同的网络上),则UI可以锁定约一分钟。
要查找需要添加到清单中的文件,请在刷新应用程序几次时查看服务器日志。嫌疑人将是对清单以外的文件的任何请求。
https://stackoverflow.com/questions/5877322
复制