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

Asp classic 在所有会话中频繁引用应用程序变量,asp-classic,Asp Classic,请一位了解这个主题的专业人士回答我的问题好吗 我正在使用classic ASP,如果我的问题看起来很琐碎,我很抱歉,但我不了解重复引用应用程序变量进行读取而不是修改的开销 我声明了一个全局应用程序级变量,用于缓存大字符串和其他数组 在sessionOntart中,我将应用程序变量分配给会话变量。然后在每个页面上,我将会话变量分配给一个局部变量,以避免重复使用会话变量 我的问题是,我是否可以在每个会话的每个页面上直接重复使用应用程序变量,或者这是否会产生问题? 换言之,考虑以下两种情况: 情景1:

请一位了解这个主题的专业人士回答我的问题好吗

我正在使用classic ASP,如果我的问题看起来很琐碎,我很抱歉,但我不了解重复引用应用程序变量进行读取而不是修改的开销

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

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

我的问题是,我是否可以在每个会话的每个页面上直接重复使用应用程序变量,或者这是否会产生问题? 换言之,考虑以下两种情况:

情景1:

--在应用程序启动中:

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

--在会话开始时:

会话(“globalArray”)=应用程序(“globalArray”)

--在网站的每个页面上:

模糊混乱 anArray=会话(“globalArray”) 现在根据需要多次使用anArray

塞纳里奥2号:

--在应用程序启动中:

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

--在网站的每个页面上,根据需要多次使用应用程序(“globalArray”)


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

我不确定我能用提供的信息最终回答这个问题,但我会从逻辑上对此作出评论,场景#1听起来效率低下,似乎没有实际用途,除非每个用户都需要自己的具有不同值的唯一globalArray,或者除非应用程序变量经常更改,并且您只想在以后的特定时间为用户获取新的副本

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


例如,如果您有1000个用户登录,那么您实际上需要1000个内存中这个大型阵列的唯一副本(场景1)还是只需要一个副本(场景2)?

谢谢您的回复。答案是不需要为每个用户提供阵列的唯一副本。我只需要了解在每个会话中多次自由地使用应用程序变量是否合适。因此,我从您的文章中了解到,尽可能频繁地使用应用程序变量来访问其内容不会产生任何开销。你确认了吗?@Dave123基本上是的。与只有一个对象的中心副本相比,在内存中拥有同一对象的数百或数千个副本的开销要大得多。但是,如果对象可以更改,那么让多个用户共享一个副本可能会出现并发问题,但据我所知,此对象是只读的,因此您最好在内存中只保留一个副本。再次感谢您的回复。我很感激。如果你不介意我问这个相关的问题,tip2下有一个Miicrosoft tips页面,上一段说:“最好用自定义方法构建一个自定义组件来存储气象站”。这个信息对我来说是模糊的。您认为他们的意思是从数据库中获取站点,然后循环并将每个站点分配给一个数组元素吗。然后通过com方法访问阵列以使用更少的内存?@Dave123我建议您不要在现有问题的评论部分提出新问题。最好提出一个全新的问题,吸引新的观点和答案。此外,如果我的答案对你有帮助,请将其标记为已接受的答案,或者至少投票表决。