【问题标题】:Express.js is the session and cookie used by the static file middleware?Express.js是静态文件中间件使用的session和cookie?
【发布时间】:2014-09-15 05:58:07
【问题描述】:

使用以下 express.js 应用程序:

app.use( cookieParser );
app.use( session( /*options*/) );
app.use( serveStatic( './dir' ) );

app.get( '/foo', onlyLogicThatNeedsSession )

我认为即使在提供静态文件时也会获取会话数据。

1:正确吗?

如果是这样,这意味着应用程序的结构会更好:

app.use( serveStatic( './dir' ) );

app.get( 'foo', cookieParser, session, onlyLogicThatNeedsSession )

2:会带来性能优势吗? IE。如果会话存储是redis,那么在提供静态文件时redis服务器不会被击中?

【问题讨论】:

    标签: node.js session cookies express


    【解决方案1】:

    是的,中间件是按顺序执行的,所以理想情况下,您应该将静态中间件放在最顶部,这样您就可以绕过任何不必要的额外请求处理。

    【讨论】:

    • 这不意味着文件系统会被每个请求命中吗?
    • 是的,因为无法知道请求是否针对文件。我想您可以编写自己的静态服务中间件,该中间件使用观察者来监视目录中的文件/目录更改并保持这些文件列表缓存(以避免每个请求都使用fs.stating)。但是,这可能会变得非常笨拙...
    • 当然。只是想知道是否有更好的中间件分组方式?一种添加一个包含许多中间件的中间件的方法。我知道 express 应用可以嵌套,但这似乎有点过头了。
    • 我不确定分组中间件如何帮助解决问题。
    猜你喜欢
    • 1970-01-01
    • 2012-05-13
    • 2018-09-21
    • 1970-01-01
    • 2017-05-16
    • 2016-01-15
    相关资源
    最近更新 更多