koa-send源码分析
2023-04-18 14:53:20 时间
通常我们在做静态文件服务的时候,首选CDN。当文件内容需要经常变动时,则可以采用nginx代理的方式。node本身也可以搭建静态服务,用koa static可以很容易实现这个功能。
koa static是一个koa中间件,内部是对koa send的封装。koa static本身只做了一层简单的逻辑,所以这篇文章主要分析一下koa send的实现方式。
如果让我们自己实现这个功能,也很简单,逻辑就是根据用户请求路径,找到文件,然后做一个文件流的响应。
koa send的实现也大概是这个思路,另外多了一些基于http协议的处理,当然,阅读koa send的源码,还是有一些意外的收获。
koa send源码很简洁,唯一暴露了一个工具函数send
,send
函数大致结构如下:
async function send(ctx, path, opts = {}) {
// 1、参数path校验
// 2、配置opts初始化
// 3、accept encoding处理
// 4、404、500处理
// 5、缓存头处理
// 6、流响应
}
第1步和第2步是koa send本身的一些配置的处理,代码比较啰嗦,我们可以忽略。
第3步,主要是根据请求头进行处理,如果用户浏览器支持br或者gzip的压缩方式,koa send会判断是否存在br或者gz格式文件,如果存在会优先响应br或者gz文件。
第5步,会设置协商缓存和强制缓存,代码很简单不解释,不过这里面有一个之前没遇到的知识点,koa send设置的会有类似的值,表示永不改变,浏览器永不需要请求资源,这个感觉可以配合带hash或者版本号的资源使用。
相关文章
- 为什么我喜欢用bspwm来做我的Linux窗口管理器
- 前雅虎CTO发布Hadoop云服务Altiscale
- 微软进一步移除画图 3D 软件在 Windows 10 中的集成
- 绿色干净的下载工具!一款良心的开源BT下载器
- R语言进阶之5:表达式、数学公式与特殊符号
- 这11款Chrome神器,用起来爽到爆
- 你需要知道的找出Windows版本号的11种方法,值得收藏
- Windows10系统,插入耳机后发现没声音怎么办,通过以下设置解决问题
- 技术小白:Hadoop 到底是啥?
- Hadoop 2.0 Yarn代码:心跳驱动服务分析
- 谷歌推出全新 Cookie 替代技术,Edge、Safari、Firefox 浏览器都表示拒绝
- Firefox 88 火狐浏览器将禁用 FTP,6 月份将全面删除相关代码
- Windows 10 KB5001330 更新出现 Bug,可能导致游戏崩溃
- 微软 Edge 90 正式版发布:新增下载管理菜单,字体渲染更清晰
- 强烈建议收藏!免费还优秀的生产力工具,MacOS系统软件推荐
- Windows 10电脑,发现ipv6无Internet访问权限怎么回事,又该怎么解决
- Hadoop版本及cloudera的CDH3 CDH4
- Hadoop 2.0基本术语解释
- 电脑安装了Windows 10教育版操作系统,发现系统没有激活,如何激活?
- Zeit - Linux中定时任务和临时任务的图形化工具