如何让Domotica脚本中的Buienradar API每小时自动刷新?
解决Buienradar雷达图无法定时刷新的问题
嘿,我看了你的代码,问题出在浏览器缓存上!你每次请求的都是同一个URL,浏览器会把第一次加载的图片存起来,之后再请求相同地址时直接用缓存的旧图,根本不会去服务器拿新数据。
给你几个简单的修改点,就能搞定这个问题:
- 给图片URL加一个动态时间戳参数,让每次请求的地址都不一样,这样浏览器就会认为是新资源,重新发起请求。
- 删掉冗余的代码(那个
var html的部分完全没用到,留着占地方)。 - 把设置图片src的逻辑封装成函数,代码更整洁,也方便复用。
修改后的完整代码如下:
<div class="col col-md-3 col-sm-6 col-xs-12"> <div class="box box-primary"> <div class="box-header with-border"> <h3 class="box-title">Buienradar</h3> </div><!-- /.box-header --> <div class="medium-box-body"> <img id="radarupdate" /> </div> </div> </div> <script> $(function() { Domotica.dashboard.init(); }); // 封装设置雷达图src的函数 function updateRadarImage() { // 生成当前时间戳,确保每次URL都唯一 const timestamp = new Date().getTime(); const radarUrl = `http://api.buienradar.nl/image/1.0/RadarMapNL?w=256&h=256&t=${timestamp}`; $('#radarupdate').attr("src", radarUrl); } $(document).ready(function() { // 页面加载时先初始化一次 updateRadarImage(); // 3600000毫秒 = 1小时,按需求定时刷新 setInterval(updateRadarImage, 3600000); }); </script>
额外提醒一下:你原来的setInterval是900000毫秒(15分钟),如果确实要每小时刷新,记得改成3600000毫秒哦~
内容的提问来源于stack exchange,提问作者Jeroen_
相关产品推荐
相关产品推荐

