«Быстрее» сложно ответить, потому что существует множество возможных интерпретаций и ситуаций:
Кодирование Base64 расширит изображение на треть, что увеличит использование полосы пропускания. С другой стороны, включение его в файл удалит еще один цикл GET на сервер. Таким образом, канал с большой пропускной способностью, но малой задержкой (например, спутниковое подключение к Интернету), скорее всего, загрузит страницу со встроенными изображениями быстрее, чем если бы вы использовали отдельные файлы изображений. Даже на моей (сельской, медленной) линии DSL сайты, которым требуется много циклов, загружаются намного дольше, чем те, которые просто относительно большие, но требуют лишь нескольких GET.
Если вы выполняете кодировку base64 из исходных файлов с каждым запросом, вы будете использовать больше ЦП, перегружать кэши данных и т. д., что может привести к снижению времени отклика ваших серверов. (Конечно, вы всегда можете использовать memcached или что-то подобное для решения этой проблемы).
Это, конечно, предотвратит большинство форм кэширования, что может сильно повредить, если изображение часто просматривается — скажем, логотип, отображаемый на каждой странице, который обычно кэшируется браузером (или прокси-кэшем, таким как squid или независимо) и запрашивается раз в месяц. Это также предотвратит множество оптимизаций веб-серверов для обслуживания статических файлов с использованием API ядра, таких как sendfile(2).
По сути, это поможет в одних ситуациях и навредит в других. Вам нужно определить, какие ситуации важны для вас, прежде чем вы действительно сможете понять, стоит ли вам этот трюк.
person
Jack Lloyd
schedule
15.10.2009