Javascript AppCache在iOS上运行速度极慢

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工具对其进行了分析。(我不确定是否应该在主要问题中添加我的解决方案

我正在开发一个利用应用程序缓存的web应用程序,在桌面浏览器和Android(甚至是非常旧和慢的Android手机)上,一切都很好。然而,在Safari和Chrome中,在iOS 6上下载appcache的时间要长得多

我的应用程序缓存总大小仅为2.1Mb,我有一个相当可靠的70Mbps(下载)互联网连接。我希望缓存速度相当快

以下是我到目前为止的时间:


  • 桌面Chrome:好的,我在iOS模拟器的帮助下找到了它,并使用Xcode工具对其进行了分析。(我不确定是否应该在主要问题中添加我的解决方案,或者作为答案,但我认为我应该这样做,因为我的问题已经有点混乱了)

    事实证明,这实际上是一些错误的javascript造成的问题,但显然只有在iOS上

    该web应用程序仅为单页高(没有垂直滚动,除非在特定的
    DIV
    s中),因此除了用于隐藏地址栏的常用标准JS代码之外

            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);