【问题标题】:Session store get and set on every http request?会话存储在每个 http 请求上获取和设置?
【发布时间】:2013-02-02 07:37:14
【问题描述】:

我正在使用带有https://github.com/visionmedia/connect-redis 的node.js 在redis 中存储会话变量。

我运行redis-cli monitor 并注意到在单个页面加载时,有3 组getsetex 命令正在执行。这 3 个集合来自我的页面加载时发出的 3 个 http 请求(favicon.ico/index.css)。

我的问题:redis getsetex 在每个 http 请求上运行是否正常?每对都包含相同的数据。

【问题讨论】:

    标签: node.js session redis


    【解决方案1】:

    您看到的 3 个 HTTP 获取对于 Web 应用程序来说是正常的。

    您可以在您的 favicon.ico 上设置一个非常长的过期日期,以便浏览器只请求一次。

    对于静态资产(即 CSS、JS、图像),您可以这样做或将它们放在不同的域(或子域)中

    请注意,如果您在 CSS/JS 文件上设置了很长的到期日期,浏览器将不会再次请求它,并且您可能会遇到奇怪的“问题”,在这些问题中您更改了 CSS/JS 文件并且浏览器可能无法获取更新的文件。这是许多网站“版本”其 CSS 文件(例如,styles-2013-02-17.css)的原因之一,以便在进行更改时可以使用不同的文件名。

    【讨论】:

    • 谢谢,但这如何解释 redis 执行获取和设置? redis 不应该只在请求页面而不是静态文件时获取吗?它不应该只在我明确要求时设置吗?
    • 如果没有看到您的代码,这很难说。你用的是快递吗?如果是这样,您可能需要在会话内容之前声明静态文件处理程序。
    • 我正在使用 express,将静态文件处理程序放在我的会话内容之前将其减少到 2 个请求。看起来我越来越近了。
    • 这应该可以帮助您摆脱第二个请求(如果第二个请求是针对 favicon)stackoverflow.com/questions/11658035/…
    • 解决了!使用该链接中提供的网站图标解决方案并将其和静态服务声明放在 app.configure 的最顶部和会话存储解决问题之前。
    猜你喜欢
    • 1970-01-01
    • 2021-05-30
    • 2020-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-17
    • 1970-01-01
    • 2012-05-09
    相关资源
    最近更新 更多