Клиентское v/s серверное сжатие изображений
Я работаю над тем, что пользователи могут загружать фотографии (размер изображения не ограничен). Теперь у меня есть два варианта: сжимать изображение с помощью PHP(на стороне сервера) или сжимать изображение на компьютере клиента с помощью JavaScript, а затем загружать его на сервер. Я хотел спросить, какой из двух подходов было бы лучше реализовать? Сжатие на сервере может привести к большой нагрузке на сервер, поэтому я подумал о сжатии на стороне клиента, однако, если я загружаю изображение большего размера (допустим, 12 МБ или около того), то браузер на некоторое время зависает из-за сценария.
Нет такого кода, просто теоретический вопрос. В настоящее время я использую JIC для сжатия на стороне клиента
Любая другая хорошая библиотека для сжатия изображений на стороне клиента? и какой подход будет лучше? Любая помощь приветствуется.
1 ответ
Как сказал @Xorifelse, вопрос может быть "слишком широким", но вот некоторые идеи.
Cons
- пользовательский ввод не должен быть доверенным; выполняя сжатие на стороне клиента, вы все равно должны будете выполнить некоторую проверку работоспособности на стороне сервера
- Сжатие (или оптимизация) изображений включает в себя сложные операции, в JavaScript меньше выбора, чем в других языках.
- поскольку операции являются сложными, вы ставите стресс на своих клиентов; если вы не управляете их конфигурацией (аппаратное обеспечение, браузер и т. д.), ситуация, которая может возникнуть почти только в интрасети, вы, вероятно, ухудшите (или не сможете) работу в Интернете некоторых из своих пользователей
- по всем этим причинам ошибки на стороне клиента сложнее отследить и исправить, и они могут быстро стоить вам больше, чем добавление ресурсов на ваши серверы
Pros
- вы разгружаете некоторые вычисления со своих серверов
- вы помогаете людям с небольшой пропускной способностью, но мощными компьютерами и новейшим браузером загружать большие изображения
Инструменты сжатия изображений
Только JPEG
- http://www.graphicsmagick.org/
- http://www.vips.ecs.soton.ac.uk/
- https://blarg.co.uk/blog/comparison-of-jpeg-lossless-compression-tools ( jpegoptim против jpegtran против jpegrescan против mozjpeg)
BGP
Мое предложение
- если вам нужно сэкономить ваш сервер, вы можете выполнить оптимизацию изображений в пакетном режиме, асинхронно, в какое-то время дня, когда ваш сервер не сильно загружен
- если у вас много входных данных, может быть дешевле отправить оптимизацию на другой сервер (например, виртуальную машину по требованию в Amazon, DigitalOcean, Linode и т. д., поэтому вы платите только тогда, когда вам нужно), чем обновить ваш "главный" сервер