在会话和缓存中存储数据表有什么区别?优点和缺点是什么?

因此,如果它是一个以DataTable形式返回结果并将其绑定到网格视图的简单搜索页面.如果用户‘a’搜索和用户‘b’搜索,最好将其存储在会话中,因为每个用户很可能有不同的结果,或者我是否仍然可以将他们的每个搜索存储在Cache中,或者这是否没有意义,因为只有一个缓存.我想基本上我想说的是缓存是否会被覆盖.

推荐答案

一个重要的区别是,缓存中的项目可能会在指定的时间后过期(将从缓存中删除).放入会话中的项目将一直保留在那里,直到会话结束.

当可用内存量变小时,ASP.NET还可以从缓存中删除项目.

另一个区别是:会话状态可以保持在外部(状态服务器、SQL server),并在web应用的多个实例之间共享(用于负载平衡).缓存的情况并非如此.

除了这些差异(正如其他人所指出的):会话是每个用户/会话的,而缓存是每个应用程序的.

Asp.net相关问答推荐

为什么从 ASP.NET Core Web API 的 ControllerBase 与 Controller 派生?

ASP.Net Core 2.1 中的身份< - 自定义 AccountController

ASP.NET MVC Url Route 支持(点)

为什么 aspnet 核心从 Docker 内部的端口 80 启动?

.NET - c# - 需要跨分区查询,但在 DocumentDB 数据访问上禁用了问题

VS2017 无法加载文件或程序集 Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll 或其依赖项之一

将命令行参数传递给 ASP.NET Core 中的 Startup 类

将查询参数绑定到 ASP.NET Core 中的模型

如何在 ASP.NET Core 中创建角色并将其分配给用户?

在控制器 asp.net-core 中获取当前区域性

ASP.NET添加迁移'复合主键错误'如何使用fluent API

如何使用 asp.net Core 更改迁移的输出文件夹?

防止具有相同站点 cookie 属性的 CSRF

IIS 10 上的 ASP.NET Core 404 错误

Anti-Forgery Token 适用于不同的基于声明的用户

ASP.Net-Core 中的自定义身份验证

如何在 Visual Studio 2015 中保存时编译 .sass 文件

在 ASP MVC 6 中将多个路由分配给同一控制器或操作

web.config 中与 targetFramework 相关的配置错误

System.Web.HttpUtility.UrlEncode/UrlDecode ASP.NET 5 的替换