1 个不稳定版本
使用旧的 Rust 2015
0.1.0 | 2018年10月21日 |
---|
#582 in 压缩
19KB
383 行
Static FileZ
为静态文件构建压缩存档并在 HTTP 上提供服务
是什么以及为什么
假设你想要存储大量非常小的文件,你只在浏览器中查看这些文件。例如:你正在使用 rustdoc
来渲染库的文档。没有做太多工作,你最终会得到大约 100k 个文件,每个文件大约 10kB。实际上,这些小文件的数量对任何类型的文件系统性能来说都非常讨厌:最佳情况:复制/备份很慢。最坏情况:你正在使用防病毒软件,它需要很长时间。
除了实现软件时的便利性和人们习惯于查看文件外,几乎没有理由将这些文件单独存储。事实上,将这些文件以压缩形式存储在一个连续的存档中可以节省很多空间和时间。为此,只需要一些设计良好且易于发现的软件。
static-filez 是此类软件的原型。
安装
目前,可以使用以下命令安装:cargo install --git https://github.com/killercup/static-filez
。
用法
- 从目录构建存档(和索引):
static-filez build target/doc/ ./docs.archive
- 启动一个 HTTP 服务器,该服务器在存档中提供文件:
static-filez serve -p 3000 docs.archive
- 在浏览器中打开并查看文件:
http://127.0.0.1:3000/regex/
(regex
是一个阅读非常好的文档页面的示例)
架构
目前,static-filez 将生成两个文件:一个 .index
文件和一个 .archive
文件。
索引是一种专门的数据结构,它将路径映射到存档中的内容。
归档文件包含您文件的(压缩)内容。服务器实现的方式允许它直接提供压缩内容,而无需查看(可能更大的)原始解压缩数据。(如果您好奇,这是通过使用HTTP Content-Encoding头部实现的。)
您可以在这个问题中了解更多关于文件结构的信息,或者当然,查看源代码。
许可证
许可方式为以下之一
- Apache License, Version 2.0,(LICENSE-APACHE 或 https://apache.ac.cn/licenses/LICENSE-2.0)
- MIT许可证 (LICENSE-MIT 或 http://opensource.org/licenses/MIT)
您可选择。
贡献
除非您明确表示,否则根据Apache-2.0许可证定义,您提交的任何有意包含在作品中的贡献都将按上述方式双重许可,不附加任何额外条款或条件。
依赖项
约17MB
约272K SLoC