Картинки в теле страницы с помощью data:URI |
|
Встроенные изображения используют схему data:URI для внедрения прямо в тело веб-страницы. Как было определено в RFC 2397, такие URI предназначены для вставки небольших объектов как «непосредственных данных» (которые можно использовать без дополнительных запросов внешних ресурсов). Такие объекты должны рассматриваться так же, как и любые другие внешние файлы. Использование встроенных изображений позволяет сэкономить HTTP-запросы к внешним ресурсам. Поддержка браузерамиХотя Opera 7.2+, Firefox, Safari, Netscape и Mozilla поддерживают data:URI, Internet Explorer 5-7 - решительно нет. Однако, Internet Explorer 8 будет поддерживать эту схему. Существует также несколько приемов для поддержки старых версий Internet Explorer (о них чуть ниже). Схема data:URIСхема data:URI предоставляет способ для внедрения «непосредственно данных» точно так же, как если бы они были подключены через вызовы внешних файлов. Синтаксис у нее следующий: data:[<тип данных>][;base64],<данные> В случае простых изображений вам нужно указать mime-тип для них (например, image/gif), за ним идет base64-представление бинарного файла с изображением. Ниже приведен пример (переводы строк добавлены, чтобы не разрывать страницу, на самом деле, их нет): <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAALCAIAAAD5gJpuA В результате мы получим следующее изображение иконки флага:
Рис. 21. Пример изображения, вставленного с помощью data:URI. Источник webo.in CSS и встроенные изображенияТакие изображения, внедренные в HTML-страницы, не кэшируются для повторного использования. И они не кэшируются от странице к странице (это логично: ведь нам нужно каждый раз загрузить HTML-код для отображения этой картинки, они будут кэшироваться только с HTML, их содержащим). Однако CSS-файлы замечательно кэшируются браузерами, и такие изображения могут быть повторно применены вместе с использующим их селектором, например: ul { Проблемы data:URIС описанным выше подходом для подключения изображений связаны две основные проблемы. Во-первых, вам нужно пересчитывать base64-представление изображений и редактировать CSS-файл каждый раз, когда само изображением меняется. Также IE до версии 7 включительно не поддерживает встроенных изображений. У первой проблемы есть простой решение на PHP: <?php echo base64_encode(file_get_contents("../images/flag.png")) ?> Этот код читает файл с изображением и автоматически преобразовывает его на сервере в base64. Однако, это простота этого решения повлечет некоторую дополнительную нагрузку на сервер. Как вариант, можно рассмотреть автоматический пересчет всех картинок и вставку их в CSS-файл, например, раз в 5 минут по необходимости (если файл с изображением изменился). Дополнительно нужно будет озаботиться, чтобы сбросить кэширование для самого CSS-файла, содержащего такие изображения. Работа в Internet ExplorerСуществует три способа обойти отсутствие в IE поддержки data:URI. Используя распознавание браузеров (например, с помощью условных комментариев, ведь речь идет только про IE), можно просто отображать внешнее изображение для IE и встроенные изображения для остальных браузеров. Или вы можете применить JavaScript для эмуляции этой поддержки в IE, но эта техника потребует довольно значительного объема JavaScript-кода. О третьем способе пойдет речь в разделе, описывающем mhtml-технику. Вышеприведенный PHP-код позволяет легко вставить base64-аналог изображения (можно расширить этот пример, чтобы, например, распознавать заголовки, отправляемые браузером серверу и только для IE выводить URL для изображения, для остальных же кодировать его в base64): ul { Когда сервер анализирует CSS-файл, он автоматически перекодирует бинарный файл изображения в base64 и отправит эти данные внутри CSS-файла. Следующим шагом будет добавление распознавания браузеров для отправки изображения только IE и встроенных изображений всем остальным. Это можно сделать либо внутри CSS-файла с PHP-кодом, либо с помощью условных комментариев, например: <!--[if gte IE 5]> В файле ie.css должно быть нормальное обращение к картинке, например: ul li {
|
Алгоритм НаходкаТестирование новой версии алгоритма Яндекса началось 9 июля 2008 года. По заявлениям Яндекса, «основные изменения в программе связаны с новым подходом к машинному обучению и, как следствие, отличиями в способе учета факторов ранжирования в формуле». Читать полностью |
Алгоритм Снежинск10 ноября 2009 года Яндексом была анонсирована новая версия поискового алгоритма – Снежинск. Коренные изменения произошли в алгоритме расчета релевантности – представители Яндекса написали следующее: «Нам удалось создать более точную и гораздо более сложную математическую модель, которая привела к существенному приросту в качестве поиска. Благодаря переработке архитектуры ранжирования в... Читать полностью |
Оптимизация сайтов под поисковые системы"Найдётся всё!" - говорит Yandex , обнадёживая тем самым пользователей. Но кто обнадёжит владельцев сайтов, которые хотят, чтобы "нашёлся" именно их Интернет-ресурс? Итак, попробуем разобраться, что же такое поисковая оптимизация сайтов и что она может дать с точки зрения потребностей каждого конкретного владельца сайта. Читать полностью |
Алгоритм Магадан14 апреля 2008 года адресу buki.yandex.ru начала тестироваться новый поисковый алгоритм «Магадан». Кроме того, что увеличилось вдвое количество факторов ранжирования, был также добавлены следующие нововведения: Читать полностью |
