【问题标题】:Best practice while saving data in HttpApplication.Application在 HttpApplication.Application 中保存数据时的最佳实践
【发布时间】:2017-01-26 08:46:07
【问题描述】:

所以我有一个从某个数据源返回数据的 Web 服务。 某些数据检索需要很长时间(>15 秒),这在通过 ajax 调用向网页提供数据时是不可接受的。

我在想我可以通过以下方法缓存数据:

在 Global.asax 中运行一个工作线程,每 X 分钟/小时检索一次增量并更新一个变量,然后将在 Web 服务中返回该变量。我想到的最佳解决方案是将数据保存在应用程序字典中。

基本上我的问题是,我应该这样做吗? (我们谈论的是可以超过 100MB 的数据)这样做有什么后果吗?如果是这样,哪种解决方案最好?

【问题讨论】:

    标签: asp.net caching httpapplication


    【解决方案1】:

    这实际上取决于您的数据的性质。对于不经常更改且有些静态的数据,缓存是完美的解决方案。 您还可以对动态数据(经常更改)使用短时间缓存,但如果用户使用的是有点旧的数据也可以。 .Net 框架有一个 CacheManager 类,它允许您定义缓存数据的到期时间。 我想说的是,使用 .Net 缓存管理器而不是读取所有数据并将它们保存在内存中,只需将请求的数据缓存 x 分钟。

    您可以编写自己的代码,并在何时以及如何刷新缓存数据方面发挥创意。例如,您可以为缓存数据添加一个计数器属性并计算从缓存中访问数据的次数,然后通过延长缓存数据的过期时间戳来刷新数据以延长缓存数据的生命周期。

    看看这个链接开始: http://cachemanager.net/Documentation/Index/cachemanager_getting_started

    【讨论】:

    • 只是在查看 cachemanager.net!无论如何,我必须阅读所有数据并保持更新,因为我向用户显示所有数据。它不完全是“静态的”。此外,假设数据不会在“幕后”更改,因此每次数据更改都可能触发重新检索或缓存更新。
    • 仍然缓存管理器是一个不错的选择。但是,您的服务器将需要大量内存。您仍然可以使用上次更新或上次加载的日期和时间戳来减少数据库调用并提高性能。
    • 我在一个企业应用程序中使用了 cachemanger 类来缓存超过 10,000 个并发用户的会话,它对我们非常有效。 (我们将会话保存在数据库中,以便在服务器场中使用它们)
    【解决方案2】:

    在这种情况下,您最好使用缓存,因为如果服务器内存不足,它会自动被清除。

    在此处查看“应用程序注意事项”:https://msdn.microsoft.com/en-us/library/ms178594.aspx

    【讨论】:

    • 似乎是一个足够好的答案,谢谢!但是,您推荐哪个缓存管理器?有内置的缓存管理器吗?一个简短的谷歌搜索产生了 cachemanager.net。好用吗?
    • 是的。 ASP.Net 包含一个非常简单的输出缓存。你可以在这里阅读更多:msdn.microsoft.com/en-us/library/xsbfdd8c.aspx
    猜你喜欢
    • 2015-03-12
    • 2013-10-23
    • 1970-01-01
    • 1970-01-01
    • 2013-03-28
    • 2017-09-08
    • 2011-04-10
    • 1970-01-01
    • 2018-03-11
    相关资源
    最近更新 更多