【问题标题】:Store array in cache using Classic ASP使用经典 ASP 将数组存储在缓存中
【发布时间】:2015-08-29 10:51:19
【问题描述】:

我需要使用 Classic ASP 在缓存中存储一​​个数组。我正在使用下面的代码,但它不起作用。

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

请让我知道您对为什么这不起作用的想法。

【问题讨论】:

    标签: asp-classic jscript


    【解决方案1】:

    与 VBScript 数组不同——与典型的 C 样式数组相似,它们存储在连续的、固定大小的内存中——JScript 数组是稀疏且动态的。它们也是单元线程的,因此在 ASP Application 范围内使用并不安全。

    如果您启用详细的错误消息,如果您尝试,您应该会看到以下消息:

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

    所以你有几个选择。

    1. 将您的数组存储在Session 范围内。您可以在您的global.asaSession_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>
      

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多