SimpleXMLElement性能降低

时间:2015-06-22 20:58:05

标签: php xml simplexml

我正在使用SimpleXMLElement()从网站获取数据,该网站用于嵌入数据。我使用的代码如下:

$rss = new SimpleXMLElement('http://eliteprospects.com/rss_player_stats2.php?player='.$player_array[0]['embed_stats'], null, true);
foreach($rss->xpath('channel/item') as $item)
{
     echo  utf8_decode($item->description);
}

这很好用,除了一个问题,数据从其他站点加载异常缓慢。页面加载从大约0.5-1s到2.5-3s。

是否有一种方法可以使用,异步加载,或者是否应该使用更快的函数?

想到的一个想法是在初始页面加载后在iFrame中加载一个单独的页面,还是有更好的方法?

1 个答案:

答案 0 :(得分:0)

  

是否有我可以使用的方法,异步加载,或者是   我应该使用更快的功能吗?

不幸的是,与长响应时间无关(通常假设连接速度不太古老)。同时回显结果可能会减慢浏览器渲染速度,从而降低页面加载时间。

AJAX非常适合 - 等待window.onload并触发对您的Web服务的AJAX调用(保留问题的片段)以准备输出缓冲区并将响应返回给浏览器。然后使用innerHTML设置/替换所选DOM元素的response.responseText值。

伪代码

window.onload = function()
{
    var url = 'http://example.com/webserice';

    Ajax.get(url, function(response)
    {
        var responseText = response.responseText;

        document.getElementById('someid').innerHTML = responseText;
    }  
}

我在纯JS中使用的代码段,虽然jQuery has a lot more appealing way to do it

Ajax = { 

    request : {},

    createRequest : function()
    {
        var request = false;

        if (window.XMLHttpRequest)
        {
            request = new XMLHttpRequest();
        }
        else
        {
            if (window.ActiveXObject)
            {
                request = new ActiveXObject('MSXML2.XMLHTTP.3.0');
            }
            else
            {
                request = false;
            }
        }

        return request;
    },

    get : function(page, callback)
    {
        var self = this;
        var request = this.createRequest();

        if (! page)
        {
            return false;
        }

        request.onreadystatechange = function()
        {
            if (request.readyState == 4 && request.status == 200)
            {
                delete self.request;

                if (typeof callback == 'function')
                {
                    callback(request);
                }
                else
                {
                    self.update(request, callback);
                }

                var regex = /<script\b.*?>([\s\S]*?)<\/scri/ig;
                var match;
                while (match = regex.exec(request.responseText))
                {
                    eval(match[1]);
                }
            }
        }

        request.open('GET', page, true);
        request.setRequestHeader('X-Requested-With', 'ajax');
        request.send(null);
    }
}