安装

npm i koa-static

一般建议创建一个目录专门保存静态文件,比如目录名:static

static一般放在最末尾use激活,表示如果前面的路由设置,或其他的都没有对应的,就进入的请求文件这。

const Koa = require("koa");
const static = require("koa-static");


const server = new Koa();
server.listen(8080);


server.use(require("./router"));

server.use(static("./static", {
    maxage: 30 * 24 * 60 * 60 * 1000, //30天缓存周期
    index: "index.html" //默认文件
}))

static有两个参数,第一个为静态文件的路径,我们指定一个目录。第二个是配置文件,键值对,两个属性,一个是maxage,一个是index

maxage

缓存时间,我们都知道浏览器会缓存文件,这个文件一般都是后台给浏览器一个信息,这个文件可以缓存几天,然后浏览器将文件缓存,下次进入的时候,浏览器还是会发送一个请求给后台并且附带一个时间,如果时间没有过期,那么后端返回304,body为空。

如果过期了,后端会重新发送新的内容。

maxage是一个毫秒值,我们可以自由设置过期的时间。

index

默认返回的内容,如果请求的是/根目录,可以指定返回一个默认文件,不过用的也不多。

针对不同文件进行缓存

图片文件和js文件,一般图片文件很少变化,js文件确容易变化,所以对应的缓存时间也不相同,我们可以针对性的设置。

router.all(/\.(jpg|png|gif)$/i, static("./static", {
    maxage: 10 * 24 * 60 * 60 * 1000 //10天
}))

router.all(/\.css$/i, static("./static", {
    maxage: 7 * 24 * 60 * 60 * 1000 //7天
}))

router.all(/\.js$/i, static("./static", {
    maxage: 1 * 24 * 60 * 60 * 1000 //1天
}))

router.all(/\.html$/i, static("./static", {
    maxage: 1 * 24 * 60 * 60 * 1000 //1天
}))

router.all("*", static("./static", {
    maxage: 7 * 24 * 60 * 60 * 1000 //7天
}))

利用路由的all方法,所有的路径请求都要经过他,然后通过正则判断是什么文件,传入不同的static方法,每个方法都有自己的缓存时间,这样就达到了不同文件,缓存时间不同。

由于9.4.0时,通配符取消了,改为了正则的字符,于是*要改为"/(.*)"这样才行,不然会报错。

router.all("/(.*)", static("./static", {
    maxage: 7 * 24 * 60 * 60 * 1000 //7天
}))
分类: Node 标签: nodekoakoa-static

评论

暂无评论数据

暂无评论数据

目录