在所有会话中频繁引用应用程序变量

时间:2015-12-03 22:47:35

标签: asp-classic

了解此主题的专业人士能否回答我的问题?

我使用经典的ASP并且很抱歉,如果我的问题似乎微不足道,但我不了解重复引用应用程序变量以进行读取而不是修改的开销。

我已经声明了一个缓存大字符串和其他数组的全局应用程序级变量。

在sessionOntart中,我将应用程序变量分配给会话变量。然后在每个页面上,我将会话变量分配给局部变量,以避免重复使用会话变量。

我的问题是,我可以直接在每个会话的每个页面上重复使用应用程序变量,还是会产生问题? 换句话说,请考虑以下两种情况:

情景1:

- 在applicationOnStart中:

Application(“globalArray”)=数千个字符串和数组元素的大量数组

- 在sessionOnStart中:

Session(“globalArray”)= Application(“globalArray”)

- 在网站的每个页面上:

Dim anArray anArray = session(“globalArray”) 现在根据需要多次使用anArray。

SENARIO 2:

- 在applicationOnStart中:

Application(“globalArray”)=数千个字符串和数组元素的大量数组

- 在网站的每个页面上根据需要多次使用Application(“globalArray”)。

我的问题:考虑到网络流量繁忙,情景2更好还是情景1?

1 个答案:

答案 0 :(得分:0)

我不确定我是否可以使用所提供的信息明确地回答这个问题,但我会在逻辑上评论,情景#1听起来效率低,似乎没有实际用途,除非每个用户都需要他们自己独特的globalArray其中包含不同的值,或者除非Application变量经常更改,并且您只想在以后的特定时间为用户获取它的新副本。

听起来如果你在ApplicationStart中初始化这个数组,并且每次用户登录时在SessionStart中创建它的副本,你可能不会在任何其他点更改值。如果我的理解是正确的,那么我倾向于方案#2来减少不必要的内存消耗。

例如,如果您有1000个用户登录,您实际上是否需要在内存中使用此大型数组的1000个唯一副本(方案#1)或仅需要一个副本(方案#2)?