一旦图像以任何方式装入浏览器,就将装在浏览器中,并将在下一年使用时装上更快的垫子,只要图像在浏览器切身之前使用,这种使用是否在目前的网页上或在其他网页上。
因此,为了预示图像,你必须做的是把图像装入浏览器。 如果你想预示一幅图像,那很可能最好用javascript做,因为通常从javascript处打上页数。 你可以这样做:
function preloadImages(array) {
if (!preloadImages.list) {
preloadImages.list = [];
}
var list = preloadImages.list;
for (var i = 0; i < array.length; i++) {
var img = new Image();
img.onload = function() {
var index = list.indexOf(this);
if (index !== -1) {
// remove image from the array once it s loaded
// for memory consumption reasons
list.splice(index, 1);
}
}
list.push(img);
img.src = array[i];
}
}
preloadImages(["url1.jpg", "url2.jpg", "url3.jpg"]);
这一职能可以像你所希望的多次一样被称作,而且每次都会给预谋增添更多的形象。
一旦图像通过javascript上载,浏览器就会把图像放在其藏身处,而且你可以仅提及其他地方(在你的网页上)的普通URLs,浏览器会把URL从它的切身上而不是从网络上排出来。
最终随着时间的推移,浏览器海滩可以填充和存放过去曾经使用过的旧东西。 因此,这些图像最终会流出海滩,但应当暂时留在那里(取决于海滩的大小以及其他浏览量如何)。 每当这些图像实际上被再次装上或用在网页上时,它都会自动恢复其在浏览器的海滩上的地位,因此他们不太可能从海滩上流出。
browser cache是交叉页,用于装入浏览器的任何页面。 因此,你可以在贵址的某个地方预设,而浏览器的海滩则在你网站上所有其他网页上工作。
如上所示,这些图像的装载时间是同步的,不会阻挡你页的装载或显示。 但是,如果你的网页有自己的图像,这些预想的图像可以竞争带宽或与你网页上展示的图像连接。 通常,这只是一个值得注意的问题,但就缓慢的关系而言,这一引诱可能会减缓主页的负荷。 如果是最后装上前载图像的大韩民国,那么你就可以使用一种功能版本,在所有其他页面资源都已装满之后,才能开始上载。
function preloadImages(array, waitForOtherResources, timeout) {
var loaded = false, list = preloadImages.list, imgs = array.slice(0), t = timeout || 15*1000, timer;
if (!preloadImages.list) {
preloadImages.list = [];
}
if (!waitForOtherResources || document.readyState === complete ) {
loadNow();
} else {
window.addEventListener("load", function() {
clearTimeout(timer);
loadNow();
});
// in case window.addEventListener doesn t get called (sometimes some resource gets stuck)
// then preload the images anyway after some timeout time
timer = setTimeout(loadNow, t);
}
function loadNow() {
if (!loaded) {
loaded = true;
for (var i = 0; i < imgs.length; i++) {
var img = new Image();
img.onload = img.onerror = img.onabort = function() {
var index = list.indexOf(this);
if (index !== -1) {
// remove image from the array once it s loaded
// for memory consumption reasons
list.splice(index, 1);
}
}
list.push(img);
img.src = imgs[i];
}
}
}
}
preloadImages(["url1.jpg", "url2.jpg", "url3.jpg"], true);
preloadImages(["url99.jpg", "url98.jpg"], true);