了解此主题的专业人士能否回答我的问题?
我使用经典的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?
答案 0 :(得分:0)
我不确定我是否可以使用所提供的信息明确地回答这个问题,但我会在逻辑上评论,情景#1听起来效率低,似乎没有实际用途,除非每个用户都需要他们自己独特的globalArray其中包含不同的值,或者除非Application变量经常更改,并且您只想在以后的特定时间为用户获取它的新副本。
听起来如果你在ApplicationStart中初始化这个数组,并且每次用户登录时在SessionStart中创建它的副本,你可能不会在任何其他点更改值。如果我的理解是正确的,那么我倾向于方案#2来减少不必要的内存消耗。
例如,如果您有1000个用户登录,您实际上是否需要在内存中使用此大型数组的1000个唯一副本(方案#1)或仅需要一个副本(方案#2)?