【问题标题】:MVC web application dropdown data from session or database来自会话或数据库的 MVC Web 应用程序下拉数据
【发布时间】:2016-01-24 23:00:54
【问题描述】:

我们有一个基于 ASP.Net MVC3 的网络应用程序。我们在我的数据库中有那些典型的主数据表——我们必须在从我的 SQL 数据库填充下拉列表和自动完成时查找这些表数据(和一些视图)。因此,即使用户刷新页面,它也会从数据库中获取(几乎)未更改的主数据。大部分主数据是

如果我放一个

列出 到“应用程序级变量”(或 至少“会话级别”)

要避免这次往返?为所有主数据做这件事怎么样?我相信“按需”填充应用程序级别变量可以使其初始有效负载不那么激进。在某些情况下,我可以使数据失效/重新填充以刷新数据。

请提出您的想法或任何其他更好的方法来实现这一目标。最后,这种优化真的值得吗(我的意思是,如果与应用程序级别的访问相比,找到数据库之旅并不是什么大不了的事——我的用户访问权限适中,数据库大小约为 10-15MB)。我们努力保持简单和干净。

【问题讨论】:

    标签: asp.net-mvc-3 session-variables lookup master


    【解决方案1】:

    阅读 ASP.Net 输出缓存。当您使用输出缓存时,您是在指示网络服务器记住第一个请求的结果并一遍又一遍地使用它而不进行实际处理(在您的情况下不访问数据库)。

    简而言之,这就是你必须做的事情

    创建将提供查找数据并使用输出缓存属性装饰它们的控制器操作

    在您的 UI 代码中使用 Ajax 将查找数据加载到上述控制器操作的列表和下拉列表中

    您的 UI 会多次调用网络服务器,但网络服务器会提供缓存中的结果。它不仅会减少 db 上的负载(尽管不是您最关心的问题),而且会在速度及其简单、干净和不显眼方面带来非常好的性能

    关于该主题的良好初读

    http://www.asp.net/mvc/tutorials/older-versions/controllers-and-routing/improving-performance-with-output-caching-cs

    愉快的编码

    【讨论】:

    • 谢谢。我有一个用于查找数据的控制器和操作,因此我可以在其上启用缓存,但自动完成插件使用相同的操作,它根据搜索词获取结果(例如 - Lookup(source,searchTerm))。我相信缓存对于 Lookup(source) 非常有用,但是 searchTerm 呢?它会“基于参数缓存”吗?如何控制它?
    • 类似 - stackoverflow.com/questions/6339191/…。最后一件事 - 我认为它不会是特定于用户的,它是全球性的吗?
    • 嗨 Hemant,有一种方法可以根据参数将缓存设置为重建,但我没有使用该选项。深入了解一下,您可能想阅读基于 DotNet 框架级别的缓存msdn.microsoft.com/en-us/library/dd997357.aspx
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-06
    • 1970-01-01
    • 2019-08-27
    • 2015-10-29
    • 2011-06-05
    • 1970-01-01
    相关资源
    最近更新 更多