为什么 Android 不缓存 Apple Touch Icons?

为什么 Android 不缓存 Apple Touch Icons?

我不确定这是否适用于每部 Android 手机,但似乎许多 Android 浏览器不会缓存 Apple Touch Icon 并在每次浏览页面时重新加载它。

<head>我的 HTML 页面中有以下内容:

<link rel="apple-touch-icon" sizes="152x152" href="/path/to/icon.jpg" />

在我的服务器日志中,我看到许多来自 Android 客户端的访问者在每次浏览页面时都会不断请求图标文件:

[02/Jan/2014:16:21:43 +0100] "GET /path/to/icon.jpg HTTP/1.1" 200 13017 "-" "Mozilla/5.0 (Linux; U; Android 4.1.2; de-de; GT-I9100 Build/JZO54K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30"
[02/Jan/2014:16:22:04 +0100] "GET /path/to/icon.jpg HTTP/1.1" 200 13017 "-" "Mozilla/5.0 (Linux; U; Android 4.1.2; de-de; GT-I9100 Build/JZO54K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30"
[02/Jan/2014:16:22:30 +0100] "GET /path/to/icon.jpg HTTP/1.1" 200 13017 "-" "Mozilla/5.0 (Linux; U; Android 4.1.2; de-de; GT-I9100 Build/JZO54K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30"
[02/Jan/2014:16:22:45 +0100] "GET /path/to/icon.jpg HTTP/1.1" 200 13017 "-" "Mozilla/5.0 (Linux; U; Android 4.1.2; de-de; GT-I9100 Build/JZO54K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30"
[02/Jan/2014:16:23:03 +0100] "GET /path/to/icon.jpg HTTP/1.1" 200 13017 "-" "Mozilla/5.0 (Linux; U; Android 4.1.2; de-de; GT-I9100 Build/JZO54K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30"

我在 Android 4.1、4.2 和 4.3 版本中都遇到过这种情况。我的服务器发送了一个Expires标头,因此缓存应该可以正常工作:

$ date -u
Thu Jan  2 15:28:49 UTC 2014
$ curl -s -D - www.mywebsite.com/path/to/icon.jpg -o /dev/null
HTTP/1.1 200 OK
Date: Thu, 02 Jan 2014 15:28:52 GMT
Server: Apache/2.2.16 (Debian)
Last-Modified: Mon, 30 Dec 2013 14:04:44 GMT
ETag: "15201cd-316b-4eec0ecfd5700"
Accept-Ranges: bytes
Content-Length: 12651
Cache-Control: max-age=900
Expires: Thu, 02 Jan 2014 15:43:52 GMT
Content-Type: image/jpeg

这些客户端还成功缓存了 CSS 和其他文件。

有人见过这种情况吗?原因是什么?这只是 Android 浏览器的一个错误吗?

相关内容