2012-03-31 55 views
1

我想將自定義二進制數據提供給瀏覽器。他們實際上是圖像,但我需要提供同一圖像的多個版本+一些元數據。網絡性能應該通過僅使用一個GET請求來實現,並且應該在瀏覽器中快速解包。到目前爲止,我能想到這些解決方案:向瀏覽器提供二進制數據的最快方式是什麼?

  • 圖像精靈(怎麼樣的元數據?)
  • ZIP
  • msgpack
  • JSON + base64編碼

我不在乎約爲< IE8。我認爲避免XHR在我的情況下是不可能的,但是同樣的原產地策略使得它更糟,因爲我需要從不同的(子)域加載。這可以通過服務器路由解決,另一方面阻止使用CDN。

+0

如果圖像無損壓縮你可以創建一個像精靈,並添加一個區域的精靈,可以存儲元數據(像素值內)。然後,您將使用 + JS來讀取像素值,從而讀取元數據。 – CAFxX 2012-03-31 15:01:41

+0

如果OTOH,圖像是JPG壓縮的,你仍然可以使用相同的技巧:只需使用8x8對齊的常量像素塊,你應該很好去。 – CAFxX 2012-03-31 15:04:09

+0

你是否想用二進制數據製作一個可下載的文件?如果是這樣,HTML5有一個很好的API。缺點是瀏覽器支持。 – pimvdb 2012-04-01 19:32:58

回答

1

依賴於數據結構,但如果你需要做一些與此數據在JavaScript中 - 有兩個(三級)的方式來實現這一目標

  • JSON +一個base64或轉義特殊字符
  • XML +一個base64或逃逸(其中一人之間的選擇取決於偏好)
  • 艱苦的,但最有效的 - 爲0x20 0x40的爲0×00字符,爲0x20的0x41的標記和0x20的 - 有逃脫0字符和特殊符號(使三個特殊代碼的純文本0x42代表0x20)
+0

我不喜歡base64編碼的想法來克服JSON或XML限制。你能解釋一下第三個選項嗎?如果你使用JSON – skrat 2012-03-31 17:18:20

+0

,就沒有必要使用的base64,剛剛逃生(XML或\ 0 CDATA如0] \ r,\ n,\」以JSON - 這可能是不夠的)一些代碼調校妥當。第三選項是使​​數據包在自己的格式(Compltely二進制/ 0x20的的0x41在數據結束),在JavaScript替換特殊的代碼,發送它,和方法 - 通過爲0x20的0x41分裂(「A」) – SergeS 2012-04-01 07:22:59

+0

瑤池出約msgpack更多信息 - 數據大小最好,但不穩定 – SergeS 2012-04-01 07:31:57

相關問題