如何用PHP压缩JSON?

时间:2010-01-10 14:53:45

标签: javascript php json apache compression

我正在编写一个小分析页面,它将帮助我查找应用程序中的错误。从本质上讲,它允许在视觉上比较实际数据和日志条目,并对数据进行一些分析。

由于这仅用于调试,因为我将在实际站点上部署它,我希望它尽可能少地加载服务器。一些分析选项将包括相当繁重的子字符串搜索或n 2 操作,因此我将把它卸载到客户端。

这意味着PHP页面将只从表和日志中获取数据,其中一些是JSON,并将其写出来。然后客户端Javascript将进行所有分析等。

问题是JSON的数据将是几MB大,而我与服务器的连接速度很慢。以某种方式压缩数据会很好。有人有想法吗?

环境是PHP + Apache;我不知道是否会安装mod_gzip;我无法控制它。

3 个答案:

答案 0 :(得分:46)

您可以使用PHP’s output control压缩数据。只需在任何输出之前将此调用放在脚本的开头:

ob_start('ob_gzhandler');

如果客户接受,任何输出都将使用 gzip deflate 进行压缩。

答案 1 :(得分:3)

在PHP 5.4中现在是JSON_UNESCAPED_UNICODE所以你可以替换char:

\ u00f3 - > Ĺ> =Ś

当量:

 json_encode($data,JSON_UNESCAPED_UNICODE);

答案 2 :(得分:0)

如果apache是​​您的选择(就像在原始问题中提到的那样),您可以在.htaccess中添加一些规则:

<IfModule mod_deflate.c>
    AddOutputFilterByType DEFLATE text/html
    # Add any mime-type you think is appropriate here
    AddOutputFilterByType DEFLATE application/json
</IfModule>