Decide whether to open the dataset browser or load src directly.
Order of checks:
Synchronous URL classification — empty / trailing-slash URLs are
always must-browse, no need to probe.
Zipped stores load directly — see below.
A .zarr-suffixed URL loads directly — see below.
HEAD-probe the store markers ONE AT A TIME, format 3 first
(STORE_MARKERS); the first 2xx returns false (load directly).
If every probe fails, or one hangs past its own 5 s budget (the server
is not answering, so the next marker would hang too), fall through to
true (show the browser — likely a directory listing or non-zarr URL).
Sequential, not parallel: each miss is a console HEAD … 404 the user sees
(and reports), and the URLs that reach this probe are mostly suffix-less
store roots — luxar serve mounts the store at /, an exported folder at
/data. A parallel probe of all three markers logged two 404s on EVERY such
load of a format-3 store; v3-first logs none. A format-2 store pays one miss
(zarr.json) and one extra round trip, once, before its first byte; a
format-2 store with root attributes but no .zgroup pays two.
Decide whether to open the dataset browser or load
srcdirectly.Order of checks:
.zarr-suffixed URL loads directly — see below.false(load directly).true(show the browser — likely a directory listing or non-zarr URL).Sequential, not parallel: each miss is a console
HEAD … 404the user sees (and reports), and the URLs that reach this probe are mostly suffix-less store roots —luxar servemounts the store at/, an exported folder at/data. A parallel probe of all three markers logged two 404s on EVERY such load of a format-3 store; v3-first logs none. A format-2 store pays one miss (zarr.json) and one extra round trip, once, before its first byte; a format-2 store with root attributes but no.zgrouppays two.