2

AndroidおよびiPhoneデバイスで使用するモバイルWebアプリケーションを作成しました。テスト後、すべてが完全に機能することに満足していたため、少し最適化してみることにしました。

すべての画像が小さい16x16pxpng画像であるため、cssファイルでデータURIを使用することにしました。

WiFi経由でインターネットに接続されたiPhoneでテストしている間、画像は正常に読み込まれますが、モバイルデータ接続を使用して接続している場合、画像は読み込まれません。

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と同様に完全に機能します。また、実際のP​​NG画像ファイルをロードする場合(データURIを使用して画像を埋め込むのではなく)、画像は正常にロードされます。

誰かがこれに光を当てることができれば、私は永遠に感謝します、私が解決できるほとんどのことですが、これは私を完全に困惑させます!

4

2 に答える 2

1

これは実際には解決策ではなく、より多くの回避策です...

多くのことをいじった後、これを機能させるために私が見つけることができる唯一の方法(usin go2)は、データURIを含むcssにインラインスタイルを使用することであるようです。

ただし、私の意図は、画像を外部スタイルシートに埋め込んで、それ(および埋め込まれた画像)がキャッシュされるようにすることでした。画像をhtmlドキュメント自体に埋め込むと、画像をキャッシュできないため、リクエストごとにロードする必要があります。

いつものように、もっと良い方法があれば、私はそれについて聞きたいです。

于 2011-02-04T09:45:17.723 に答える
1

キャリアがデータURIスキームをブロックしているのか、それともプレーンがそれをサポートしていないのか疑問に思います。ラップトップをモバイル接続に接続して、データURIが機能するかどうかを確認します。うーん、でもそうすれば、Webサーバーのログでリクエストが失敗するのを見ることはないでしょう。また、 wiresharkを使用してサーバーに着信するリクエストを確認し、モバイル接続からのリクエストとWi-Fiからのリクエスト(具体的には2つのリクエストで送信されるヘッダー)に違いがあるかどうかを確認することをお勧めします。

于 2011-02-02T12:48:40.267 に答える