I'm using this PHP code for json output. Does apache gzip it by default? Or, how can I check to make sure?
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);
Compressing with gzip As text data, JSON data compresses nicely. That's why gzip is our first option to reduce the JSON data size. Moreover, it can be automatically applied in HTTP, the common protocol for sending and receiving JSON.
Double click on the file and select headers. Under 'Response headers' you are looking for the 'Connection-Encoding' field, it will say gzip if it is enabled. NOTE: By default, Deflate is enabled on all of our servers.
Brotli has a better compression ratio (i.e. it produces smaller compressed files) across every level of compression. While GZIP does beat Brotli on speed most of the time, the level you compress at factors into the results you'll see.
This is what did the trick for me:
(assuming you have access to apache configuration)
AddOutputFilterByType DEFLATE application/json
I added this line directly in /etc/apache2/mods-available/deflate.conf
(so it will work for every json file on the webserver) maybe someplace else is better suited in your use case (e.g. if you only want to enable json compression for a single web application and not by default).
edit: In google chromes developer tools you can easily check if your content is served compressed or uncompressed: https://webmasters.stackexchange.com/a/4613
No gzip is normally not used you have to enforce that yourself.
In the simplest case you just need to add this php line:
ob_start("ob_gzhandler");
See also the official php documentation.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With