缓存服务器页面 (CSP) 中的缓存变量作用域

Cache Variable Scope in Cache Server Page (CSP)

我正在尝试在 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. 在页面加载期间,警报 return test 为“1”而不是“2”。这里发生了什么?

  2. 还有其他更好的方法可以在 CSP 中存储此类数据吗?

#()#在页面渲染时执行。

所以你得到如下页面。右键单击生成的页面并查看其源代码。

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

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

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