【问题标题】:What alternativ is best for interval page reloading?什么替代方法最适合间隔页面重新加载?
【发布时间】:2018-03-13 14:11:03
【问题描述】:

我很懒,我编写了一个代码,它从数据库中获取数据,然后如果发生变化,每秒都会在索引上重新加载一个页面,因此无需刷新页面即可看到它。

什么方法更快?

        function getLowPlayers() { 
        var httpd; 
        if (window.XMLHttpRequest) { 
            httpd = new XMLHttpRequest(); 
        } else if (window.ActiveXObject) { 
            httpd = new ActiveXObject("Microsoft.XMLHTTP"); 
        } 

        httpd.onreadystatechange=function() 
        { 
            if (httpd.readyState==4 && httpd.status==200) 
            { 
                document.getElementById("lowplayers").innerHTML= httpd.responseText;  
                setTimeout(getLowPlayers, 1000);  
            } 
        }   

        httpd.open("GET", "includes/ajax.php?noCache=" + Math.random(), true); 
        httpd.send(); 
    } 

或者这个:

function ajaxCall() {
    $.ajax({
        url: "ajax.php", 
        success: (function (result) {
             var res = $.parseJSON(result);
             var str1 = "<center><img src='https://steamcommunity-a.akamaihd.net/economy/image/";
            var str3 = " ' height='60' width='70'/></br>";
            var mes = [];
            var div = [];   
        })
    })
};

我知道这样做是一个愚蠢的解决方案,我可以设置一个 socket.io 服务器,但我认为它的工作量太大。

我知道有很多访问者,ajax.php 文件每秒会发送很多查询,这对数据库健康吗?或者今天的互联网速度和托管服务还可以吗?

哪个更快?或者你们有什么更好的办法吗?

【问题讨论】:

  • 这两段代码之间不会有任何有意义的性能差异。
  • 这两个选项或多或少是相同的。第一个使用普通的 Javascript,第二个使用 jQuery。性能方面取决于您拥有的访问者数量。
  • @Pointy 好的,但是这样做可以吗?还是太过分了?
  • @Markus Müller 再次这样做是不是有点矫枉过正,还是你有更好的选择?

标签: javascript php jquery mysql live


【解决方案1】:

这两个代码差不多,第一个是用javascript vainlla写的,第二个是JQuery,因此更短更简单。

如果我必须决定,我会选择第二个代码,因为它更易于阅读和维护。

关于这两个代码之间的性能实际上是相同的,尽管如果有很多连接,使用 ajax 的选项将不是很正确,因为每个服务器请求都占用“X”内存,如果我们谈论的是大数字,这意味着由于等待队列,该页面将加载缓慢。

因此,正如您所说,最好的办法是配置 socket.io 并尝试使用从服务器到客户的调用来更新页面。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-12-25
    • 1970-01-01
    • 2013-09-09
    • 2014-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-14
    相关资源
    最近更新 更多