Можно ли использовать <a href= "https://stackoverflow.com/data; ..." rel="nofollow noreferrer" >для отображения изображений?
Я узнал, что возможно встроить изображение на HTML-страницу, например, вместо ссылки на отдельный файл изображения:
<a href="data:image/png;base64,...(blah blah base64-encoded png goes here)..."
width="70" height="38" alt="image embedded using base64 encoding!"></a>
Является ли это "безопасным", так как все современные браузеры смогут просматривать изображение, если я придерживаюсь общих форматов, таких как PNG/JPG? Есть ли недостатки, отличные от base64-кодирования изображения, увеличивающего размер изображения на бит?
Спасибо.
Ответы
Ответ 1
Да, это безопасно - все основные браузеры поддерживают схему URI .
Один недостаток заключается в том, что если вы используете одно и то же изображение несколько раз на странице, он будет закодирован несколько раз по сравнению с одним загруженным.
Другим является ограничение размера, накладываемое некоторыми браузерами (IE 8 разрешает до 32k).
Вы также можете использовать это в CSS для смягчения проблемы с загрузкой.
Ответ 2
Все современные браузеры должны иметь возможность просматривать эти типы изображений. Я не проверял, но эта возможность существует уже давно и, вероятно, широко поддерживается.
Но вы также попросили о недостатках. Одна из недостатков заключается в том, что распространенная разметка HTML динамически генерируется и, следовательно, не может быть кэширована.
- Если у вас есть статические html-страницы, ваш html кэшируется в этом случае, используя URL-адреса данных, возможно, даже лучше для производительности, если изображения не слишком большие.
- Если вы включаете это в любой динамический html (php, cgi, jsp, shtml, почти все, кроме xml, html, xhtml, htm), тогда будет нулевое кэширование, и поэтому изображения будут загружаться каждый раз а не только в первый раз.
Другие недостатки, которые, вероятно, не связаны с
- Также, в общем случае, base64 занимает ровно одно и втрое больше места, чем файл. Вот почему для больших изображений это может быть немного менее хорошим, даже если это статическая страница html. Но если ваш веб-сервер поддерживает gzip, то для изображений он не займет больше времени.
- И даже если это статический html, если вы используете URL-адрес данных (можно назвать вложение ваших изображений), вся страница не будет отображаться перед изображениями, как обычно. Но для страниц с маленькими изображениями, которые не имеют значения.
- И, наконец, если у вас большие изображения, вы могли бы захотеть сделать это, потому что браузер не сможет использовать несколько подключений для загрузки, как это обычно бывает.
- Также @Oded downsides (и потенциал роста), о котором я не думал о