KoaPageCache
koa 页面缓存
包含路径缓存和静态文件缓存两个中间件
安装
npm i koa-page-cache
路径缓存
- 把页面内容缓存到内存,或者缓存到落地文件
- 给页面返回etag或者max-age,使浏览器也缓存页面
- 当页面程序报错,用缓存内容替换报错页面
- 自定义页面报错事件
- 配置页面缓存Key策略
- //TODO:自定义页面缓存Key
- //TODO:gzip压缩和br压缩
使用方法
const Koa = ;const pagecache = const app = ; const mypagecache = cachetime: 60 etag: true app app; app;
如果使用koa-router
const Koa = ;const pagecache = const Router = ; const app = ; const mypagecache = cachetime: 60 etag: true let router = ; router; app ;
参数说明
- cachetime 页面缓存时间,默认0,不起用缓存,本中间件没用,单位秒,大于零则启用
- maxage 返回头设置maxage,默认0,不起用maxage,单位秒,大于零则启用
- filecachefolder 落地缓存文件夹地址,默认空,不起用落地缓存,不为空则启用
- etag 页面返回头设置etag,默认false,设置成true则启用
- planlocal 如果页面报错,则用缓存内容替代抛出错误,默认false,不起用,设置成true启用,如果没有启用落地文件缓存,则抛出错误
- onPlanLocal 如果启动了planlocal则执行此函数,参数传入ctx和key
- onerror 当页面报错时调用的函数,接收ctx,error当参数,默认不处理报错,抛出
- urlkey url当作key的规则,如下:
urlkey: protocol: false //加入protocol部分 host: false //加入host部分 pathname: true //加入pathname部分 search: true //加入search部分
实例属性
- middleware koa中间件
实例方法 #TODO
- getKey(url) 传入一个url,返回缓存key
- async getMemCache(key) 获取内存缓存
- async getFileCache(key) 获取落地文件缓存
- async clearMemCache(key) 清除内存缓存
- async clearFileCache(key) 删除落地文件缓存
额外说明
- 落地文件缓存没有过期时间,只会存储最后一次的内容,文件名不变
静态文件映射和缓存
- 设置一个本地文件夹,里面的静态文件映射成url路径
- 设置etag或者max-age,使浏览器也缓存静态文件
- 支持直接把less文件映射成编译后的css
- 支持把静态文件缓存进内存
- 支持gzip压缩
- TODO: 映射多个本地文件夹
- TODO: br压缩 等到node v11之后再做,那时候可能原生支持brotli算法
- TODO: base64小图片进css
- TODO: 文件合并功能
- TODO: 把静态文件缓存进内存(永久)
- TODO: CSS压缩
使用方法
const Koa = ;const pagecache = const app = ; const mypagecache = cachetime: 60 folder: './test/public/' maxage: 60 etag: true less: true gzip: true uglifyjs: true app app; app;
参数说明
- cachetime 文件缓存进内存的时间,默认0,不进内存,如果静态文件很大的话,不建议开启
- maxage 返回头设置maxage,默认0,不起用maxage,单位秒,大于零则启用
- etag 页面返回头设置etag,默认false,设置成true则启用
- folder 静态文件的文件夹,必填
- less 把对应的less静态文件映射成编译后的css文件,默认false
- route 静态文件path的路由,默认根文件夹
- gzip 是否开启gzip压缩,默认false。注意开启压缩之后,cachetime设置不宜过短,不然服务器要频繁压缩静态文件。如果静态文件太多,也建议在nginx上面开启gzip压缩而不是node上
- uglifyjs 是否开启js文件的uglifyjs压缩,默认false。uglifyjs压缩比较消耗性能,如果js文件过多,请不要开启。判断是不是js文件的方法是看后缀名是不是js,如果不是则不会启用此压缩
实例属性
- middleware koa中间件