file serving middleware for koa2
npm install koa2-file-servernpm install koa2-file-server --save
``javascript`
//babel.app.js
require("babel-core/register")({
presets: ['es2015-node5', 'stage-3'],
ignore: function (fileName) {
return /\/node_modules\//.test(fileName) && !/\/node_modules\/koa2-file-server\//.test(fileName);
}
});
require('./app.js');
`javascript
//app.js
"use strict";
const Koa = require('Koa');
const path = require('path');
const serve = require('koa2-file-server');
const app = new Koa();
app.use(serve(path.join(__dirname, 'public'),{
webp: true,
identifier: '??',
maxAge: 60 60 24 * 30,
cache: {
dirName: '__cache',
maxAge: 1000 60 60,
maxSize: 1024 1024 500
}
}));
app.listen(8000);
`
静态文件根目录,默认值: process.cwd()。
- webp 是否在支持webp的客户端下返回webp格式的图片,默认值: true。
- identifier 文件合并请求标识符,默认值: ??。
- maxAge 浏览器缓存时间,单位秒,默认值: 2592000 s
- cache 服务器缓存
- dirName 持久化文件存放目录名,默认: __cache
- maxAge 缓存最高存放时间,单位毫秒,默认: 3600000 ms
- maxSize 缓存总大小上限,当达到上限后会清理所以缓存,单位字节,默认: 524288000 Byte文件合并接口
说明:只支持 .js 和 .css 文件标识符:
??分隔符:
,合并请求:
http://localhost:3000/test/??a.js,b.js or http://localhost:3000/??test/a.js,test/b.js图片处理接口规格
说明:对GIF图片处理操作无效,会直接返回原图。`javascript
imageView/auto-orient
/thumbnail/
/strip
/gravity/
/crop/
/rotate/
/format/
/blur/x
/interlace/
/quality/
`参数名称 | 说明
------------------------------------ | ------------------------------------------------------------------------------------
/auto-orient | 建议放在首位,根据原图EXIF信息自动旋正,便于后续处理。
/thumbnail/ | 参看缩放操作参数表,默认为不缩放。
/strip | 去除图片中的元信息去掉的信息有:bKGD、cHRM、EXIF、gAMA、iCCP、iTXt、sRGB、tEXt、zCCP、zTXt、date
/gravity/ | 参看图片处理重心参数表,目前只影响其后的裁剪偏移参数,默认为左上角NorthWest。
/crop/ | 参看裁剪操作参数表,默认为不裁剪。
/rotate/ | 旋转角度,取值范围为1-360,默认为不旋转。
/format/ | 图片格式,支持jpeg、gif、png、webp、tiff、bmp、svg,默认为原图格式。
/blur/ | 高斯模糊参数,是模糊半径,取值范围为1-50。是正态分布的标准差,必须大于0。
/interlace/ | 取值1,创建一个交错PNG或渐进显示的JPEG图像。
/quality/ | 新图的图片质量,取值范围是[1, 100]。支持图片类型:jpeg,png,tiff。$3
参数名称 | 说明
------------------------------ | -------------------------------------------------------------------
/thumbnail/
| 基于原图大小,按指定百分比缩放。取值范围为0-1000。
/thumbnail/ | 以百分比形式指定目标图片宽度,高度不变。
/thumbnail/ | 以百分比形式指定目标图片高度,宽度不变。
/thumbnail/ | 当原图宽度小于指定宽度则不变,反之按宽度等比例缩放。
/thumbnail/ | 指定目标图片宽度后高度等比缩放。
/thumbnail/x | 指定目标图片高度后宽度等比缩放。
/thumbnail/ | 限定长边,短边自适应缩放,将目标图片限制在指定宽高矩形内。
/thumbnail/ | 限定短边,长边自适应缩放,目标图片会延伸至指定宽高矩形外。
/thumbnail/ | 限定目标图片宽高值,忽略原图宽高比例,按照指定宽高值强行缩略,可能导致目标图片变形。
/thumbnail/ | 当原图尺寸大于给定的宽度或高度时,按照给定宽高值缩小。
/thumbnail/ | 当原图尺寸小于给定的宽度或高度时,按照给定宽高值放大。
/thumbnail/@ | 按原图高宽比例等比缩放,缩放后的像素数量不超过指定值。$3
注意:该选项只影响其后的裁剪操作,即裁剪操作以gravity为原点开始偏移后,进行裁剪操作。参数名称 | 参数值
---- | ---------
左上角 | NorthWest
正上方 | North
右上角 | NorthEast
正左方 | West
正中 | Center
正右方 | East
左下角 | SouthWest
正下方 | South
右下角 | SouthEast
$3
参数名称 | 说明
-------------------------------- | -----------------------------------------------
/crop/ | 指定目标图片宽度,高度不变。
/crop/x | 指定目标图片高度,宽度不变。
/crop/ | 同时指定目标图片宽高。
/crop/ | 同时指定目标图片宽高。相对于偏移锚点,向右偏移x个像素,同时向下偏移y个像素。缓存处理
为了减少磁盘io,对文件进行了缓存。如果文件在缓存有效期内被改变,只能清除缓存,否则请求没有任何改变。staticCache API 缓存key: filePath
`javascript
"use strict";import path from 'path';
import Koa from 'koa';
import serve,{staticCache} from 'koa2-file-server';
const app = new Koa();
app.use(serve(path.join(__dirname, 'public')));
staticCache.reset(); //清除所有缓存
staticCache.del('key'); //清除指定缓存
app.listen(8000);
`图片处理后的图片会持久化存放,只好定期清除
__cache`目录下的文件,不然磁盘占有量会越来越大。