接收 application/json Content-Type 比 JSON.parse 的 text/plain 字符串是否有性能优势?

接收 application/json Content-Type 比 JSON.parse 的 text/plain 字符串是否有性能优势?

(与服务器无关的问题,但我感兴趣的是它是否会因服务器软件的不同而有所不同。)

最近有人告诉我,我们需要将后端请求的内容类型从 更改为。JSON.stringify(object)text/plain完全赞成这样做,因为识别数据的技术正确性。objectapplication/json

然而,其理由是,这将通过减轻对JSON.parse接收字符串的需求来提供性能优势。

我的理解是,无论你发送什么类型的内容,它仍然是细绳被服务器接收。在 0 和 1 的数据传输世界中,JSON 对象和字符串没有区别。我相信当服务器收到 Content-Type application/json 时,它只是在JSON.parse将数据传递给你的应用程序之前调用 - 这意味着没有表现使用其中一个比使用另一个更有好处,因为它们做的是同样的事情。

我的解释正确吗,或者服务器是否能够以某种方式比另一种更快地处理一种内容类型?

答案1

相反,我看到了使用的理由text/plain

如果您正在使用 CORS(跨源请求)并且使用,application/json那么该请求将不再被视为“简单请求”,然后浏览器将发出飞行前请求(使用 http OPTIONS)来检查 CORS 是否被允许。

使用text/plain将启用 CORS 而无需预检请求,从而使响应返回更快。

答案2

对于编写良好的应用程序来说,性能方面应该没有问题,尤其是考虑到 JSON 的自动反序列化应该与手动反序列化的默认行为完全相同。不过,正确性方面确实有影响(JSON 不是纯文本,因此您不应将其用作text/plain内容类型)。

话虽如此,但我想到了一个案例可能问题。如果你有一个防火墙,它进行深度数据包检查,并尝试对内容进行某种形式的防病毒扫描,而防火墙和 AV 软件都盲目信任内容类型,那么可能发送数据 s 会更有效率text/plain。然而,满足所有这些条件的可能性基本上为零,所以你不应该为此编写代码。

相关内容