17

I read some articles about HTTP headers compression. Today I installed YSlow and it recommends that I compress the resources (text/html, javascript, css and images). Now I'm reading the documentation for Apache mod_deflate but in the example don't compress images.

Should I or should I not compress images in my site?

R. Martinho Fernandes
  • 228,013
  • 71
  • 433
  • 510
Agusti-N
  • 3,956
  • 10
  • 40
  • 47
  • YSlow recommends that *images* be compressed? Are you sure? That sounds like odd advice. – Pekka Feb 10 '11 at 12:42

3 Answers3

42

Your images should already be compressed - any extra compression won't have any noticeable effect on filesize, but will increase processing time.

Compressing files that have already been compressed very rarely results in a reduction in filesize, and can often increase filesize.

Skilldrick
  • 69,215
  • 34
  • 177
  • 229
  • 1
    @Agusti: if your images happen to be uncompressed, like say, .bmp files, you should convert them to .png or .jpg, as appropriate, and then serve the converted version, of course :) – R. Martinho Fernandes Feb 10 '11 at 12:52
  • @Martinho Fernandes thank you but my images are .png files, btw it's very good to know this tip :-D – Agusti-N Feb 10 '11 at 12:57
  • @Martinho Good point - that was what I meant by "Your images should already be compressed", but it's good to make it explicit. – Skilldrick Feb 10 '11 at 12:58
3

Images such as GIF, JPEG or PNG are already compressed via highly specialized algorithms that achieve better result than general purpose algorithms such as deflate.

Therefore, re-compressing them yields little to no gain in size, and can even make files bigger, with the added cost of server-side processing.

So, in other words... do not compress images.

SirDarius
  • 41,440
  • 8
  • 86
  • 100
0

SVGs should be compressed by Apache mod_deflate as

AddType image/svg+xml svg

AddOutputFilterByType DEFLATE image/svg+xml

More information at https://httpd.apache.org/docs/2.4/mod/mod_deflate.html.

Phil
  • 422
  • 1
  • 5
  • 20