6

我们经常在 asp.net webform 项目中使用会话、缓存和配置文件。我们经常在 asp.net webform 项目中将数据存储在会话、缓存和配置文件中,但我想知道什么时候应该将数据存储在会话中,或者什么时候应该存储在缓存和配置文件中。缓存或配置文件的范围是什么。这两个也是特定于会话的生命周期或特定于应用程序的。

假设如果我将会话 1 中的任何数据存储在缓存或配置文件中,那么我是否可以从会话 2 访问该数据。当我们应该将数据存储在会话、缓存和配置文件中时,只需用场景和示例来指导我。谢谢

4

1 回答 1

14

cache通常在想要提高站点性能时使用:减少数据库调用、访问文件系统上的文件、调用外部服务等。

Scenario 1:假设有一个应用程序有一个页面列出了存储在数据库中的所有产品。用户需要产品列表过滤功能(例如在 ebay 或 amazon 上)。此外,与产品列表页面的使用频率相比,产品列表和产品功能的变化很少。

Solution 1: 这里可以cache用来减少数据库调用。您将产品列表和产品功能cache放在内存中执行过滤并避免冗余数据库调用。Cache每当产品列表或功能发生变化时,都应该失效。这个解决方案应该没问题,直到内存消耗处理比性能增益更便宜。

作为一个很好的资源,我建议阅读ASP.NET 缓存:技术和最佳实践MSDN 文章。


profile您通常保存特定于具体用户的数据,并且每次用户登录系统时都应该可用。

Scenario 2:假设您有相同的应用程序,Scenario 1但现在您需要为用户提供保存他们的过滤器首选项(最喜欢的过滤器列表)的能力。

Solution 2:您可以创建一种过滤状态类并将其存储在 user 中profile。因此,用户将不会再一次又一次地指定过滤器参数,并且每次用户登录时都可以使用这些首选项。


Session用于存储用户特定的信息,这些信息可以从所有网页访问,并且在用户下次登录时不需要。

Scenario 3:假设有一些电子商务应用程序和营销人员希望以接近实时的方式查看站点上发生的事情,即查看某些用户在登录时访问了哪些页面。将此场景视为选定的用户活动快照.

Solution 3:在这里,您可以使用session记录用户访问的 URL,然后为营销人员生成报告。

至于状态管理你也可以参考另一篇 MSDN 文章ASP.NET State Management Overview


另一个很好的答案突出了管理 asp.net 应用程序状态的对象之间的区别。


希望这对您有所帮助。

于 2013-02-05T20:09:13.493 回答