繁体   English   中英

Azure-function v2 中的相同 JSON 响应大于 V1

[英]Same JSON response in Azure-function v2 is larger than V1

最近,我们尝试将现有的 v1 azure 应用程序迁移到 v2 和节点版本 10+。 当我们这样做时,我们发现在 function 应用程序上调用 APIS 的 UI 应用程序运行缓慢,有时它们会杀死浏览器。 当我们调查发现来自新版本 function 应用程序的所有响应大小都增加了 2.5 倍。 对于小的响应,应用程序运行良好,但是当它返回一个像 10MB+ 这样的大负载时,应用程序开始冻结。 在某些情况下,它达到了 100MB+。 之所以这么大,是因为从新的 function 返回的 JSON 被格式化为空格和制表符。 这促成了额外的空间。 尝试使用 context.res.isRaw = true (文档中的“表示响应的格式被跳过。”)并将内容类型设置为 JSON 也设置为文本,但它没有任何区别。 你们知道为什么它会以这种方式表现以及任何解决方案吗? 示例:v1 用于以这种方式发送 json:

{'key_1':'value_1',......,'key_n':'value_n'}

现在 v2 发回相同的 JSON (点也代表空白):

{
....'key_1': 'value_1',
..........,
..........
'key_n': 'value_n'
}

有没有人遇到过类似的问题? 我还注意到它在内容类型的末尾添加了字符集。 这有什么区别吗? V1:内容类型:application/json; V2:内容类型:application/json; 字符集=utf-8

到目前为止,我还没有看到任何此类问题。 But, if you are sure this increase in size is just because of the addition of extra spaces in your JSON response, you would want to minify it before sending it as a response to the Web Application: Minify indented JSON string in .NET

总之,您可以使用下面的正则Regex

Regex.Replace(myJSON, "(\"(?:[^\"\\\\]|\\\\.)*\")|\\s+", "$1")

或者

Regex.Replace(myJSON, @"(""(?:[^""\\]|\\.)*"")|\s+", "$1")

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM