iPhone - URI данных (css background images) работают только при подключении к WIFI - PullRequest
2 голосов
/ 02 февраля 2011

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

Я решил, что буду использовать данные URI в моем CSS-файле, так как все изображения представляют собой небольшие 16x16px PNG-изображения.

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

Просматривая журнал ошибок 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, различные типы пантомимы, не используя Google Minify, но все безрезультатно. Но это все еще не объясняет, почему все это прекрасно работает через WiFi.

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

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

Ответы [ 2 ]

1 голос
/ 04 февраля 2011

Это на самом деле не решение, это скорее работа вокруг ...

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

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

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

1 голос
/ 02 февраля 2011

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

...