在中间件模块中,我正在尝试计算从父应用程序发出的页面请求数。可以将其视为通用请求监视器,它对父服务的页面一无所知。我对它的初步尝试只是听取了请求,并在生成每个响应时递增了一个计数器,结果发现每个页面请求都生成了来自所有包含请求(favicon.ico,脚本文件等)的许多其他响应。我希望如此,但希望有一种方法来过滤掉辅助文件。
有没有办法区分它们,以便我可以忽略计数中包含的文件?
到目前为止,我已经使用了请求和express-req-metrics中间件来查看响应属性,但还没有看到任何有用的属性。
答案 0 :(得分:1)
如果您使用中间件来提供静态资产,那么一种解决方案就是 只需重新排序中间件,以便静态资产请求永远不会成功 到您的柜台中间件(如果它们由上游中间件处理):
<?xml version="1.0" encoding="utf-8"?>
<datastore-indexes
autoGenerate="true">
<datastore-index kind="MyEntity" ancestor="false" source="manual">
<property name="OtherEntityRef" direction="asc"/>
<property name="price" direction="asc"/>
</datastore-index>
</datastore-indexes>
然而,一个缺点是,如果您没有var counter = 0;
app.use(serveStatic('public'));
app.use(function(req, res, next) {
counter++;
next();
})
// ... routes defined down here ...
文件
例如,serveStatic中间件将不处理请求和您的计数器
中间件会计算这些请求。
另一个解决方案是编写您的计数器中间件,以便进行检查 请求路径首先确保路径不会结束 '.ico','。js','.jpg'等。这里我只使用一个基本的正则表达式:
favicon.ico