我正在一个网站上工作,该网站的某些页面内容非常繁重。在内存较低的旧版 iPad(使用 iPad 3 测试)上查看时,Safari 浏览器将耗尽内存并在我导航到这些页面时崩溃。在崩溃期间,Safari 的总虚拟内存达到了大约 900 MB 的内存峰值。
经过调试,我发现这个问题的主要原因是以下用于在 Web 浏览器上启用动量滚动的 CSS 属性。从我的样式表中删除这个 CSS 属性可以减少大约 300MB 的总虚拟内存占用并稳定我的应用程序。
.class1,
.class2,
.class3
{
-webkit-overflow-scrolling: touch;
}
然而,删除这种 CSS 样式的明显副作用是我失去了网页滚动的动力,我们恢复到原生的 Safari 滚动,这不是一个很好的用户体验。
我正在寻找一种在我的页面上启用动量滚动的方法,它具有更小的内存占用,以便我的应用程序可以在旧版本的平板电脑上运行。
我注意到这个问题在 iOS 7 和 iOS 6 上更严重——我希望 iOS 8 能解决这个问题,我可以推动我的客户升级作为一个选项。
-webkit-overflow-scrolling: touch; 是一个已知问题吗?非常占用内存吗?我在网上找不到太多关于这个的信息。我认为问题在于当我将 CSS 属性应用于包含的 div 时,它会继承到页面上的所有子元素。我想知道我是否阻止了对所有子元素的这种继承,如果这有助于解决问题,或者这是否会完全破坏动量滚动?
非常感谢任何建议。