本地h5加载的问题
场景是:需要采用h5去加载3D模型效果,3D资源比较大,接近50M,需求是app下载h5的zip包,然后去加载
-
加载路径
- h5是vue的项目,url前要拼接“file://”
-
跨域设置
config.setValue("Yes", forKey: "allowUniversalAccessFromFileURLs")
config.preferences.setValue("Yes", forKey: "allowFileAccessFromFileURLs")
-
iOS wkwebview的内存限制
-
分析webview性能方式
- 真机: Xcode的instrument->Activity Monitor, 进程输入webkit,可以看到三个webview相关的进程,可以观察CPU,GPU,内存的使用数据。加载完3d模型时已经600M,然后又加载了很多的序列帧动画,webContent大概在1G多内存时就crash后白屏。
- 模拟器:在Xcode的模拟器上,可以用mac的进程工具查看内存。模拟器加载完3d模型大概200M,序列帧加载完是400M。
- 模拟器和真机的内存差异原因暂时未知,但是增长趋势和比例是一致的。
-
大内存会崩溃(复杂的3D模型)
- iOS的webview,在超出GPU和内存的设置后,会crash,效果是白屏
- 会走到
webViewWebContentProcessDidTerminate
,然后加了失败页
-
增加内存的h5测试
- 测试地址: https://qr-1254280628.cos.ap-shanghai.myqcloud.com/addMomory.html
- 在safari上会页面失败,在微信上会重新打开
设置好开发者后,可以在safari调试,类似chrome的开发者模式
-
350张680*1280图片占用内存
- 一个图片像素点RGBA:占用32bit,即4byte
- 单个图片内存:680*1280 * 4byte = 3400KB = 3.32M
- 350个图片内存:3.32M * 350 = 1162M = 1.13G