[whatwg] An BinaryArchive API for HTML5?

Ian Hickson ian at hixie.ch
Tue Aug 4 18:43:53 PDT 2009

On Thu, 30 Jul 2009, Sebastian Markbåge wrote:
> This suggestion seems similar to Digg's Stream project that uses multipart
> documents: http://github.com/digg/stream
> While it would be nice to have a way to parse and handle this in 
> JavaScript, it shouldn't be JavaScript's responsibility to work with 
> large object data and duplicating it as in-memory data strings.
> The real issue here is the overhead of each additional HTTP request for 
> those thousands of objects. But that's useful for all parts of the spec 
> if you can download it as a single package even without JavaScript. 
> Images, CSS, background-images, JavaScript, etc. Currently you can 
> include graphics as data URLs in CSS. Using a package you could package 
> whole widgets (or apps) as a single request.
> I'd suggest that this belongs in a lower level API such as the URIs and 
> network stack for the tags. You could specify a file within an archive 
> by adding an hash with the filename to the URI:
> <img src="http://someplace.com/somearchive.tgz#myimage.jpg" />
> <style type="text/css">
> #id { background-image: url(
> http://someplace.com/somearchive.tgz#mybackgroundimage.jpg); }
> </style>
> <script src="http://someplace.com/somearchive.tgz#myscript.js"
> type="text/javascript"></script>
> var img = new Image();
> img.src = "http://someplace.com/somearchive.tgz#myimage.png";
> Now which packaging format to use would be a discussion on it's own. An 
> easy route would be to use multipart/mixed that is already used for this 
> in e-mails and can also be gzipped using Content-Encoding.

This is out of scope for HTML5; I would recommend bringing this up in the 
context of the IETF.

On Thu, 30 Jul 2009, Kenneth Russell wrote:
> In the context of the 3d canvas discussions, it looks like there is a
> need to load binary blobs of vertex data and feed them to the graphics
> card via a JavaScript call. Here is some hypothetical IDL similar to
> what is being considered:
>     [IndexGetter, IndexSetter]
>     interface CanvasFloatArray {
>         readonly attribute unsigned long length;
>     };
>     interface CanvasRenderingContextGL {
>         ...
>         typedef unsigned long GLenum;
>         void glBufferData(in GLenum target, in CanvasFloatArray data,
> in GLenum usage);
>         ...
>     };
> Do you have some suggestions for how the data could be transferred most 
> efficiently to the glBufferData call? As far as I know there is no tag 
> which could be used to refer to the binary file within the archive. If 
> there were then presumably it could provide its contents as a 
> CanvasFloatArray or other type.

We are waiting for the File API specification to be stable, but one that 
exists, I would expect it to be used for this kind of thing:


Ian Hickson               U+1047E                )\._.,--....,'``.    fL
http://ln.hixie.ch/       U+263A                /,   _.. \   _\  ;`._ ,.
Things that are impossible just take longer.   `._.-(,_..'--(,_..'`-.;.'

More information about the whatwg mailing list