【问题标题】:Storing XML into ASP Session variable将 XML 存储到 ASP 会话变量中
【发布时间】:2011-03-20 17:21:51
【问题描述】:

在我的网站上,我将有许多会话变量,我需要在每次页面加载时访问它们。我不想一遍又一遍地调用数据库,而是将此信息保存到会话变量中。

我不想创建 30 个不同的 Session 变量,所以我正在考虑将类似的变量存储到 xml 文档中,然后存储到 Session 变量中。像这样……

Session("UserRights") = "<xml><canEdit>1</canEdit><foo>bar</foo></xml>"
Set oDOM = Server.CreateObject("MSXML2.FreeThreadDOMDocument.3.0") 'etc...

这是个好主意吗?通过在每个页面加载时解析这个 xmlString,我会受到更大的性能影响吗?我知道我不应该将对象(如字典)存储到会话中(这就是我选择 xml 字符串的原因),但我需要一种新方法......

该网站目前是用经典的 asp 编写的,但我们使用 (aspcompat="true") 正在减慢迁移到 asp.net 的速度。这不是最好的迁移方法,但我们需要赶上最后期限。

谢谢你的建议

【问题讨论】:

    标签: xml asp-classic session-variables


    【解决方案1】:

    您的会话变量也存储在数据库中,因此您不必保存数据库命中。并且解析确实需要时间(您必须测量它以查看它是否明显)。

    我有类似的情况,我有必须从一个页面移动到另一个页面的用户的联系信息。一旦我从数据库中检索到它,我就会将它放入看起来像Session("user.first-name")Session("user.last-name")Session("user.address") 等的会话变量中。我测试了一个特定变量(“user.id”)以确保会话没有t 过期了。所以if IsEmpty(Session("user.id")) or Session("user.id") = "" 我知道会话消失了,我需要说明这一点。虽然在我的会话变量名称中使用“点表示法”是没有意义的,但它确实帮助我看到所有这些变量都是相关的,而不是像“名字”、“姓氏”这样的十几个或更多名字,等等。我有一个函数可以加载所有这些变量,而另一个函数会在我完成它们后销毁它们,这有助于管理拥有大量会话变量的复杂性。

    我还有其他一些情况,我在数据库表中存储了一些关于用户的信息,并在每个页面的顶部调用了一个函数,让我可以访问页面上的这些信息。这也可以。

    【讨论】:

    • 感谢您的编辑。很难想象如果没有正确格式化这些代码 sn-ps,互联网是如何存活了四年半的。 :-) 也许 OP 现在会将这个唯一的答案标记为正确。 :-)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-03-02
    • 1970-01-01
    • 2012-06-30
    • 2013-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多