客户端 v/s 服务器端图像压缩

Client-Side v/s Server-Side image compression

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

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

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

正如@Xorifelse 所说,问题可能是 "too broad",但这里有一些想法。

缺点

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

优点

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

图片压缩工具

仅 JPEG

BGP

我的建议

  • 如果您需要腾出服务器,可以在服务器负载不重的一天中的某个时间以异步方式批量优化图像
  • 如果您有很多输入,将优化发送到另一台服务器(即:Amazon、DigitalOcean、Linode 等处的按需虚拟机,因此您只需在您购买时付费)需要)而不是升级您的 "main" 服务器