鸡蛋/可口-静态-缓存
静态缓存中间软件为可口.
本图书馆与其它图书馆如: 静态数字 :
- 没有目录或
index.html支助. - 您可以选择将数据存储在内存中 - 它默认会流出 .
- 初始化时切换资产 - 您需要重新启动更新资产的进程 。 (可以用选项关闭 。 preload = false)
- 使用MD5散列总和作为ETag.
- 用途
.gz如果在磁盘上显示文件, 如 nginx gzip static 模块
从 https://github.com/koajs/ static-cache 页面存档备份,存于互联网档案馆,与 TypeScript 重构,以支持共同JS和无害环境管理.
安装
npm install @eggjs/koa-static-cache
API 密码
静态缓存( [选项])
const path = require('path');
const { staticCache } = require('@eggjs/koa-static-cache');
app.use(
staticCache(path.join(__dirname, 'public'), {
maxAge: 365 * 24 * 60 * 60,
}),
);
options.dir(str) - 您想要服务的目录, 默认为process.cwd。 。 。 .options.maxAge(int) - 文件的缓存控制最大年龄,0默认.options.cacheControl(str) - 可选缓存控制头. 覆盖options.maxAge。 。 。 .options.buffer(bool) - 将文件存储在内存中,而不是在每个请求中从文件系统流出.options.gzip(bool) - 当请求的接受-编码包括gzip时,文件会被gzip压缩.options.usePrecompiledGzip(bool) - 尝试使用 gzip 文件, 从磁盘中装入, 如 nginx gzip staticoptions.alias(obj) - 异名对象地图. 见下文.options.prefix(str) - 您想要添加的 url 前缀, 默认为''。 。 。 .options.dynamic(bool) - 在初始化时没有缓存的动态负载文件.options.filter(函数 QQ 阵列) - 过滤文件在 init dir, 例如 - 跳过非构建( source) 文件 。 如果数组设置 - 只允许列出文件options.preload(bool) - 在初始化或不初始化时缓存资产,默认为true总是与options.dynamic。 。 。 .options.files(obj) - 可选文件对象. 见下文.
别名
比如,如果你有这个 alias 对象 :
const options = {
alias: {
'/favicon.png': '/favicon-32.png',
},
};
然后请求 /favicon.png 将实际返回 /favicon-32.png 没有方向什么的.
这在服役时特别重要 图像 因为你不想存储重复的图像.
文件
您可以通过可选文件对象. 这样你就可以做两件事:
将目录合并为一个中间软件
而不是做:
app.use(staticCache('/public/js'));
app.use(staticCache('/public/css'));
你可以做到这一点:
const files = {};
// Mount the middleware
app.use(staticCache('/public/js', {}, files));
// Add additional files
staticCache('/public/css', {}, files);
好处是,在堆栈中增加一个更少的功能, 以及做一个散列检查而不是两个.
编辑文件对象
例如,如果您想要更改最大年龄 /package.json,可以做到以下几点:
const files = {};
app.use(
staticCache(
'/public',
{
maxAge: 60 * 60 * 24 * 365,
},
files,
),
);
files['/package.json'].maxAge = 60 * 60 * 24 * 30;
启用动态模式时使用 LRU 缓存来避免 OOM
您可以在一个有拖动方法的 lu 缓存实例中通过 : get(key) 财务报告和审定财务报表 set(key, value)。 。 。 .
const LRU = require('lru-cache');
const files = new LRU({ max: 1000 });
app.use(
staticCache({
dir: '/public',
dynamic: true,
files,
}),
);
许可证
贡献者
制造的 贡献者-img。 。 。 .