Kar*_*ite 5 javascript web-applications application-cache ios
我正在开发一个利用应用程序缓存的网络应用程序,一切都在桌面浏览器和Android(甚至很老和慢的Android手机)上运行良好.但是,下载appcache在Safari 6和Chrome上的iOS 6上花费的时间要长得多.
我的应用程序缓存总大小仅为2.1Mb,而且我有一个相当稳固的70Mbps(下载)互联网连接.我希望缓存非常快.
这是我到目前为止的时间:
所有这些设备都使用相同的WiFi和互联网连接,我的iPhone/iPad运行正常(没有本地应用程序显示互联网速度问题,常规网站加载正常).在iOS下,似乎有一些绝对贬低AppCache下载速度的东西.
在window.applicationCache.status整个这段时间里appCache.DOWNLOADING,我有一个progress事件正在运行,在下载文件时对这些文件进行计数,所以我确信它不会卡在其他地方.这似乎是下载所需的时间.是什么赋予了?
附录:iPhone也运行得非常热,电池在此操作过程中非常快速地下降.似乎有些东西导致CPU在下载过程中运行平稳.
(注:我不能发布一个链接到web应用这里我们仍处于内部测试阶段,但如果你需要看到它之前,你认为你能帮助诊断它,在给我发电子邮件在我的个人资料中的地址,我将发送一个链接到该应用程序).
好的,我在 iOS 模拟器和 Xcode Instruments 的帮助下找到了它来分析它。(我不确定是否应该将我的解决方案添加到主要问题中,或者作为答案,但我想我会这样做,因为我的问题已经有点混乱)。
事实证明,实际上是一些错误的 javascript 导致了这个问题,但显然只在 iOS 上。
该网络应用程序的目的只是一个单页高(没有垂直滚动,除非在特定的DIV范围内),所以除了用于隐藏地址栏的常用标准 JS 代码之外......
window.addEventListener("load",function() {
// Set a timeout...
setTimeout(function(){
// Hide the address bar!
window.scrollTo(0, 1);
}, 0);
});
Run Code Online (Sandbox Code Playgroud)
...我还添加了以下内容:
$(document).scroll(
function(e){
window.scrollTo(0, 1);
});
Run Code Online (Sandbox Code Playgroud)
通过查看配置文件结果,我可以看到花费了大量scrollTo时间,因此它立即指出这是原因。为什么该scroll事件被如此频繁地触发,我不知道(这是在没有触摸屏幕的情况下发生的)。
我最初的解决方案是限制该代码,但我现在正在评估我是否需要它。这是我现在修复它的代码(使用jquery-debounce,我已经将其用于其他用途):
$(document).scroll(
$.throttle(function(e){
window.scrollTo(0, 1);
})
, 10);
Run Code Online (Sandbox Code Playgroud)
应用程序缓存的下载时间现在与Android时间一致。唷!
| 归档时间: |
|
| 查看次数: |
1401 次 |
| 最近记录: |