在我的网站上,当页面加载时,一些 javascript 会检测屏幕分辨率,然后使用以下代码将正文的背景设置为 url:
var url = "http://site.com/get_background/" + width + "/" + height;
var body=document.getElementsByTagName('body')[0];
body.style.background = "#000000 url(" + url + ") fixed top center";
在 urlget_background/
处,使用以下 PHP 代码提供图像:
$etag = md5_file($image);
$lastModified = gmdate('D, d M Y H:i:s', filemtime($image)) . ' GMT';
header("Content-type: $mime");
header("ETag: \"{$etag}\"");
header("Last-Modified: $lastModified");
header('Cache-Control: max-age=28800');
$image = readfile($image);
imagejpeg($image);
imagejpeg($image);
在 Firefox 中,这一切都按预期工作。但是在 Chrome 中,每次加载此站点上的页面时,图像似乎会再次加载,而不仅仅是被缓存和提供。
如果我将用于设置背景的代码移动到外部 css 文件,那么它在 chrome 中按预期工作,但是如果我把它放在 javascript 中,那么它似乎会让 Chrome 刷新图像。
我该怎么办?由于需要通过javascript检测屏幕分辨率,因此代码必须放在JS中。有没有办法强制 chrome 缓存图像,即使它是通过 javascript 加载的?