-1

在 ASP.NET MVC 的不同页面中存储用户搜索条件的最佳状态管理是什么

  • 会话:存储在服务器上,可能会消耗它的 RAM
  • 饼干:小号
  • 本地存储:除了 javascript,我的代码已准备好在控制器上缓存数据,而不是 javascript 端
  • 缓存:存储在服务器上并在不同用户之间共享,因此如果用户输入搜索条件,那么其他用户将显示其搜索结果

笔记:

  • 系统可能有数千个同时用户
  • 我有 10 个页面需要保存他们的搜索数据
  • 每个页面最多可以包含 5 个不同的搜索条件(姓名、电子邮件等)
  • 用户注销后我不需要搜索数据
4

3 回答 3

1

您可以使用以下模式之一。

InProc - 会话存储在 Web 服务器上的应用程序进程内。根据使用的 IIS 版本,可能是 aspnet_wp.exe 或 w3wp.exe。

StateServer - 使用 State Server windows 服务存储会话。

SQLServer - SQL Server 数据库用于存储会话的数据

于 2020-07-26T07:16:14.283 回答
0
  1. 系统可能有数千个同时用户

    在这种情况下,在服务器上存储数据将消耗大量内存用于小块。

  2. 我有 10 个页面需要保留他们的搜索数据,每个页面可能包含多达 5 个不同的搜索条件(姓名、电子邮件等)

    听起来要存储很多信息,但将它们存储在会话或服务器数据库中并不好。

  3. 用户注销后我不需要搜索数据

    一旦用户单击注销,您就可以清除/清除数据。

笔记:

  1. 随着网站流量的增加,在会话中存储数据会消耗服务器上的内存。

  2. 将数据存储在数据库中不是一个好的选择,因为您必须向服务器发出请求才能从数据库中检索搜索条件。您的服务器将不得不处理大量请求。

我建议您使用IndexDb,它是一个本地存储数据库。您可以将用户的所有特定搜索信息存储在用户的浏览器中。

https://developer.mozilla.org/en-US/docs/Web/API/IndexedDB_API

于 2020-07-26T08:40:23.670 回答
0

每种存储类型都有自己的用途。

  • [Pure ClientSide] sessionStorage:关闭选项卡时数据过期。
  • [Pure ClientSide] localStorage:数据永远不会自动过期。
  • [ClientSide + ServerSide] Cookies:保存数据由服务器请求,数据存储在客户端。数据有过期时间。- 数据自动提交。
  • [ClientSide + ServerSide] Session : 保存数据是服务器请求,数据保存在服务器中,特殊引用保存在客户端。浏览器或站点关闭时数据过期,服务器将在 X 时间后终止它。- 数据自动提交。

搜索查询参数不是服务器需要了解的重要数据,甚至不是每个请求都需要了解的重要数据。

我宁愿将它保存为CookiesessionStorage ,由于不需要服务器参与的性质,因此对sessionStorage有很大帮助。如果您希望多个选项卡具有该数据,那么对localStorage有利。

于 2020-07-26T07:49:32.213 回答