代码之家  ›  专栏  ›  技术社区  ›  Lil'Monkey

字典/客户端VS应用程序变量

  •  5
  • Lil'Monkey  · 技术社区  · 16 年前

    嗨,我有一个关于服务器性能的问题。..我有一个经典的asp cms托管约250个网站,对于每个网站,我们使用

    set dict = CreateObject("Scripting.Dictionary") 
    dict.add "test1","Value Test1"
    dict.add "test2","Value Test2"
    dict.add "test3","Value Test3"
    

    然后,每个用户的每个页面上都会加载该词典。..

    假设我们每月有大约15万用户访问这些网站,每次加载大约10万本词典。..

    3 回复  |  直到 16 年前
        1
  •  2
  •   AnthonyWJones    16 年前

    当然,为每个ASP请求加载字典绝对是一个坏主意,不仅会损害你的性能,还会使你的虚拟内存碎片化。

    简单的答案是肯定的,将应用程序对象用作字典。这将大大降低您的内存和CPU成本。缺点是它是否与现有的应用程序对象使用相冲突?为了避免此问题,您可能需要在密钥前添加前缀。

        2
  •  1
  •   Cirieno    16 年前

    我绝对建议只加载一次字典,因为dictionary对象在内存方面很重,在查找方面很慢,而且很大:当你认为应该销毁时,它并不总是在内存中销毁。因此,即使在用户离开页面后,这个对象仍然可以在内存中徘徊等待处理(即使你明确地“销毁”它)。现在,将该值乘以每位用户每次访问的页面点击次数。..

    另一种更节省内存的方法是使用数组——如果你能在某个地方(最好)保持索引的跟踪,则使用一维数组,如果需要,则使用查找函数使用二维数组(当然,如果其他人现在或将来正在维护代码)。

        3
  •  1
  •   Joost Moesker    16 年前

    我敢肯定,在任何网站上,在每个页面上实例化一个scripting.dictionary都不应该是一个问题。如果性能是一个问题,我建议先分析你的页面,看看问题在哪里。很有可能在某个地方有一个未优化的查询需要100多毫秒才能完成。