reyk / httpd

OpenBSD httpd
Other
314 stars 31 forks source link

precompressed static files #80

Open anatoli26 opened 5 years ago

anatoli26 commented 5 years ago

I know the answer about dynamic compression (#21). What about serving precompressed static files like the nginx 's gzip_static module (https://nginx.org/en/docs/http/ngx_http_gzip_static_module.html)?

Basically, if the client asks for /styles.css while indicating in Accept-Encoding that it's willing to accept gzip and there's /styles.css.gz file on disk, the server takes this .gz file and serves it to the client with a corresponding Content-Encoding header.

clarfonthey commented 4 years ago

Perhaps this could be done in an encoding-agnostic way?

I'd think of it something like encoding "gzip" suffix ".gz" would do so with gzip, although you could also do encoding "compress" suffix ".lzma" for example.

anatoli26 commented 4 years ago

Perhaps this could be done in an encoding-agnostic way?

Good idea. There could be multiple directives for this functionality, like gzip_static on, lzma_static on, etc.

hucste commented 4 years ago

And too, about precompressed static files with brotli.

stokito commented 3 years ago

There could be multiple directives

IMHO any directives aren't needed and it's better to have a file names convention to keep httpd plain. When GET /some_file.txt can just check if there is a /some_file.txt.gz or /some_file.txt.br and return it's content. Other compression algorithms (LZ4, deflate) doesn't make any sense for pre-compresses files. Only Opera browser supports LZMA and maybe in future zstd will be supported by browsers.

Even if user do want to get the /some_file.txt.gz archive itself it still can get it because there is no /some_file.txt.gz.gz in the same folder.

Such approach is used in BusyBox htttpd.