【问题标题】:ajax slowing down pageajax减慢页面
【发布时间】:2011-01-13 01:55:10
【问题描述】:

我有一个带有 ajax 的网页。 Ajax 必须从其他网站加载一些数据,这需要一些时间。在“加载”期间,我的网站对用户输入的响应不佳(转到其他页面等)。在任何人大喊大叫之前 - 是的,我知道,这是因为 ajax。 :)

我的问题是 - 有没有办法限制 ajax 带宽?快速的网站是我的首要任务,在后台加载数据是次要的。

所以,如果我有一个调用 php (ajax) 的 javascript,然后使用 cUrl 的 php 获取一些数据并将其返回给 javascript(实际代码很长,无法在此处发布,没有人会肯定地阅读它: D) 有什么方法可以防止该机制在完成之前阻止我的页面?

【问题讨论】:

    标签: php javascript ajax curl


    【解决方案1】:

    问题是什么使您的页面变慢了?根据您的描述,可能有几件事。

    使用 ajax 需要牢记以下几点:

    1:大多数浏览器只会同时对每个域执行两个 xhr 请求

    2:如果调用xhr的结果需要解析,并且解析繁重,比如在老浏览器中eval'ing json,在数据解析的时候会对浏览器产生卡顿的效果(js是单线程的从本质上讲,除非您在 html5 中计算网络工作者)

    3:如果 ajax 的结果由于 dom 注入而强制浏览器重新渲染页面,在旧浏览器中渲染可能会感觉很慢并且会卡住浏览器。

    4:如果您有带宽限制,请尝试在浏览器完成其他操作后运行您的 xhrs,例如,在页面加载时等待 domReady

    【讨论】:

    • 好吧,事实证明你已经成功了! :) 我只有一个 xhr,但是 php 必须解析结果,然后使用 json_encode 和 javascript 将这些结果发送到 ajax,然后在 div 中使用 innerHtml-s 那些结果 :) 页面没有被固定,但打开其他页面需要永远(用户点击链接后)
    • 好的,关于这个你还需要什么吗?
    【解决方案2】:

    寻找 Javascript 源文件的异步加载,我希望您已经在使用异步 XHR 调用。有关示例用法,请参阅 Google Analytics 跟踪文档:

    <script type="text/javascript">  (function() {
        var ga = document.createElement('script');     
        ga.type = 'text/javascript';
        ga.async = true;
        ga.src = ('https:'   == document.location.protocol ? 'https://ssl'   
                : 'http://www') + '.google-analytics.com/ga.js';
        var s = document.getElementsByTagName('script')[0];
        s.parentNode.insertBefore(ga, s);
        })();
       </script>
    

    http://code.google.com/apis/analytics/docs/tracking/asyncUsageGuide.html

    【讨论】:

    • 好吧,我正在使用异步 GET(如果您是这样想的话) ajax.open("GET","http...",true);
    • 而且,有问题的 javascript 不会在“head”中调用,它是在调用之前定义的 - 靠近页面底部
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-17
    • 1970-01-01
    • 2011-02-19
    相关资源
    最近更新 更多