2012-03-31 61 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

相关问题