gpt4 book ai didi

javascript - 如何在不验证缓存的情况下更新背景图像

转载 作者:行者123 更新时间:2023-11-28 00:05:18 25 4
gpt4 key购买 nike

我为我的网站创建了一个简单的图片幻灯片。基本上,它只是一个 Javascript 函数,每 5 秒运行一次并更新 div 元素的 CSS“背景图像”属性。它运行良好,但是,我注意到每次运行该函数时它都会联系服务器以验证图像是否在缓存中。这每次都会从服务器生成一个 304 代码。

图像肯定会在缓存中,因为它们是已包含在同一页面其他地方的图像。因此,当网站最初加载时,它们已经加载到缓存中。

这是我的代码的简化示例。如您所见,图片 URL 只是从页面上已加载的 img 元素中提取的:

function update(img) {
var slideshow = document.getElementById("slideshow");
slideshow.style.backgroundImage = 'url("' + image + '")';
}

function advance() {
var img = document.getElementsByClassName("slidesource")[index].src;
update(img);
index++;
}

var index = 0;
advance();
setInterval(advance,5000);

有没有一种方法可以更新 CSS 属性,而浏览器不必验证图像是否在缓存中?

验证它们是否存在会浪费互联网数据(尽管每个请求仅约 1.5kB),并且如果互联网断开连接将导致幻灯片停止工作,即使图像已经在缓存中也是如此。

最佳答案

我无法重现您的问题,尝试使用一些 img 标签和一个 div 标签来编写您的代码。

但是,如果我手动关闭 Chrome 中的缓存并再次打开它,我可以复制。无论如何,使用下面的代码,尝试从服务器再次加载图像时我没有遇到任何问题。

CSS 解决方案

<style>
#slideshow {
width: 400px;
height: 400px;
}

.img1 {
background-image: url("https://picsum.photos/400/400")
}

.img2 {
background-image: url("https://picsum.photos/400/401")
}

.img3 {
background-image: url("https://picsum.photos/400/402")
}
</style>

<body>

<div id="slideshow"></div>

</body>

<script>
function update(imgclassName) {
var slideshow = document.getElementById("slideshow");
slideshow.classList.remove( slideshow.classList[0] );
slideshow.classList.add(imgclassName);
}

function advance() {
update('img'+index);
index++;
if (index > NUMBER_OF_IMAGES) {
index = 1;
}
}

var NUMBER_OF_IMAGES = 3;
var index = 1;
advance();
setInterval(advance,1000);
</script>

关于javascript - 如何在不验证缓存的情况下更新背景图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55735840/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com