在我的网站上,我将拥有一些会话变量,我需要在每次加载页面时访问这些变量。我没有反复回调数据库,而是希望将此信息保存到会话变量中。
我不想创建30个不同的Session变量,因此我正在考虑将类似的变量存储到xml文档中,然后存储到Session变量中。像这样......
Session("UserRights") = "<xml><canEdit>1</canEdit><foo>bar</foo></xml>"
Set oDOM = Server.CreateObject("MSXML2.FreeThreadDOMDocument.3.0") 'etc...
这是个好主意吗?通过在每个页面加载时解析此xmlString,我会获得更大的性能影响吗?我知道我不应该将一个Object(如字典)存储到会话中(这就是我选择xml字符串的原因)但我需要一种新的方法......
该网站目前使用经典的asp编写,但我们正在使用(aspcompat =“true”)迁移到asp.net,这不是最好的迁移方法,但我们需要满足最后期限。
感谢您的建议
答案 0 :(得分:0)
您的会话变量也存储在数据库中,因此您不一定要保存数据库命中。解析确实需要时间(你必须测量它以确定它是否明显)。
我有类似的情况,我有必须在页面之间移动的用户的联系信息。一旦我从数据库中检索它,我就把它放在看起来像Session("user.first-name")
,Session("user.last-name")
,Session("user.address")
等的会话变量中。有一个特定的变量(“user.id”)我测试到确保会话未过期。所以if IsEmpty(Session("user.id")) or Session("user.id") = ""
我知道会议消失了,我需要考虑到这一点。虽然在我的会话变量名中使用“点符号”是没有意义的,但它确实帮助我看到所有这些变量是相关的,而不是像“名字”,“姓氏”那样有十几个或更多的名字,我有一个函数加载所有这些变量,另一个函数在我完成它们时会破坏它们,这有助于管理拥有大量会话变量的复杂性。
我还有其他情况,我会在数据库表中存储有关用户的大量信息,并在每个页面的顶部调用一个函数,以便我访问该页面上的信息。这也可以。