0

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

如果我放一个

将 <master-data-object> 列表到“应用程序级别变量”(或至少“会话级别”)

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

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

4

1 回答 1

1

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

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

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

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

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

一个很好的关于这个主题的初读

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

快乐编码

于 2013-04-25T02:07:50.980 回答