iPhone - 数据URI(css背景图像)仅在连接到WIFI时有效

时间:2011-02-02 12:30:27

标签: iphone mobile-safari data-uri

我已经创建了一个供Android和iPhone设备使用的移动网络应用程序,经过测试后,我很高兴一切都运行良好,因此决定尝试优化它。

我决定在我的css文件中使用数据uri,因为所有图像都是小的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简写,不同的mime类型,不使用Google Minify,但都无济于事。但这仍然无法解释为什么它在WiFi上完美运行。

Android设备也可以像Firefox,Chrome和桌面版Safari一样完美运行。此外,在加载实际的PNG图像文件时(与使用数据URI嵌入图像相反),图像加载正常。

如果有人能够对此有所了解,我将永远感激,大多数事情我都可以解决,但这让我完全难过!

2 个答案:

答案 0 :(得分:1)

我想知道运营商是阻止数据URI方案还是普通不支持它。我会尝试用移动连接来连接笔记本电脑,看看数据URI是否有效。嗯,但是你不会在Web服务器日志上看到请求失败。我还建议使用wireshark查看请求进入服务器,并查看移动连接与wifi之间的请求是否存在差异(特别是在两个请求中发送的标头)

答案 1 :(得分:1)

这不是一个真正的解决方案,更多的是解决方法......

似乎经过多次搞乱之后,我能找到的唯一方法就是使用它来运行(使用go2)是为包含数据uri的css使用内联样式。

但是,我的意图是将图像嵌入到外部样式表中,以便它(和嵌入的图像)将被缓存,将图像嵌入到html文档本身意味着我无法缓存图像,因此必须加载每个请求。

与往常一样,如果有更好的方式我会喜欢听到它。