使用Classic ASP将数组存储在缓存中

时间:2015-08-29 10:51:19

标签: asp-classic jscript

我需要使用Classic ASP将数组存储在缓存中。我正在使用下面的代码,但它无法使用。

var loans=[];
Application("loanArray")=loans;

请让我知道你为何没有这样做的想法。

1 个答案:

答案 0 :(得分:2)

与VBScript数组不同 - 它与典型的C风格数组类似,因为它们存储在连续的固定大小的内存中--JScript数组是稀疏且动态的。它们也是公寓线程的,因此在ASP Application范围内使用是不安全的。

如果您启用了详细的错误消息,则在尝试时应看到以下消息:

  

无法将具有公寓模型行为的对象添加到应用程序内部对象。

所以你在这里有几个选择。

  1. 将您的数组存储在Session范围内。您可以在global.asa Session_OnStart()中执行此操作,以便在每个会话开始时将其提供。

    var a = ['one', 2, 3.0, false];
    Session('myArray') = a;
    
    // or...
    
    Session('myArray') = ['one', 2, 3.0, false];
    
  2. Application范围内存储线程安全的VBScript数组,并在需要访问它时将其转换为JScript数组。例如:

    <script runat="server" language="vbscript">
    
        Application.Lock
        Application("myArray") = Array("one", 2, 3.0, False)
        Application.Unlock
    
    </script>
    
    <script runat="server" language="javascript">
    
        // Retrieve the array and convert it to a JavaScript array...
        var a = VBArray(Application("myArray")).toArray();
    
        for (var i = 0; i < a.length; ++i) {
            Response.Write(a[i] + '<br>');
        }
    
    </script>