Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在ASP.NET中,将数据临时保存在内存中(在用户级别&用于重用数据)的最佳方法是什么?_Asp.net_Session_Caching_Cookies_Memory Management - Fatal编程技术网

在ASP.NET中,将数据临时保存在内存中(在用户级别&用于重用数据)的最佳方法是什么?

在ASP.NET中,将数据临时保存在内存中(在用户级别&用于重用数据)的最佳方法是什么?,asp.net,session,caching,cookies,memory-management,Asp.net,Session,Caching,Cookies,Memory Management,目前我正在使用“会话”将数据表保存在内存中。 但在做了几次研发之后,我开始意识到这不是一个好的做法 e、 g 要求: 下拉列表的项目将根据学生类型而有所不同。 下拉数据将从数据库中提取,并使用这些控件 在多个屏幕中。 对于同一个数据库,不建议从不同屏幕调用多个数据库 数据 所以我只需要调用一个DB调用,将数据保存在内存中,然后 然后下次从内存中读取数据。 我也尝试了“缓存”,但问题是缓存不是用户独有的。数据缓存的范围在应用程序域内,而不是会话。每个用户都可以访问此对象 请帮助我。对于您的场景,H

目前我正在使用“会话”将数据表保存在内存中。 但在做了几次研发之后,我开始意识到这不是一个好的做法 e、 g

要求:

下拉列表的项目将根据学生类型而有所不同。 下拉数据将从数据库中提取,并使用这些控件 在多个屏幕中。 对于同一个数据库,不建议从不同屏幕调用多个数据库 数据 所以我只需要调用一个DB调用,将数据保存在内存中,然后 然后下次从内存中读取数据。 我也尝试了“缓存”,但问题是缓存不是用户独有的。数据缓存的范围在应用程序域内,而不是会话。每个用户都可以访问此对象


请帮助我。

对于您的场景,HttpContext.Current.Cache应该可以工作。 是缓存不是用户独有的。但是缓存密钥可以是唯一的

var studentId = GetStudentIdFromRequest();
var cacheKey = "SyllabusInfoCacheKey_" + studentId;
然后,您可以使用unique cachekey来插入特定学生的值,然后再获取这些值。 会话也处于应用程序级别。每个用户都有一个ASP.NET_会话ID cookie,它从客户端发送,并在服务器端用于存储/检索值。 注意:要使会话和Asp.Net缓存在负载平衡环境中工作,负载平衡器应该是粘性的

var studentId = GetStudentIdFromRequest();
var cacheKey = "SyllabusInfoCacheKey_" + studentId;