Repository navigation
修改了一下@midwayjs/static-file 这个组件,发现自定义组件中使用中间件,为什么resolve函数每次request都会执行? #4584
Replies: 2 comments 1 reply
|
感谢反馈,我看了下描述和附件,这里可能是两个问题。
按 Midway 当前机制,如果是在组件的 app.getMiddleware().insertFirst(YourMiddleware);这类方式注册全局中间件, Koa/Egg 根中间件每次请求会进入 如果你这里看到每次请求都会触发,大概率是中间件被放到了每次请求动态
有复现后我们可以进一步确认是框架缓存逻辑的问题,还是组件中间件注册方式导致的行为差异。 |
|
我用一个本地 v4 Koa 项目又复现了一下,结论是目前没有复现 复现方式大概是:
日志结果是: [repro] StaticMiddleware.resolve count=1
[repro] static range middleware request count=1 path=/public/hello.txt
[repro] static range middleware request count=2 path=/public/hello.txt
[repro] static range middleware request count=3 path=/
[repro] static range middleware request count=4 path=/也就是说,class middleware 的 你那边可以再确认一下 log 是不是打在 |
Uh oh!
There was an error while loading. Please reload this page.
最近使用@midwayjs/static-file组件怎么都没配成功这个alias映射,看了下koa-static-cache 好像路径匹配有点不合理,原代码也就一个文件就直接拷贝出来改下了一下去除了原来的一些包,太老了,基于@midwayjs/static-file 这个组件又封装了一个新组件,在测试的时候看到自定义组件中注册的中间件为什么resolve函数每次request都会执行初始化?这样应该不合理吧。在主项目写的middleware就正常的,只执行一次,另外附上修改后的@midwayjs/static-file,有可能合并一下。
static-file.zip
All reactions