dequan1331 / HybridPageKit

A high-performance、high-extensibility、easy integration framework for Hybrid content page. Support most content page types of News App.
MIT License
1.22k stars 187 forks source link

关于使用 wkwebview 和 LocalWebServer的思路 #28

Closed karosLi closed 4 years ago

karosLi commented 5 years ago

不是很清楚,大厂都是怎么使用 LocalWebServer 来支持离线包的,下面是我想的一些思路: 1、把本地服务器的地址放在请求头里,然后服务器端渲染,如果是来自app的请求,把所有src的host改成 app 本地服务的localhost。只是这种方式也对后续异步渲染和懒加载JS就不太好支持了。 2、服务器端渲染返回 src='customScheme://',然后 urlprotocol 这拦截 customScheme 的请求,也不会引起 http ajax 丢失 body。

自己也觉得这两种方式,实际上都需要服务器端配合,另外还需要H5业务方去配合支持后续的src的改动。 成本上是有点高的,如果是不要服务器端配合,那至少也是需要 H5业务放配合把所有加载图片和脚本的地方,都要使用JS动态借助Native能力去加载,可是这样会破坏H5的原有结构。

能请教下还有什么更好的思路吗?

Lee0820 commented 5 years ago

同问

dequan1331 commented 4 years ago

在问题中你提到了大厂,对于资讯内容页展示来说大部分是使用你说的第二种方式,可以对目前头部的资讯App抓包看下,大多都是增加活修改了自定义的Scheme前缀。那么对于其他的H5页面,也是需要H5配合的,类似的H5优化方案比如VasSonic,都是需要前后端一起配合的。

毕竟大厂的H5页面都有对应的开发团队在维护,同时使用离线包方案的页面大多都是部门/团队内自己的页面,协作起来也比较方便。

如果是第三方的抓取/三方应用页面等,这种方案暂时不能满足,可以考虑使用私有函数拦截HTTP/HTTPS请求来处理。