随着互联网技术的不断发展,前端技术也在不断的更新和迭代。在开发网站和前端应用时,静态资源是不可或缺的一部分。静态资源包括图片、样式表、JavaScript 等,一般是要通过 HTTP 请求才能访问到的。然而,如果每一次请求都需要经过 server 处理,将是极其浪费资源的。因此,将静态资源托管到 CDN 上以加快其访问速度,提高用户体验,也是非常必要的。
在 Koa2 的实现中,使用 koa-static 来进行静态资源托管。
安装
npm install koa-static --save
使用
const Koa = require('koa'); const serve = require('koa-static'); const app = new Koa(); app.use(serve(__dirname + '/public')); app.listen(3000, _ => console.log('server is running at http://localhost:3000'));
在这段代码中,我们新建了一个 Koa 实例,并且使用 koa-static 中间件来处理来自 public 目录下的静态资源。其中,__dirname
为 Node.js 全局变量,表示当前执行文件所在的目录。
这样,就可以通过访问 localhost:3000 来访问到 public 目录下的静态资源了。
坑点总结
注意路径问题
在使用 koa-static 时,路径问题会导致访问不到对应的静态资源。需要注意以下两点:
使用绝对路径时,需要将路径用
path
模块拼接。const path = require('path'); app.use(serve(path.join(__dirname, '/public')));
如果使用相对路径,则需要注意 koa-static 的
root
参数默认值是 process.cwd(),这个值是执行命令时所在的位置,所以要根据实际文件的位置灵活确定。
注意文件类型
koa-static 默认只会托管 png、gif、jpg、jpeg、html、css、js、ico 这几种类型的文件。如果需要托管其他类型的文件,需要手动设置,例如:
app.use(serve(__dirname + '/public', { extensions: ['mp3'] }));
在这里,我们使 koa-static 托管 mp3 文件。
注意缓存问题
在托管静态资源时,为了加快访问速度,CDN 会缓存静态资源文件。而当静态资源文件发生更新时,CDN 缓存还未过期时的访问者依然会得到旧的版本,导致问题。
为了避免这种问题,需要设置缓存策略。可设置 maxage
表示缓存时长,例如:
app.use(serve(__dirname + '/public', { maxage: 60 * 60 * 24 * 30 // 缓存30天 }));
注意安全问题
koa-static 是无法控制访问权限的,所以在手动设置文件跟路径或者不想暴露的目录,需要自行添加中间件(如 koa-body)进行过滤,防止资源泄露。
总结
koa-static 是 koa2 静态资源托管的主要中间件。使用它可以快速地将静态资源上传至 CDN,以提高网站性能。但是需要注意路径问题、文件类型、缓存和安全问题等。为此,我们需要仔细学习并深入理解每一个知识点,以运用于实际项目中。
最后,给出一个完整的示例代码:
-- -------------------- ---- ------- ----- ---- - ---------------- ----- --- - --------------- ----- ----- - ---------------------- ----- --- - --- ------ ---------------------------------- ----------- - ------- -- - -- - -- - --- -- ----- ----------- ------- -- ------- ---- ---------------- - -- ------------------- -- ------- -- -------------------------
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6651cba2d3423812e462d607