客户端与服务器端图像压缩


Client-Side v/s Server-Side image compression

我正在研究用户可以上传图片的东西(图像大小不受限制)。现在我有两个选择,要么使用 PHP(服务器端)压缩图像,要么使用 JavaScript 在客户端计算机上压缩图像,然后将其上传到服务器。我想问一下这两种方法中哪种方法更好实施?服务器上的压缩可能会导致服务器上的负载过重,所以我想到了客户端压缩,但是如果我上传更大尺寸的图像(假设 12MB 左右),那么浏览器会由于脚本而冻结一段时间。

因此,没有代码只是一个理论问题。目前我正在使用用于客户端压缩的 J-I-C

还有其他用于客户端图像压缩的好库吗? 哪种方法会更好?任何帮助将不胜感激。

正如@Xorifelse所说,这个问题可能"太宽泛",但这里有一些想法。

缺点

  • 用户输入不得受信任;通过在客户端执行压缩,无论如何都必须在服务器端进行一些健全性检查
  • 图像压缩(或优化)涉及复杂的操作,JavaScript 的选择比其他语言少
  • 由于操作很复杂,你给客户端带来了压力;如果你不控制他们的配置(硬件、浏览器和vers),这种情况你几乎只能在Intranet中出现,你可能会降低(或失败)某些用户的浏览体验
  • 由于所有这些原因,客户端错误更难跟踪和修复,并且与向服务器添加资源相比,开发成本可能很快更高

优点

  • 从服务器卸载一些计算
  • 您帮助带宽小但计算机功能强大且最近的浏览器上传大图像的人

图像压缩工具

仅限 JPEG

格式
  • http://www.graphicsmagick.org/
  • http://www.vips.ecs.soton.ac.uk/
  • https://blarg.co.uk/blog/comparison-of-jpeg-lossless-compression-tools (jpegoptim vs jpegtran vs jpegrecan vs mozjpeg)

边界网关协议

  • http://bellard.org/bpg/

我的建议

  • 如果需要备用服务器,可以在一天中服务器负载不重的某个时间异步批量进行图像优化
  • 如果您有很多输入,将优化发送到另一台服务器(即:亚马逊,DigitalOcean,Linode等的按需虚拟机,因此您只需在需要时付费)比升级"主"服务器更便宜