我们经常在asp.net webform项目中使用session,cache和profile。我们经常在asp.net webform项目中将数据存储在会话,缓存和配置文件中,但我想知道何时应该在会话中存储数据或何时应该存储在缓存和配置文件中。缓存或配置文件的范围是什么。这两个会议特定的生命周期或特定应用程序。
假设我将会话1中的任何数据存储在缓存或配置文件中,那么我是否可以从session2访问该数据。只是引导我的场景和&我们应该在会话,缓存和配置文件中存储数据的示例。感谢
答案 0 :(得分:14)
当您想要提高网站性能时,通常使用cache
:减少数据库调用,访问文件系统上的文件,调用外部服务等。
Scenario 1
:假设有一个应用程序,其中有一个页面列出了存储在数据库中的所有产品。用户需要产品列表过滤功能(例如ebay或amazon)。此外,众所周知,与产品列表页面使用频率相比,产品和产品功能列表的变化很少。
Solution 1
:您可以在此处使用cache
来减少数据库调用。您将产品列表和产品功能放到cache
以在内存中执行过滤并避免冗余数据库调用。只要产品列表或功能发生变化,Cache
就会失效。这个解决方案应该没问题,直到内存消耗处理比性能增益更便宜。
作为一个很好的资源,我建议您阅读ASP.NET Caching: Techniques and Best Practices MSDN文章。
在profile
中,您通常会保存特定于具体用户的数据,并且每次用户登录系统时都应该可用。
Scenario 2
:假设您拥有与Scenario 1
中相同的应用程序,但现在您需要为用户提供保存其过滤器偏好设置的能力(最喜欢的过滤器列表类型)。
Solution 2
:您可以创建一种过滤器状态类并将其存储在用户profile
中。因此,用户不会一次又一次地指定过滤器参数,并且每次用户登录时都可以使用这些首选项。
Session
用于存储可从所有网页访问的特定于用户的信息,下次用户登录时不需要这些信息。
Scenario 3
:假设有一些电子商务应用程序和营销人员想要以近距离实时的方式查看网站上发生的事情,即查看某些用户在登录时访问了哪些页面。此方案作为选定的用户活动快照。
Solution 3:
您可以在此处使用session
记录用户访问过的网址,然后为营销人员生成报告。
至于状态管理,您还可以访问另一篇MSDN文章ASP.NET State Management Overview。
Another good answer突出了管理asp.net应用程序状态的对象之间的区别。
希望这对你有所帮助。