Client-Side v/s Server-Side image compression [clo

2019-07-08 02:05发布

I am working on something where users can upload pictures(size of image is not limited). Now I have two options either compressing the image using PHP(Server side) or compressing the image on client's machine using JavaScript and then uploading it to the server. I wanted to ask which approach out of the two would be better to implement? Compression on server might lead to heavy load on the server so I thought of client side compression however if I upload an image of bigger size (lets assume 12MB or so) then browser freezes up for a while due to the script.

There is as such no code just a theoretical question. Currently I am using J-I-C for client side compression

Any other good library for client side image compression? and which approach would be better? Any help would be much appreciated.

1条回答
冷血范
2楼-- · 2019-07-08 02:35

As @Xorifelse said, the question might be "too broad", but here are some ideas.

Cons

  • user input must not be trusted; by doing compression on the client-side, you will have to do some sanity check on the server side anyway
  • image compression (or optimization) involve complex operations, there is less choice in JavaScript than in other languages
  • since the operations are complex, you are putting the stress on your clients; if you don't control their configuration (hardware, browser and vers), a situation you can have almost only in an intranet, you will probably degrade (or fail) the browsing experience of some of your users
  • for all those reasons, client-side bugs are harder to track and fix and can quickly cost you more in development than adding resources to your servers

Pros

  • you offload some computation from your servers
  • you help people with a small bandwidth but powerful computers and recent browser to upload large images

Image compression tools

JPEG only

BGP

My suggestion

  • if you need to spare your server, you can make the images optimization in batch, asynchronously at some time of the day when your server is not heavily loaded
  • if you have a lot of input, it can be cheaper to send the optimization to another server (ie: an on-demand virtual-machine at Amazon, DigitalOcean, Linode, etc., so you pay only when you need) than to upgrade your "main" server
查看更多
登录 后发表回答