Apache 2是否默认启用gzip压缩json输出?

13

我正在使用这个 PHP 代码输出 JSON。Apache 默认会压缩它吗?或者,我怎样才能检查并确保压缩了?

header('Content-type: application/json');
header('Cache-Control: max-age=0,no-cache,no-store,post-check=0,pre-check=0');
header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
echo json_encode($response);

2
我相信这就是你要找的内容。http://www.simonwhatley.co.uk/how-to-configure-apache-to-gzip-your-components - Decker W Brower
2个回答

35

这是对我有用的方法:

(假设您可以访问Apache配置文件)

AddOutputFilterByType DEFLATE application/json

我直接在/etc/apache2/mods-available/deflate.conf文件中添加了这行代码(这样它就会对web服务器上的每个json文件起作用),也许在您的用例中其他地方更加合适(例如,如果您只想针对单个Web应用程序启用JSON压缩而不是默认情况下启用)。

编辑:在Google Chrome的开发者工具中,您可以轻松检查您的内容是经过压缩还是未经压缩的:https://webmasters.stackexchange.com/a/4613


可能还需要 AddOutputFilterByType DEFLATE text/json - Pit

2

通常情况下不使用gzip,您需要自己强制执行。

在最简单的情况下,您只需要添加以下php代码:

ob_start("ob_gzhandler");

请参考官方的PHP文档


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接