Koa 静态缓存
Koa的静态服务器.
本图书馆与其它图书馆如: 静态数字 :
- 没有目录或
index.html支助. - 您可以选择将数据存储在内存中 - 它默认会流出 .
- 初始化时切换资产 - 您需要重新启动更新资产的进程 。 (可以用选项关闭 。 preload = false)
- 使用MD5散列总和作为ETag.
- 如果磁盘上显示使用. gz 文件, 如 nginx gzip static 模块
安装
$ npm install koa-static-cache
API 密码
静态缓存( dir [, 选项] [, 文件])
var path = require('path')
var staticCache = require('koa-static-cache')
app.use(staticCache(path.join(__dirname, 'public'), {
maxAge: 365 * 24 * 60 * 60
}))
dir(str) - 您想要服务的目录,优先级比options.dir。 。 。 .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) - 可选文件对象. 见下文.files(obj) - 可选文件对象. 见下文.
别名
例如,如果您有此异名对象:
{
'/favicon.png': '/favicon-32.png'
}
然后请求 /favicon.png 将实际返回 /favicon-32.png 没有方向什么的.
这在服役时特别重要 图像 因为你不想存储重复的图像.
文件
您可以通过可选文件对象. 这样你就可以做两件事:
将目录合并为一个中间软件
而不是做:
app.use(staticCache('/public/js'))
app.use(staticCache('/public/css'))
你可以做到这一点:
var files = {}
// Mount the middleware
app.use(staticCache('/public/js', {}, files))
// Add additional files
staticCache('/public/css', {}, files)
好处是,在堆栈中增加一个更少的功能, 以及做一个散列检查而不是两个.
编辑文件对象
例如,如果您想要更改最大年龄 /package.json,可以做到以下几点:
var 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)。 。 。 .
var LRU = require('lru-cache')
var files = new LRU({ max: 1000 })
app.use(staticCache({
dir: '/public',
dynamic: true,
files: files
}))
许可证
《麻省理工学院许可证》
版权 (c) 2013 Jonathan Ong 我@jongleberry.com (英语)
特此免费准许任何人获得副本 ,用于处理 在软件中不受限制,包括不受限制的权利 使用、复制、修改、合并、出版、分发、分许可证和/或出售 软件的复制件,并允许该软件所针对的人 满足下列条件:
上述版权通知和本许可通知应列入 软件的所有副本或大部分.
软件是提供的"AS IS", 没有任何的恐惧, EXPRESS OR ,包括但不限制于雇佣军的保障, 特别目的和非目的的证明。 绝对不会 B. 任何索赔、索赔或其他索赔的索赔人或 责任,在契约、契约或其他行为中,产生于, 或与溶剂或溶剂的使用或 软件.