使用 Javascript 强制刷新图像

因为现代浏览器和服务器旨在尽可能地优化数据使用,并使使用缓存来确保您不必多次加载相同的图像。从长远来看,缓存可能是有益的,但它确实使重新加载图像等操作变得更加困难,因为您不能简单地替换图像或重置其源。鉴于您尝试加载的图像的 URL 在修改前后保持完全相同,浏览器将假定它是完全相同的图像,而不是从服务器再次请求它,它将从缓存,它不会刷新。

通过欺骗浏览器缓存来强制重新加载图像

浏览器缓存依赖于 URL 来确定内容是否相同以及是否使用存储的版本。这意味着如果我们更改 URL 中的某些内容,然后尝试重新加载图像,缓存将不再能够确定它是相同的资源,而是会再次从服务器获取它。

为了在不影响图像的情况下修改 URL,我们可以简单地使用一个可以附加到 URL 末尾的虚拟查询字符串,它只需要是唯一的。为此,我们可以只使用时间戳,以便无论何时调用它,URL 始终是唯一的。

要在 Javascript 中重新加载图像,我们可以简单地选择 元素并将其 src 属性修改为目标图像的 src 属性,以及伪造的查询字符串以确保它不使用缓存。

例如,假设您有一个需要重新加载的图像“test.jpg”。

HTML

<img id="testimg" src="test.png">

Javascript

// create a new timestamp     
var timestamp = new Date().getTime();     
     
var el = document.getElementById("testimg");     
     
el.src = "test.png?t=" + timestamp;     

此代码将时间戳附加到源 URL,并确保使用新修改的图像重新加载和刷新图像。您可以使用同一段代码根据需要多次刷新图像,因此将其放入函数中很有用。

function refreshImage(imgElement, imgURL){    
    // create a new timestamp 
    var timestamp = new Date().getTime();  
  
    var el = document.getElementById(imgElement);  
  
    var queryString = "?t=" + timestamp;    
   
    el.src = imgURL + queryString;    
}    

如果您发现本教程有用或有任何疑问,请随时在下面发表评论!

  • 6
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值