htpack/README.md

31 lines
1.1 KiB
Markdown
Raw Permalink Normal View History

2019-02-23 13:47:59 +00:00
# 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).
2019-02-23 13:47:59 +00:00
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
2019-02-23 13:47:59 +00:00
The workflow is as follows:
- (optional) build YAML file describing files to serve
2019-02-23 13:47:59 +00:00
- 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.