iPhone - URI данных (фоновые изображения css) работают только при подключении к WIFI

Я создал мобильное веб-приложение для устройств Android и iPhone, после тестирования был доволен, что все работает отлично, и решил попробовать немного его оптимизировать.

Я решил, что буду использовать uri данных в моем файле css, так как все изображения имеют небольшой размер 16x16px png.

Во время тестирования с моим iPhone, подключенным к Интернету через Wi-Fi, изображения загружаются нормально, однако при подключении с использованием мобильной передачи данных изображения не загружаются.

Просматривая журнал ошибок Apache, я вижу, что по какой-то причине изображение запрашивается в виде файла (и не обнаруживается), хотя при использовании WiFi ошибок нет ...

File does not exist: /www/min/data:image, referer: http://mysite.com/login/

Я использую следующий CSS ...

    background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAA5CAYAAAD3PEFJAAAAUUlEQVQYV4XMyw1AABQF0ePpQCNK0Ke+lCEkFmLjWRHx3dzcZCaDItV1m5GZgn0y1+M9AWfl4r2Cv/Jd+fDWN/AXgCyrqukCY6APDIEpMAeWDc7zXPFRLR43AAAAAElFTkSuQmCC");

Я пробовал все, что мог, не используя сокращение css / используя сокращение css, различные типы mime, не используя Google Minify, но все безрезультатно. Но это все еще не объясняет, почему все это отлично работает по WiFi.

Устройство Android также отлично работает, как Firefox, Chrome и настольная версия Safari. Также при загрузке фактических файлов изображений PNG (в отличие от встраивания изображений с использованием URI данных) изображения загружаются нормально.

Если кто-нибудь сможет пролить свет на это, я буду бесконечно благодарен, большинство вещей я могу решить, но это меня полностью поставило в тупик!


person Dale Davies    schedule 02.02.2011    source источник
comment
Я должен отметить, что здесь используется iPhone 3G iOS 4.2.1 в сети O2 в Великобритании. Мое устройство Android - HTC Hero на T-Mobile.   -  person Dale Davies    schedule 03.02.2011
comment
Проблема, похоже, не связана со сжатием изображений O2, если можно полагаться на следующий учебник ... edandersen.com/2008/07/13/iphone-o2-fix-the-image-compression   -  person Dale Davies    schedule 03.02.2011
comment
Эта проблема, похоже, также не связана с настройкой конкретного веб-сервера. Все желающие опробовать мой тестовый документ могут найти его здесь ... daledavies.co.uk/datauri   -  person Dale Davies    schedule 03.02.2011
comment
Я тестировал свой телефон AT&T из США, и URL-адрес отлично показывает контент. Я думаю, у вас проблема с вашим провайдером. Прости! вы могли бы хотеть работать с O2?   -  person gbvb    schedule 03.02.2011
comment
Думаю, придется, спасибо за помощь :)   -  person Dale Davies    schedule 04.02.2011


Ответы (2)


Мне интересно, блокирует ли перевозчик схемы URI данных или просто не поддерживает их. Я бы попытался привязать ноутбук к мобильному соединению и посмотреть, работают ли URI данных. Хм, но тогда вы бы не увидели сбой запроса в журналах вашего веб-сервера. Я также рекомендую видеть запрос, поступающий на сервер, с помощью wirehark и посмотреть, есть ли разница в запросах между одним от мобильного соединения по сравнению с Wi-Fi (в частности, заголовки, отправляемые в двух запросах)

person gbvb    schedule 02.02.2011
comment
Спасибо, я подумал о возможности перезаписи данных оператором связи, возможно, с удалением URI данных. Но, как вы говорите, я могу не увидеть ошибку в своих журналах. На данный момент только мой рабочий сервер подключен к Интернету, поэтому я не могу установить на нем Wireshark, но я сколотил сценарий для сброса заголовков http в таблицу базы данных, к сожалению, за исключением заголовков HTTP_VIA и HTTP_X_FORWARDED_FOR, добавленных нашим прокси-сервером. остальные идентичны. - person Dale Davies; 02.02.2011
comment
Вы также пробовали привязать ноутбук и перейти к серверу? Это может показать, связана ли проблема с оператором связи. Похоже, что оператор связи каким-то образом заставляет обрабатывать запрос изображения как запрос файла, а не как запрос данных (не знаю, как .. :() - person gbvb; 02.02.2011
comment
При удаче? Это интересная проблема. - person gbvb; 02.02.2011
comment
Хм, похоже, я не смогу попробовать это, так как не могу сделать джейлбрейк iPhone. Сегодня вечером я проведу еще несколько исследований. - person Dale Davies; 02.02.2011
comment
Я не смог привязать iPhone. Но я считаю, что, возможно, я сделал ошибку где-то в файле css, поэтому я создал отдельную тестовую страницу. Это показывает то же поведение, мне также удалось найти друга с iPhone на другом носителе, и он работал нормально. Теперь я запутался, нам рекомендуется использовать URI данных при оптимизации мобильных веб-приложений (code .google.com / speed / article / mobile.html). - person Dale Davies; 03.02.2011

На самом деле это не решение, это скорее работа ...

Похоже, что после долгой возни единственный способ заставить это работать (usin go2) - это использовать встроенные стили для css, содержащих uri данных.

Однако я намеревался встроить изображения во внешнюю таблицу стилей, чтобы они (и встроенные изображения) стали кэшироваться, а встраивание изображений в сам html-документ означает, что я не могу кэшировать изображения, поэтому они должны загружаться при каждом запросе.

Как всегда, если есть лучший способ, я хотел бы услышать об этом.

person Dale Davies    schedule 04.02.2011