会话存储在每个 http 请求上获取和设置?

Posted

技术标签:

【中文标题】会话存储在每个 http 请求上获取和设置?【英文标题】:Session store get and set on every http request? 【发布时间】: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 请求上运行是否正常?每对都包含相同的数据。

【问题讨论】:

【参考方案1】:

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

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

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

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

【讨论】:

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

以上是关于会话存储在每个 http 请求上获取和设置?的主要内容,如果未能解决你的问题,请参考以下文章

PHP-会话技术

PHP-会话技术

春季请求和会话范围有啥区别?

Volley 请求不适用于 Django 会话

设置会话文化

PHP Laravel:如何设置或获取会话数据?