缓存服务器页面(CSP)中的缓存变量范围

时间:2019-03-15 01:46:03

标签: javascript intersystems-cache objectscript

我正在尝试将临时数据存储在CSP中。

由于并发性问题,我尝试避免^ Global和%session,并且出于安全性问题,我尝试避免Javascript变量。

然后我遇到了混乱。以下代码全部包含在一个CSP中:

<script language="Cache" runat="server">
s test = 1
</script>
<script language="Cache" method="Update">
s test = 2
</script>
<script language="Javascript">
function init(){
 #server(..Update())#
 alert("#(test)#");
}
</script>
<body onload="init();"></body>
  1. 在页面加载期间,警报返回test为“ 1”而不是“ 2”。这是怎么回事?

  2. 还有其他更好的方法将这种数据存储在CSP中吗?

1 个答案:

答案 0 :(得分:1)

#()#在页面渲染期间执行。

因此您将获得如下所示的页面。右键单击生成的页面并查看其源代码。

<script language="Javascript">
function init(){
 #server(..Update())#
 alert("1");
}
</script>

另外,请考虑通常,不同的CSP请求由不同的服务器进程处理,因此处理全局变量中的状态不是一个好主意。

如果您需要保留每个用户会话的数据,最好的方法是使用%session