Javascript AppCache在iOS上运行速度极慢
我正在开发一个利用应用程序缓存的web应用程序,在桌面浏览器和Android(甚至是非常旧和慢的Android手机)上,一切都很好。然而,在Safari和Chrome中,在iOS 6上下载appcache的时间要长得多 我的应用程序缓存总大小仅为2.1Mb,我有一个相当可靠的70Mbps(下载)互联网连接。我希望缓存速度相当快 以下是我到目前为止的时间:Javascript AppCache在iOS上运行速度极慢,javascript,ios,web-applications,application-cache,Javascript,Ios,Web Applications,Application Cache,我正在开发一个利用应用程序缓存的web应用程序,在桌面浏览器和Android(甚至是非常旧和慢的Android手机)上,一切都很好。然而,在Safari和Chrome中,在iOS 6上下载appcache的时间要长得多 我的应用程序缓存总大小仅为2.1Mb,我有一个相当可靠的70Mbps(下载)互联网连接。我希望缓存速度相当快 以下是我到目前为止的时间: 桌面Chrome:好的,我在iOS模拟器的帮助下找到了它,并使用Xcode工具对其进行了分析。(我不确定是否应该在主要问题中添加我的解决方案
- 桌面Chrome:好的,我在iOS模拟器的帮助下找到了它,并使用Xcode工具对其进行了分析。(我不确定是否应该在主要问题中添加我的解决方案,或者作为答案,但我认为我应该这样做,因为我的问题已经有点混乱了)
事实证明,这实际上是一些错误的javascript造成的问题,但显然只有在iOS上
该web应用程序仅为单页高(没有垂直滚动,除非在特定的
s中),因此除了用于隐藏地址栏的常用标准JS代码之外DIV
…我还添加了以下内容:window.addEventListener("load",function() { // Set a timeout... setTimeout(function(){ // Hide the address bar! window.scrollTo(0, 1); }, 0); });
通过查看配置文件结果,我可以看到大量的时间都花在了$(document).scroll( function(e){ window.scrollTo(0, 1); });
滚动到
上,因此它立即指出了这一原因。为什么会触发如此多的
事件,我不知道(这是在没有触摸屏幕的情况下发生的) 我最初的修复方法是限制代码,但我现在正在评估是否需要它。下面是我现在修复它的代码(使用,我已经在用它来做其他事情了):滚动
应用程序缓存的下载时间现在与Android时间一致。呸 当最初的scrollTo函数调用触发scroll事件处理程序时,代码正在进入一个无限循环,然后scroll事件处理程序会重复地重新触发自身!我的最佳猜测是,iOS JavaScript引擎处理这个无限循环的方式与其他浏览器的JavaScript引擎不同。首先,在它上面抛出一个TCP嗅探器(如),以了解在这8分钟内设备/服务器之间的对话是什么样子的。$(document).scroll( $.throttle(function(e){ window.scrollTo(0, 1); }) , 10);