【问题标题】:Best way to persist data? [closed]持久化数据的最佳方式? [关闭]
【发布时间】:2018-01-16 23:52:20
【问题描述】:

我有一个复杂的 JSON,我需要在两个 POST 请求中保持它。目前我将序列化的 JSON 存储在 tempdata 中,尽管第二个帖子在错误 400(标题的大小太长)之前从未成功。在这张图片中,我在 Chrome 调试器中查看了 cookie

我做 MVC 错了吗?数据可能太复杂而无法存储在 tempdata 中。但是对于这个例子,这个 JSON 只有 234 行(不确定这是否准确地反映了 cookie 大小)。我知道我可以增加 cookie 的大小,但这并不能解决真正的问题。

我应该以不同的方式存储数据吗?

基本上在我的项目中,我将一个值发布到控制器(多次通过 POST),然后控制器使用该值获取 JSON 的某个部分。 Session 是唯一的选择吗?

我仍然是 MVC 的新手,如果我犯了一个简单的错误,请原谅我

【问题讨论】:

    标签: asp.net asp.net-mvc asp.net-core


    【解决方案1】:

    首先,TempDataSession 是同一个东西。唯一的区别是持久化的长度:前者只持续到下一个请求,而后者持续会话的生命周期。

    其次,必须配置会话存储。如果你不配置它,那么TempData 之类的东西会尝试使用 cookie 来保存数据。否则,它将使用您的会话存储。基本上,通过使用 any 实际会话存储,您应该对数据的大小没有任何问题。

    第三,你没有提供太多关于你在这里实际做什么的信息,但在大多数情况下,会话(SessionTempData)对于持久性来说是一个糟糕的选择。您尝试在请求之间存储的数据听起来不像是特定于用户的,这使得会话成为一个特别糟糕的选择。最有可能的是,您需要一个分布式缓存,尽管您可能会使用内存缓存。您还应该考虑是否需要保留这些数据。通过担心在数据库上运行相同的查询来过度优化是很常见的,例如,多次。数据库设计是为了有效地检索大量数据,并且正确设置,可以毫不费力地处理数千个同时查询。具有讽刺意味的是,有时缓存查询实际上并不能比实际运行查询节省任何东西,尤其是使用分布式缓存机制。

    简单胜于复杂。从简单开始。尽可能以最直接的方式解决问题。如果这涉及多次发出相同的查询,请这样做。没关系。然后,一旦你有了一个可行的解决方案,配置文件。如果它的运行速度比您喜欢的要慢,或者在处理 1000 次请求时开始下降,然后寻找通过缓存等方式对其进行优化的方法。开发人员会浪费大量的时间和精力来尝试优化实际上甚至不是问题的事情。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-06-06
      • 2020-04-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-09
      • 2020-08-26
      相关资源
      最近更新 更多