Javascript Azure函数v2中的相同JSON响应大于V1

Javascript Azure函数v2中的相同JSON响应大于V1,javascript,node.js,azure-functions,azure-functions-core-tools,Javascript,Node.js,Azure Functions,Azure Functions Core Tools,最近,我们尝试将现有的v1 azure应用程序迁移到v2和节点版本10+。当我们这样做时,我们发现在function app上调用API的UI应用程序运行缓慢,有时会导致浏览器死机。当我们调查发现,新版本函数应用程序的所有响应大小都增加了2.5倍。对于较小的响应,应用程序运行良好,但当它返回10MB+这样的大负载时,应用程序开始冻结。在某些情况下,它达到100MB+。之所以如此之大,是因为新函数返回的JSON格式为空格和制表符。这就增加了额外的空间。尝试使用context.res.isRaw=t

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

{'key_1':'value_1',......,'key_n':'value_n'}
现在v2返回相同的JSON(点也代表空格):

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

到目前为止,我还没有看到任何这样的问题。但是,如果您确定大小的增加仅仅是因为JSON响应中添加了额外的空格,那么在将其作为响应发送到Web应用程序之前,您可能希望将其缩小:

总之,您可以使用下面的
Regex
表达式:

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


压缩API的响应。是否有内置机制来压缩函数app的响应。或者我们需要使用外部工具?这是我尝试的解决方案。我使用了一个npm模块序列化javascript,它也做了同样的事情。删除空格,缩小json大小。我会接受这个答案。但是如果Azure-function本身提供了这样做的选项,而不是使用外部库,那就更好了。
Regex.Replace(myJSON, "(\"(?:[^\"\\\\]|\\\\.)*\")|\\s+", "$1")
Regex.Replace(myJSON, @"(""(?:[^""\\]|\\.)*"")|\s+", "$1")