31 lines
1.1 KiB
Markdown
31 lines
1.1 KiB
Markdown
# HTTP resource pack server
|
|
|
|
A common scenario is that you have a set of static resources that you want to
|
|
serve up quickly via HTTP (for example: stylesheets, WASM).
|
|
|
|
This package provides a `net/http`-compatible `http.Handler` to do so, with
|
|
support for:
|
|
- compression
|
|
- gzip
|
|
- brotli, if you have the external compression binary available at pack time
|
|
- does not yet support Transfer-Encoding, only Accept-Encoding/Content-Encoding
|
|
- etags
|
|
- ranges
|
|
|
|
The workflow is as follows:
|
|
- (optional) build YAML file describing files to serve
|
|
- run htpacker tool to produce a single .htpack file
|
|
- create `htpack.Handler` pointing at .htpack file
|
|
|
|
The handler can easily be combined with middleware (`http.StripPrefix` etc.).
|
|
|
|
## Range handling notes
|
|
|
|
Too many bugs have been found with range handling and composite ranges, so the
|
|
handler only accepts a single range within the limits of the file. Anything
|
|
else will be ignored.
|
|
|
|
The interaction between range handling and compression also seems a little
|
|
ill-defined; as we have pre-compressed data, however, we can consistently
|
|
serve the exact same byte data for compressed files.
|