保持数据的最佳方式?

时间:2018-01-16 23:52:20

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

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

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

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

基本上在我的项目中,我向控制器发布了一个值(很多时候通过POST),然后使用该值来获取JSON的某个部分。会议是唯一的选择吗?

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

1 个答案:

答案 0 :(得分:1)

首先,TempDataSession是一回事。唯一的区别是持久性的长度:在前者中,直到下一个请求,而在后者中为持续时间。

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

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

简单比复杂更好。从简单开始。尽可能以最直接的方式解决问题。如果这涉及多次发出相同的查询,请执行此操作。这没关系。然后,一旦你有一个工作的解决方案,配置文件。如果它运行速度比你想要的慢,或者在发出1000个请求时开始下降,那么然后会研究通过缓存来优化它的方法等。开发人员浪费了大量的时间和精力能量试图优化实际上甚至不是问题的事情。