有没有一种方法可以从Node.js响应中筛选出include和脚本文件?

从中间件模块中,我试图计算从父应用程序所做的页面请求的数量。 把它看作一个通用的请求监视器,对父服务的页面一无所知。 我的初始刺戳只是简单地听取了请求,并增加了每个响应的计数器,结果发现每个页面请求都会从所有包含的请求(favicon.ico,脚本文件等等)中生成n个额外的响应。 我期望,但希望有一种方法来过滤掉辅助文件。

有没有办法区分它们,以便我可以忽略包含在我的数量的文件?

到目前为止,我已经使用request和express-req-metrics中间件来查看响应属性,但还没有看到任何有用的属性。

如果您使用中间件来提供静态资产,那么一种解决scheme就是重新对中间件进行重新sorting,以便静态资产请求永远不会将其发送给您的计数器中间件(如果它们由上游中间件处理):

var counter = 0; app.use(serveStatic('public')); app.use(function(req, res, next) { counter++; next(); }) // ... routes defined down here ... 

然而,一个缺点是,如果你没有一个favicon.ico文件,serveStatic中间件将不能处理请求,你的计数器中间件会计数这些请求。

另一种解决scheme是编写计数器中间件,以便首先检查请求path,以确保path不以“.ico”,“.js”,“.jpg”等结尾。这里我只是使用一个基本的常规expression:

 var counter = 0; app.use(function(req, res, next) { if (! /(.ico|.js|.css|.jpg|.png)$/i.test(req.path)) { counter++; } next(); }) // ... routes defined down here ...