开启了gzip压缩 但是图片实际并没有压缩呢

zhuguowei2
  • 812

Nginx 开启了压缩配置

    gzip on;
    gzip_comp_level    5;
    gzip_min_length    256;
    gzip_proxied       any;
    gzip_vary          on;
    gzip_types
      application/atom+xml
      application/javascript
      application/json
      application/ld+json
      application/manifest+json
      application/rss+xml
      application/vnd.geo+json
      application/vnd.ms-fontobject
      application/x-font-ttf
      application/x-web-app-manifest+json
      application/xhtml+xml
      application/xml
      font/opentype
      image/bmp
      image/svg+xml
      image/x-icon
      image/jpeg
      image/gif
      image/png
      text/cache-manifest
      text/css
      text/plain
      text/vcard
      text/vnd.rim.location.xloc
      text/vtt
      text/x-component
      text/x-cross-domain-policy;

看返回也生效了
image.png

但是实际怎么就没压缩呢 还是1.1MB呢

-rw-r--r-- 1 root root 1.1M Jul 19 19:49 WX20210719-194848@2x.png

image.png
补充:
访问https://tinypng.com/ 对图片压缩

image.png

回复
阅读 393
5 个回答

你要分清什么是无损压缩(可逆压缩)、什么是有损压缩(不可逆压缩)。

gzip 是无损压缩,压缩后可通过某种算法操作得到原本的数据(这个过程就是所谓的解压缩)。

tinypng 背后用的技术是有损压缩,以牺牲图片质量和色彩信息为代价,过程是不可逆的,也就是你无法通过某种算法再得到压缩前的数据。

对一个已经经过有损压缩的文件二次做无损压缩,通常不会有任何效果、甚至体积反而会增大。

这也是为啥你在电脑上把一个 mp4 视频放到压缩包里、压缩包并不会比 mp4 小的缘故。

我的回答可能是答非所问,但是,不管是 gif,jpg,png,ico格式,都是对图片做了有损压缩,也就是说,这些格式本来就是已经压缩过的格式,再进行gzip压缩,也不会有啥明显效果,而且还消耗服务器的CPU。所以,一版都不会对图片,视频,音频这些类型的文件做gzip压缩。

-rw-r--r-- 1 root root 1.1M Jul 19 19:49 WX20210719-194848@2x.png

这是你下载下来的图片吧,NGINX Gzip 只是说在传输时使用 Gzip 压缩编码,浏览器在收到 Gzip 编码的资源之后再解压,你最终拿到的文件是已经解压之后的

What does TinyPNG do?

TinyPNG uses smart lossy compression techniques to reduce the file size of your PNG files. By selectively decreasing the number of colors in the image, fewer bytes are required to store the data. The effect is nearly invisible but it makes a very large difference in file size!


tinypng 优化完的图片,和原来的不是同一张(只是人眼看不出差别而已)
nginx gzip 传过去,浏览器收到的是同一个文件(每个byte都一样)

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
你知道吗?

宣传栏