在iPad上缓存Javascript HTML5全屏网页应用程序

问题描述:

我遇到了问题,iPad坚持要加载.js文件的旧副本,而不是当前的。奇怪的是,这只发生在页面处于全屏模式时,而不是从页面运行时。在iPad上缓存Javascript HTML5全屏网页应用程序

  • 我没有使用任何类型的缓存清单;
  • 当我在Safari上打开页面时,其行为与最新版本的.js相同;
  • 当我通过图标打开页面时,它的行为与旧的.js相同;
  • 杀死正在运行的应用程序,删除图标然后重新创建它并不能解决问题;它仍然使用旧的.js,即使在全屏时也是如此。

有没有人知道发生了什么?

- 更新 -

这似乎是一个iOS 5 bug

- 解决方法(又名丑陋的黑客攻击) -

一些假HTTP PARAMS只需添加到脚本标记,以便高速缓存认为它完全是另一JS:

<script src="js/pentaho-jqm-repository.js"></script> 

变为:

<script src="js/pentaho-jqm-repository.js?fkn-ios-bug=1"></script> 
+0

我相信,如果您在隐私模式下查看页面,它将不会被缓存。试一试。 – 2012-04-25 20:30:35

+0

不幸的是,我无法测试它,因为在添加上面的参数并再次删除它之后,缓存问题就停止了,就像那样。可能是零星的iOS错误? 感谢您的提示,无论如何;我会在下次缓存错误命中时尝试它。 – 2012-04-26 11:59:08

+1

刚刚在iOS 7.0.4上遇到同样的问题。我没有添加一个参数,重新启动iPad后问题就消失了。 – Nathan 2014-02-20 18:12:58

在使用上述解决方法(向URL添加假参数)并将其更改回来后,奇怪的是,问题停止发生。当然,在生产环境中,人们无法做到这一点,所以我想我会开始编号js版本,以便最终用户不会遇到这个问题。