首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >性能text/html与应用程序/json

性能text/html与应用程序/json
EN

Stack Overflow用户
提问于 2013-02-19 06:58:13
回答 2查看 4.8K关注 0票数 18

在评估PHP框架的性能时,我遇到了一个奇怪的问题

application/json的形式发送JSON似乎比不带额外报头的发送要慢得多(这似乎是回退到text/html)

示例#1 (application/json)

代码语言:javascript
复制
header('Content-Type: application/json');
echo json_encode($data);

示例2 (text/html)

代码语言:javascript
复制
echo json_encode($data);

使用apache bench (ab -c10 -n1000)进行测试给我提供了:

示例#1: 350 #/秒

示例#2: 440 #/秒

这表明设置额外的头似乎有点慢。

而不是

通过"ajax“(jQuery.getJSON('url', function(j){console.log(j)});)获取相同的JSON会有很大的不同(在Chrome Web Inspector中可以看到计时):

示例1: 340毫秒/请求

示例#2: 980毫秒/请求

这种不同是怎么回事?

尽管存在性能差异,但有使用application/json的理由吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-02-23 03:33:47

您的服务器是否根据内容类型处理不同的type/deflate?我的是这样。相信ab在默认情况下不接受gzip。(您可以在ab中使用带有-H标志的自定义标头进行设置)。但是Chrome总是说它接受gzipping压缩。

您可以使用curl test查看这些文件是否具有不同的大小:

代码语言:javascript
复制
 curl http://www.example.com/whatever --silent -H "Accept-Encoding: gzip,deflate" --write-out "size_download=%{size_download}\n" --output /dev/null

您还可以查看标题以查看是否应用了look:

代码语言:javascript
复制
curl http://www.example.com/whatever -I -H "Accept-Encoding: gzip,deflate" 
票数 3
EN

Stack Overflow用户

发布于 2013-02-26 17:51:15

我将回答问题的最后一部分:

尽管存在性能差异,

是否还有使用应用程序/json的原因?

回答:是的。

原因: 1) text/html经常可能是错误的json,直到你尝试解析它时才会被捕获。application/json将失败,只要json格式错误,您就可以轻松地进行调试

2)如果您在浏览器中查看json,使用header类型会将其格式化为用户友好的格式。text/html将更多地将其显示为blob。

3)如果您在网页上使用此json,application/json会立即转换为js对象,您可以通过obj.firstnode.childnode等方式进行访问。

4)回调功能可以在application/json上使用,但不能在text/html上使用

注意:使用gzip的将充分缓解性能问题。text/html仍然会更快一些,但不是推荐的获取json对象的方式

不过,我希望看到更多关于性能的见解。报头长度绝对不会导致性能问题。更多的是与你的the服务器分析头文件格式有关。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14946845

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档