Зачем кодировать в base64

hell0w0rd

Продвинутый новичок
Это не совсем относится к php. Однако зачем так делать? Обычные картинки можно кешировать, а base64 каждый раз передается клиенту. В общем - зачем?
 

Adelf

Administrator
Команда форума
в base64 как правило кодируют всякую мелочевку, на которую жалко HTTP запросов. Из-за малого размера то, что они не кешируются - ничего страшного. Гораздо более приятнее, что лишних запросов не генерят.
 

Hello

Новичок
Это не совсем относится к php. Однако зачем так делать? Обычные картинки можно кешировать, а base64 каждый раз передается клиенту. В общем - зачем?
Необходимо для передачи бинарных данных как текстовые.
Картинки это бинарные файлы и если их открыть как текст, то будет полно символов с чаркодом меньше 32 или больше 127
Закодировав картинку в base64 без проблем можно передать её.
 

fixxxer

К.О.
Партнер клуба
Hello

В результат такие данные нельзя будет передать по http
Не говори ерунду.

Не по HTTP, а, например, в query string от клиента к серверу. Query string принято кодировать в urlencode, а не в base64.

По HTTP в теле запроса/ответа можно передать все, что угодно.

Вопрос ТС (хоть он и задал его крайне неточно), очевидно, о base64 в теле HTML-документа (data URI scheme).
 

hell0w0rd

Продвинутый новичок
Вопрос ТС (хоть он и задал его крайне неточно), очевидно, о base64 в теле HTML-документа (data URI scheme).
В целом о передаче картинок в теле css/js/html, а не отдельным файлом. Можно все что угодно, как я понимаю так передавать - но интересует именно картинки. В целом на сколько я понимаю - такое используется для маленьких иконок...
А что лучше - спрайт, или этот же спрайт в base64?
 

Adelf

Administrator
Команда форума
http://webo.in/articles/habrahabr/108-dara-uri-performance/
http://habrahabr.ru/post/78120/

Читай, разбирайся. Могу лишь только посоветовать, что если сайт еще не готов и просто оптимизироваться собрался - не оптимизируй. доделай сайт. А дальше уже думай - стоит или не стоит оптимизировать.
 

fixxxer

К.О.
Партнер клуба
А что лучше - спрайт, или этот же спрайт в base64?
Для ответа на этот вопрос существует вкладка Network в developer console/firebug.

А вообще, это простая арифметика:

1) есть некоторая длина http-запроса + небольшой оверхед на отдельный запрос (в случае keepalive минимальный)
2) есть base64, который увеличивает размер на 1/3

Вот и считай. ;)
 

fixxxer

К.О.
Партнер клуба
Да, но в рассматриваемом частном случае, с поправкой на keep-alive и _один_ спрайт - latency примерно один хрен будет, если сервер не перегружен.

Хотя тут много нюансов, да. Это все вакуумно-сферические рассуждения ) Я ж говорю - вкладочку network смотреть.

UPD: ну и одно дело - сетевое latency, и совсем другое - при рендеринге
 

Тугай

Новичок
А по-моему это все "unix way" - и наследие терминалов. Живо еще для BC, верней для общения с древним софтом и железом
 

fixxxer

К.О.
Партнер клуба
А по-моему, ты уже во втором треде палишься, что в юниксах нифига не понимаешь, только зачем-то хочешь высказаться. =)
 
Сверху