2012-11-16 23 views
1

今年早些時候,我寫了一個名爲WebGLGap的實驗PhoneGap插件。理論上它可以通過將所有的JS調用轉發給插件代碼來在PhoneGap應用程序中啓用WebGL支持。不幸的是我放棄了它,因爲Javascript和插件之間的橋樑是一個巨大的瓶頸:所有東西(包括頂點數據)被串接成一個巨大的字符串,傳遞給插件,然後解析回JSON以被本地插件代碼讀取。顯然這使得它非常無用。PhoneGap 2.2:新橋如何運作?

但是,我正在閱讀PhoneGap 2.2有一個新的橋樑,可以超過10倍的速度。它是如何工作的?它是否避免字符串化?如果橋樑足夠高效,那麼很有必要重新審視WebGLGap。

回答

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帶有主體內容,用於請求和響應),這對於傳輸大量數據會好得多,實際上它可以像標準橋樑一樣用作通用解決方案。

+0

感謝您的回答。在哪裏我可以找到更多關於如何製作非串聯橋的信息,或者我應該爲此發佈一個單獨的問題? – AshleysBrain

+0

不知道這是你可能會找到其他人正在工作的那種要求。你最好的選擇可能是從xhr橋的代碼開始。您仍然需要某種序列化,但如果您可以針對特定數據進行優化,則可能會提高性能。 –