在1 json中返回所有内容是否合适?

时间:2017-04-04 15:25:21

标签: javascript c# json asp.net-mvc

以下是我从网络服务返回的json:

{
      "variantId": 100,
      "tests": [
        {
          "testId": 15,
          "attachments":[],
          "attachmentLogs":[],
          "flag" : true
        },
        {
          "testId": 16,
          "attachments":[],
          "attachmentLogs":[],
          "flag" : true
        }
      ]
    },
    {
      "variantId": 200,
      "tests": [
        {
          "testId": 15,
          "attachments":[],
          "attachmentLogs":[],
          "flag" : true
        },
        {
          "testId": 16,
          "attachments":[],
          "attachmentLogs":[],
          "flag" : true
        }
      ]
    }

现在我的网络服务方法并没有在我的json中返回附件和attachmentLogs,但是每个测试都会有一个附件和attachmentLogs的列表,对于每个变体,它都会有所不同。

对于例如:VariantId = 100和testId = 15将具有不同的附件和attachmentLogs.VariantId = 200且testId = 15将具有不同的附件和附件日志。

现在,如果用户想要查看VariantId = 100和TestId = 15的附件和附件日志,那么用户点击按钮,每次用户点击按钮时,我会进行2次服务器调用以获取附件和附件日志。

所以这里我的问题是我应该只在我的巨型json中获得附件和attachmentLogs,或者现在我正在做的是更好的方法。

实际上我觉得有一个如此庞大的json并没有在浏览器上增加任何性能开销,也不会给浏览器带来任何负担。

有人可以建议我处理这种情况的更好方法吗?

2 个答案:

答案 0 :(得分:1)

如果每次调用服务时都需要这些日志/附件,可以添加它们,但如果它们是可选的,最好只添加带有这些巨大文件的ID / URL的引用,以便在必要时获取它们通过单独的请求。

在这种情况下,您将获得更快的响应时间,并且不会在每个请求上向服务发送不必要的数据。

答案 1 :(得分:0)

如果您只想在用户点击按钮时显示附件及其日志,那么您当前的解决方案是好的。 因为,如果您同时获得所有附件和附件日志,您将获得数据,但可能根本不会使用该数据,因此会丢失资源。 如果假设有50个变体且用户只对其中2个变量感兴趣,那么为什么要获取所有数据。

但是如果你能实现一种分页类型的东西,那么另一种解决方案就有意义了。假设您一次只显示5个变体,接下来的api调用接下来的5个变量,最好一次显示所有数据。