I have specified the following attributes in my site's .htaccess
file:
AddOutputFilterByType DEFLATE image/svg+xml
DeflateCompressionLevel 9
Header append Vary Accept-Encoding
However, my SVG asset is not being sent in compressed form:
$ curl https://example.org/assets/svg/asset.svg --silent -H "Accept-Encoding: gzip,deflate" --write-out "${size_download}\n" --output /dev/null
152655
$ curl https://example.org/assets/svg/asset.svg --silent --write-out "%{size_download}\n" --output /dev/null
152655
I verified that this asset (asset.svg
) is being sent with MIME type image/svg+xml
using Chrome, but using the Web Developer tools, this specific file is not being compressed when sent to the client.
Adding other MIME types to the .htaccess
file is successful (e.g., adding text/html
compresses the HTML assets).
This seems specific to how SVG data are handled. What else can I try or troubleshoot to get SVG compression working?
If Apache doesn't know the mime type of the file (here image/svg+xml), you need to tell it specifically (not needed in most Apaches):
AddType image/svg+xml svg svgz
Now when Apache knows about the filetype, just add this to deflate it:
AddOutputFilterByType DEFLATE image/svg+xml
For more information see https://httpd.apache.org/docs/2.4/mod/mod_deflate.html