Troubleshooting CDN file compression

This article helps you troubleshoot issues with CDN file compression.

If you need more help at any point in this article, you can contact the Azure experts on the MSDN Azure and the Stack Overflow forums. Alternatively, you can also file an Azure support incident. Go to the Azure Support site and click Get Support.

Symptom

Compression for your endpoint is enabled, but files are being returned uncompressed.

Tip

To check whether your files are being returned compressed, you need to use a tool like Fiddler or your browser's developer tools. Check the HTTP response headers returned with your cached CDN content. If there is a header named Content-Encoding with a value of gzip, bzip2, or deflate, your content is compressed.

Content-Encoding header

Cause

There are several possible causes, including:

  • The requested content is not eligible for compression.
  • Compression is not enabled for the requested file type.
  • The HTTP request did not include a header requesting a valid compression type.

Troubleshooting steps

Tip

As with deploying new endpoints, CDN configuration changes take some time to propagate through the network. Usually, changes are applied within 90 minutes. If this is the first time you've set up compression for your CDN endpoint, you should consider waiting 1-2 hours to be sure the compression settings have propagated to the POPs.

Verify the request

First, we should do a quick sanity check on the request. You can use your browser's developer tools to view the requests being made.

  • Verify the request is being sent to your endpoint URL, <endpointname>.azureedge.net, and not your origin.
  • Verify the request contains an Accept-Encoding header, and the value for that header contains gzip, deflate, or bzip2.

Note

Azure CDN from Akamai profiles only support gzip encoding.

CDN request headers

Verify compression settings (standard CDN profiles)

Note

This step applies only if your CDN profile is an Azure CDN Standard from Microsoft, Azure CDN Standard from Verizon, or Azure CDN Standard from Akamai profile.

Navigate to your endpoint in the Azure portal and click the Configure button.

  • Verify compression is enabled.
  • Verify the MIME type for the content to be compressed is included in the list of compressed formats.

CDN compression settings

Verify compression settings (Premium CDN profiles)

Note

This step applies only if your CDN profile is an Azure CDN Premium from Verizon profile.

Navigate to your endpoint in the Azure portal and click the Manage button. The supplemental portal will open. Hover over the HTTP Large tab, then hover over the Cache Settings flyout. Click Compression.

  • Verify compression is enabled.
  • Verify the File Types list contains a comma-separated list (no spaces) of MIME types.
  • Verify the MIME type for the content to be compressed is included in the list of compressed formats.

CDN premium compression settings

Verify the content is cached (Verizon CDN profiles)

Note

This step applies only if your CDN profile is an Azure CDN Standard from Verizon or Azure CDN Premium from Verizon profile.

Using your browser's developer tools, check the response headers to ensure the file is cached in the region where it is being requested.

  • Check the Server response header. The header should have the format Platform (POP/Server ID), as seen in the following example.
  • Check the X-Cache response header. The header should read HIT.

CDN response headers

Verify the file meets the size requirements (Verizon CDN profiles)

Note

This step applies only if your CDN profile is an Azure CDN Standard from Verizon or Azure CDN Premium from Verizon profile.

To be eligible for compression, a file must meet the following size requirements:

  • Larger than 128 bytes.
  • Smaller than 1 MB.

Check the request at the origin server for a Via header

The Via HTTP header indicates to the web server that the request is being passed by a proxy server. Microsoft IIS web servers by default do not compress responses when the request contains a Via header. To override this behavior, perform the following: