如何加快网站从客户端浏览器到服务器的多重图像上传?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (74)

我知道有多种方法可以将多个图像从浏览器上传到服务器,而且上传速度取决于服务器和网络的速度。标准的做法是:

点击网站中的上传按钮 - >选择要上传的图片 - >点击提交按钮将所有图片上传到服务器(提示“请稍等”给用户) - >上传成功!

但就编码部分而言,我只是想知道是否有更快的方法来有效地将图像从客户端设备上传到服务器?(使用Javascript和PHP)

目前我正在做的是首先“剪切”客户端的图像,然后将图像发送回服务器。但是,这是非常缓慢,因为JavaScript需要时间来“削减”图像的大小。通过“减少”,我的意思是使图像宽度和高度更小。有没有更快的方法来做到这一点?

(一些JavaScript和PHP编码示例也会有所帮助。)

提问于
用户回答回答于

简答:,Javascript不慢,既不是PHP。

如果图像很大(一些兆字节),则需要花一些时间在javascript / php中裁剪/调整图像大小。没有办法避免它。

我相信你有一个性能问题,因为:

  1. 一次上传很多图片,并..
  2. 其中一些很大(以兆字节为单位)

考虑在上传图片之前优化图片。我建议你使用kraken.io,它可以在不改变图像质量的情况下减小图像的大小(无损模式)。

另外,请考虑通过块上传图像,其中:

  1. 允许跟踪上传进度
  2. AJAX驱动

有很多块上传插件,这里是其中之一:

https://github.com/blueimp/jQuery-File-Upload/wiki/Chunked-file-uploads

最后但并非最不重要的是,看看kraken.io本身,也许你会学习如何加快图片上传的一些事情。

用户回答回答于

让我们尝试系统地面对这个挑战!任务如此简单:尽可能快地从用户计算机向服务器Y发送X字节。我们假设一旦数据到达服务器,处理时间可以忽略不计 - 任何现代服务器都可以非常快地处理大图像。

我们可以将可能的解决方案分为两类:

  1. 减少X - 减少正在发送的数据量。在JavaScript中缩放用户端的图像,并将较小的图像发送到服务器Y.
  2. 将服务器Y靠近用户(令人惊讶的是,没有人提到过这一点?)无需在全球部署多台服务器,只需使用CDN(其中许多服务器今天免费或非常便宜)。尽管CDN最终仍会打击网络服务器,但通常认为CDN提供商拥有比普通用户更好的国际带宽通常是安全的。

额外的笔记:

  1. 做一些速度测试,你当前的服务器可能有带宽问题,图像上传方式比他们应该慢。通过简单地将该网站移动到另一个托管公司,图片上传可能会快得多。
  2. 根据应用程序用户体验,只要选择文件(在JS端完成),而文件仍在上传时,可以通过显示图像缩略图来提高用户感知的速度。甚至可以允许用户在上传过程中移动页面/网站 - 如果不阻止用户界面,则缓慢上传不那么麻烦。

总的来说,这是一个复杂的问题,并没有一个单一的方法 - 这是一系列步骤。而且,如果某个用户有可怕的连接,那么其他任何事情都无关紧要!

扫码关注云+社区

领取腾讯云代金券