2013-01-18 25 views
0

我在数据库如何处理自动更新在后台

  1. 1-多台
  2. 每个单元都有它以秒为自己更新时间
  3. 网页有动态内容
  4. 目前,有自动刷新(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来处理这个方法。

我从来没有这样做过,我想听听基于经验的意见。什么是最好的选择?

回答

0

您提取上次更新时间并在获取更大数据之前比较它们的方案对于此问题是非常有效的方法,但您可以考虑其他方法。特别是你试图实现的是叫做server push。使用最新的更新时间戳可以近似于此,但长期轮询和(未来/某些浏览器)WebSockest等替代技术是一些替代方法。

Here is a better writeup to a similar question