Лучшая практика для доставки 10 базовых 64 изображений - PullRequest
0 голосов
/ 20 сентября 2011

Я занимаюсь разработкой приложения phonegap, одна часть которого содержит около 10 изображений, которые закодированы в формате base64 и загружаются примерно раз в неделю на пользователя (сейчас 100 пользователей, мы надеемся, что их количество растет). Мой сервер работает медленно, и я тоже работаютак что доставка этих изображений идет медленно.Мой вопрос: будет ли быстрее, с точки зрения php и сервера, генерировать и сохранять эти изображения base64 в БД один раз и извлекать изображения из БД по запросу ИЛИ base64 кодировать изображение каждый раз, когда изображение запрашивается?

Спасибо за вашу помощь.

Ответы [ 3 ]

1 голос
/ 20 сентября 2011

Не зная деталей вашего приложения, мне кажется, что иметь базу данных только для 10 изображений - это излишне.Дополнительные накладные расходы на запуск базы данных на вашем медленном сервере, вероятно, убьют все преимущества, которые вы можете получить, сэкономив на кодировке base64.

Я бы сохранял изображения в кодировке base64 в виде файлов вместо базы данных, чтобы их можно былообслуживается непосредственно вашим веб-сервером клиентам.

Я бы также позаботился о том, чтобы вы могли доставлять сжатые данные gzip, если клиент может их обработать, поскольку данные base64 сжимаются очень хорошо.Это значительно снизит трафик на ваш сервер.См. это .

1 голос
/ 20 сентября 2011

Скорее всего, вы будете ограничены пропускной способностью, прежде чем ваш сервер будет привязан к процессору. Мои мысли:

  • Не отправлять изображения в кодировке base64. Вместо этого отправьте правильно сжатые двоичные данные.
  • Не обновляйте клиента, если в этом нет необходимости (т.е. не захватывайте изображение, если нет более нового изображения для захвата). Используйте 304 заголовка и связанных с ним, чтобы отслеживать.
  • Как только вещи начинают сильно ударить, используйте memcache / Redis вместо базы данных для хранения «предварительно обработанных» данных изображения.
1 голос
/ 20 сентября 2011

Было бы определенно быстрее, чтобы base64 кодировал изображения и сохранял кодировку.

Это классический компромисс между памятью и скоростью, вы можете заплатить более низкую стоимость вычислений за более высокую стоимость памяти. В этом случае это означает сохранение больше данных ( 8/7 8/6 больше, если вы просто сохраняете закодированную версию, и чуть больше, чем в 2 раза, если вы сохраняете оригинал тоже) .

Лучшее, что вы можете сделать, это сохранить изображения в памяти, поскольку это позволит избежать затрат на доступ к диску. Это можно сделать с помощью функций совместно используемой памяти или путем использования переменных сеанса и назначения фиксированного идентификатора сеанса для получения содержимого.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...