2013-12-12 2 views
7

Мне было интересно, действительно ли какой-либо из современных браузеров кэширует встроенные изображения - строки base64 или нет?Могут ли браузеры кэшировать встроенные изображения base64?

Также есть возможность в ближайшем будущем? на основе официальных документов либо W3C, либо основных браузеров.

+1

Как я понимаю, если base64-строка является частью HTML-документа (встроенная), то она должна быть загружена и проанализирована как изображение при каждом скачивании документа. Если это фоновое изображение во внешнем файле CSS, его можно кэшировать с помощью файла CSS, но все равно нужно разбирать его с каждым запросом. Я также прочитал, что кодировка base64 добавляет около 30% накладных расходов поверх байтов изображения, но это может быть в значительной степени сглажено gzipping. – pwdst

+0

@pwdst Спасибо, я читал, и я тоже на той же странице. Если вы опубликуете свой комментарий в качестве ответа, я буду рад его продвигать. – Mahdi

+0

Я добавил это как ответ в соответствии с запросом. – pwdst

ответ

4

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

Кроме того, потенциальный условный запрос для встроенных изображений должен быть на уровне HTML-документа, содержащего его. Введенное изображение - это просто данные без дополнительного запроса. Но HTTP не поддерживает что-то вроде условных запросов для частей данных.

+0

Есть ли способ поставить это там? как атрибут может быть? – Mahdi

+2

Вы имеете в виду добавить идентификатор ресурса? Нет. Как я понимаю, кодированные данные base64 рассматриваются как часть ресурса, в который он встроен (например, HTML или CSS-файл). Очевидно, что если этот ресурс кэшируется, данные внутри него будут кэшироваться как часть его. –

+1

@OllyHodgson Спасибо за объяснение, это имеет смысл. – Mahdi

3

Как я понимаю, если строка base64 является частью HTML-документа (inline), то он должен быть загружен и проанализирован как изображение каждый раз при загрузке документа - нет способа кэшировать фрагменты документы. Если это фоновое изображение во внешнем файле CSS, его можно кэшировать с помощью файла CSS, но все равно нужно разбирать его с каждым запросом. Я также прочитал, что кодировка base64 добавляет около 30% накладных расходов поверх байтов изображения, но это может быть в значительной степени сглажено gzipping.

Смежные вопросы