如何在后台实现自动更新
How to approach auto-updates in the background
我有
- 1-数据库中的多个单元
- 每个单元都有自己的更新时间(以秒为单位)
- 具有动态内容的网页
- 当前有自动刷新(2分钟)嵌入见下文每次调用
function refreshPage(){
minutes = 2;
seconds = 0;
interval=120000;
getCheckedUnits(); //call to function that checks and updates stuff
}
function timedRefresh(timeoutPeriod) {
//refreshPage();
setInterval(refreshPage, timeoutPeriod);
countdown('countdown');
}
var interval;
var minutes = 2;
var seconds = 0;
function countdown(element) {
interval = setInterval(function() {
var el = document.getElementById(element);
if(seconds == 0) {
if(minutes == 0) {
el.innerHTML = "Waiting for refresh";
clearInterval(interval);
return;
} else {
minutes--;
seconds = 60;
}
}
if(minutes > 0) {
var minute_text = minutes + (minutes > 1 ? ' minutes' : ' minute');
} else {
var minute_text = '';
}
var second_text = seconds > 1 ? 'seconds' : 'second';
el.innerHTML = 'Page will auto-refresh in: ' + minute_text + ' ' + seconds + ' ' + second_text + ' remaining';
seconds--;
}, 1000);
}
我需要做的是,它使它对用户透明,并根据需要调用更新(我在数据库中设置了值)。
作为一种解决方案(在JS-Ajax中),我可以使用与上面相同的计时器(将其设置为5秒)并创建一个数组,其中包含存储id,上次更新时间和下一次更新时间的对象。然后,只有当当前时间大于下一次更新时间时,我才能更新每个对象。或者我可以通过cron-job来实现这个方法。
我以前从未这样做过,我想听听基于经验的意见。最好的选择是什么?
获取最后更新时间并在获取更大的数据之前比较它们的方案是解决此问题的完全有效的方法,但是您可以考虑其他方法。具体来说,您要实现的就是所谓的服务器推送。使用最后更新时间戳可以近似地解决这个问题,但其他技术,如长轮询和(在将来/某些浏览器中)websocket是一些替代方案。
这是对类似问题的更好的描述。
相关文章:
- 如何使用动画实现纸张推车
- Javascript循环不会自我更新
- 如何在执行 Ajax 请求大量数据库更新时实现进度条
- 如何实现更新文章系统
- 实现已验证用户更新状态的最佳方式,作为对系统中已更改状态的反应.(ASP.NET MVC网站)
- 如何在 AngularJs 中的数据库发生变化时立即实现自动视图更新
- 实现具有快速更新脉冲响应的卷积混响
- 通过锚链接实现跳到主要内容技术时更新键盘焦点
- 最简单的实现方式是网页上的动态更新表(java/css)
- Highcharts:在数据实现时更新图表
- 频繁的轮询会使服务器过载吗?如果是的话;这是实现实时更新的最佳方式
- 如何在pouchdb中实现部分更新?
- 实现轮询Rails前端调用更新
- 如何实现一个方法来更新jquery插件中的选项
- Java' Rhino实现实现了哪个JavaScript (ECMAScript)版本(更新策略是什么?)
- 由于实现$mdDialog(材料设计),Angular没有更新循环
- 在Rails中实现AJAX调用复选框来更新数据库
- 如何在后台实现自动更新
- 如何在angularjs中实现基于其他对象的对象更新
- 我如何实现实时更新预览(例如Stack Overflow帖子)