2013-08-27 5 views
0

У меня есть кусок кода, который вызывает график, который периодически контролирует график, и отображается с малиновым pi, но проблема, с которой я столкнулась, связана с ограниченной памятью Pi , Chromium умирает, потому что у него заканчивается память. Я думаю, это связано с тем, что когда изображение обновляется, оно сохраняет старые изображения где-то. Я попытался использовать JS для удаления изображения и создания нового с обновленным изображением, но это не сработало. Я не слишком хорошо знаком с Javascript, поэтому не был уверен, что я делаю ошибку новобранец или что-то в этом роде. Вот код:Javascript заставляет Chromium исчерпать память

<script type= "text/javascript"> 
var graph = "http://www.example.com"; 
function preload() 
{ 
    try 
    { 
     var buffer = new Image(); 
     buffer.src = graph; 
     buffer.onload = function() 
     { 
      while (1) 
      { 
       setTimeout(preload, 1000); 
       document.getElementById('graph').src = buffer.src; 
      } 
     } 
    } 

    catch(err) 
    { 
     txt = "Error\n" + err.message; 
     alert(txt); 
    } 
} 
preload() 
</script> 

И HTML для изображения:

<img src= "http://www.example.com" id=graph width=1015 
    height=275 frameborder="0" onload="preload()" style="display: block; 
    margin-left: auto; margin-right: auto;" align="bottom"/> 
+0

Вы ставите в очередь бесконечное количество событий ('while (1) {setTimeout (/*..*/);}'). Вот почему ваш браузер исчерпал память. – Halcyon

ответ

0

Вот значительно упрощена сценарий для вас - ваш цикл не имеет смысла вообще, и нет Ajax в вашем код

var graph = "https://zabbix.tulsahpc.org/signage/sign.png",tId; 
window.onload=function() { 
    tId=setInterval(function() { 
    document.getElementById('graph').src = graph+new Date().getTime();// avoid cache 
    },10000);// reload every 10 secs 
} 
Смежные вопросы