1

今年早些时候,我编写了一个名为WebGLGap的实验性 PhoneGap 插件。理论上,它可以通过将所有 JS 调用转发到插件代码来在 PhoneGap 应用程序中启用 WebGL 支持。不幸的是,我放弃了它,因为 Javascript 和插件之间的桥梁是一个巨大的瓶颈:所有内容(包括顶点数据)都被字符串化为一个巨大的字符串,传递给插件,然后解析回 JSON 以供本机插件代码读取。显然,这使它变得毫无用处。

但是我正在阅读 PhoneGap 2.2 有一个新的桥,它可以快 10 倍以上。它是如何工作的?它是否避免了字符串化?如果网桥足够高效,那么重新审视 WebGLGap 可能是值得的。

4

1 回答 1

2

它仍然是所有字符串。不同之处在于现在的默认值是 XHR_WITH_PAYLOAD,它使用 XMLHttpRequest 在标头中带有参数,而不是 XHR_NO_PAYLOAD,它使用 XHR 触发读取队列,或 IFRAME_NAV,这是可用的更快方法之一,但与触摸滚动冲突iOS 5 由于一个 safari 错误。

在修复了处理快速请求的错误 ( https://issues.apache.org/jira/browse/CB-1404 ) 后,XHR_WITH_PAYLOAD 在 2.2 中被设置为默认值。但是,如果网桥仍然很忙,修复会回退到稍微慢一点的方法,因此虽然性能对于正常使用来说更好,但它不是您想要放在主渲染循环中的东西。

对于这样的不寻常的要求,自定义桥可能更有意义 - 还有其他可用的方法(例如 XHR 与请求和响应的正文内容)对于传输大量数据会更好,但不会真正起作用像标准桥梁这样的通用解决方案。

于 2012-11-16T22:02:17.820 回答