Suppose that you've enabled gzip delivery of your site and its static assets. How do you test it?
One obvious way is to load the site with the developer tools in your browser and look at the headers there. Like this for example:
Another more hard code and geek-power way is to simply use curl.
It goes without saying, the ideal way to set up Nginx is to make it optional. Don't upload a gzipped file to your server and force gzip down on every client. Instead, let something like Nginx handle it on-the-fly (don't worry, it's ultrafast).
So to see if gzip is working, take your URL and run these two commands:
$ curl -v --compressed http://www.example.com/page.cat > /dev/null
And look for this line:
< Content-Encoding: gzip
Also you should look for this line:
Content-Length: 2403
(number will obviously vary)
Now run the same curl command but without the --compressed
. E.g.
$ curl -v http://www.example.com/page.cat > /dev/null
Now there won't be a Content-Encoding
header in the response. It defaults to plain text.
Also, now look for the Content-Length
and amuse yourself in the profit that this number is likely to be much larger than before.
Here's a realistic example:
With --compressed
$ curl -v --compressed https://crash-stats.allizom.org/home/products/Firefox > /dev/null * Hostname was NOT found in DNS cache % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0* Trying 52.26.241.244... * Connected to crash-stats.allizom.org (52.26.241.244) port 443 (#0) * TLS 1.2 connection using TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 * Server certificate: crash-stats.allizom.org * Server certificate: DigiCert SHA2 Secure Server CA * Server certificate: DigiCert Global Root CA > GET /home/products/Firefox HTTP/1.1 > User-Agent: curl/7.37.1 > Host: crash-stats.allizom.org > Accept: */* > Accept-Encoding: deflate, gzip > < HTTP/1.1 200 OK < Content-Encoding: gzip < Content-Type: text/html; charset=utf-8 < Date: Thu, 20 Aug 2015 18:38:00 GMT * Server nginx/1.6.3 is not blacklisted < Server: nginx/1.6.3 < Set-Cookie: anoncsrf=yieBMvzCn4fO4lmMQbjuq0Cibl9s7oxG; expires=Thu, 20-Aug-2015 20:38:00 GMT; httponly; Max-Age=7200; Path=/; secure < Vary: Accept-Encoding < Vary: Cookie < X-Frame-Options: DENY < Content-Length: 2403 < Connection: keep-alive < { [data not shown] 100 2403 100 2403 0 0 4734 0 --:--:-- --:--:-- --:--:-- 4730 * Connection #0 to host crash-stats.allizom.org left intact
Without
$ curl -v https://crash-stats.allizom.org/home/products/Firefox > /dev/null * Hostname was NOT found in DNS cache % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0* Trying 54.213.30.86... * Connected to crash-stats.allizom.org (54.213.30.86) port 443 (#0) * TLS 1.2 connection using TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 * Server certificate: crash-stats.allizom.org * Server certificate: DigiCert SHA2 Secure Server CA * Server certificate: DigiCert Global Root CA > GET /home/products/Firefox HTTP/1.1 > User-Agent: curl/7.37.1 > Host: crash-stats.allizom.org > Accept: */* > 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0< HTTP/1.1 200 OK < Content-Type: text/html; charset=utf-8 < Date: Thu, 20 Aug 2015 18:38:05 GMT * Server nginx/1.6.3 is not blacklisted < Server: nginx/1.6.3 < Set-Cookie: anoncsrf=evG8kmoXjHv5aeyFIQHxNcnGahdxwIOy; expires=Thu, 20-Aug-2015 20:38:05 GMT; httponly; Max-Age=7200; Path=/; secure < Vary: Accept-Encoding < Vary: Cookie < X-Frame-Options: DENY < Content-Length: 12299 < Connection: keep-alive < { [data not shown] 100 12299 100 12299 0 0 24314 0 --:--:-- --:--:-- --:--:-- 24306 * Connection #0 to host crash-stats.allizom.org left intact