2

我创建了一个供 Android 和 iPhone 设备使用的移动 Web 应用程序,经过测试,我很高兴一切正常,因此决定尝试对其进行一些优化。

我决定在我的 css 文件中使用数据 uri,因为所有图像都是 16x16px 的小 png 图像。

使用通过 WiFi 连接到 Internet 的 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 一样完美运行。此外,在加载实际的 PNG 图像文件(与使用数据 URI 嵌入图像相反)时,图像加载良好。

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

4

2 回答 2

1

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

似乎经过很多混乱,我能找到让它工作的唯一方法(使用 go2)是对包含数据 uri 的 css 使用内联样式。

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

与往常一样,如果有更好的方法,我很想听听。

于 2011-02-04T09:45:17.723 回答
1

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

于 2011-02-02T12:48:40.267 回答