代码之家  ›  专栏  ›  技术社区  ›  Andy Jacobs

在asp.net项目中将表缓存在服务器上

  •  0
  • Andy Jacobs  · 技术社区  · 16 年前

    我有一个asp.net项目,它是数据库的前端。除了大表之外,数据库还包含一些小表,以帮助用公共值规范化大表。我有一个vb.net项目,它使用“shared”(即c_中的“static”)成员变量将较小的表加载到内存中,并使用它们。我要在global.asax-application\u start中加载表。这有效一段时间。也就是说,application_start在我第一次运行项目时运行,加载缓存的值,并将它们正确地保存在内存中一段时间。

    我看到的(通过本地托管的visual studio 2008调试器运行项目时)是:

    a)应用程序启动代码将运行多次。不是在一行中,但是在用户导航到其他一些页面之后,我将看到(我的断点)另一个初始化缓存的调用,来自application_start。是预期的吗?

    b)当缓存初始化时设置为true的“shared”变量现在再次为false(这只应在类首次加载时发生)。同样,所有被篡改的数据也不再存在。也就是说,看起来vb正在卸载所有共享成员。这是预期的吗?

    如果这些都是预期的行为,有没有办法做我想做的?代码位于一个模块中,该模块也被其他(非asp.net)项目使用,并且似乎对它们工作正常。我宁愿不必为特定于asp.net的东西复制此功能,但我想知道我的选项是什么。谢谢你的建议。

    1 回复  |  直到 16 年前
        1
  •  0
  •   Matt Dearing    16 年前

    这是一篇你可能会觉得有用的文章 Caching Data at Application Startup . 听起来你做的一切都很正确,但是应用程序启动应该只被调用一次,除非发生了一些重新启动应用程序池的外部更改,但是在这种情况下,我认为你会从调试器中分离出来(假设你连接到了你的asp.n的应用程序池进程)。ET应用程序)。