代码之家  ›  专栏  ›  技术社区  ›  dmgig

Ajax加载时间-主机和服务器问题?

  •  2
  • dmgig  · 技术社区  · 16 年前

    我遇到了一个Ajax调用缓慢的问题。这是一个常见的问题,但我已经做了所有我能找到的研究建议。我希望能得到阅读本文的人的一致意见。

    基本上,我对一个PHP页面发出一个Ajax请求,它从数据库中获取信息。

    Here 是页面。

    我已经对所有的javascript、mysql和php脚本、请求和页面进行了计时。 (如果运行firebug,您可以在控制台和XML中看到我的时间标记)

    作为一个例子

    MySQL请求需要20毫秒 PHP页面需要50毫秒 Ajax成功脚本处理少量XML(小于1K)并生成标记,需要8毫秒才能运行。

    然而,加载页面需要将近4秒钟。

    所以,假设没有一个脚本是滞后的,这一定是服务器的响应时间或者我自己的互联网连接的问题,对吗?

    我会欣赏任何理论或想法。

    谢谢你

    1 回复  |  直到 15 年前
        1
  •  2
  •   Adrian    16 年前

    好的,看看你的页面,我看到一些会影响速度的问题:

    1. 在getmarkers函数中获取数据需要4毫秒,但读取XML文件需要892毫秒。我建议回到普通的javascript来读取XML文件,因为您执行的find的数量确实会损害您的性能。
    2. 缩小并合并服务器上本地的所有脚本。我得到了一些非常高的反应时间。通过这样做,您可以消除4个HTTP请求,而使用服务器上的响应时间会有所帮助。(注意不要在此组合jquery或jquery用户界面)
    3. 由于您的服务器有点慢(这不是您的错,因为您可能在共享主机上,这会有所不同),我建议您将jquery和jquery用户界面链接到Google cdn主机版本。这是一个帖子 Jquery CDN
    4. 您的页面上有24个图像,其中23个在4KB以下。将这23个图片组合成一个CSS sprite图片,并指定一个1px x 1px的空白gif作为内联HTML图片,而使用CSS sprite图片。以下是一篇很好的文章,介绍如果您不熟悉这是什么: CSS Sprites explained 这里还有一个很好的在线CSS sprites生成器: CSS Sprite generator
    5. 确保此页面需要jquery用户界面。我没有看到任何需要它的东西。如果你能删除它,你就可以保存206K。如果不需要的话,记得删除相关的CSS文件。这将为您节省另外两个电话。
    6. 没有挖得太深,但是如果你还没有开始调用在一个$(document.ready()中设置谷歌地图,那么页面的其余部分可以加载,你可以在该区域显示加载动画。这样用户就知道发生了什么事情,页面的加载速度会更快。

    所以你可以通过做上面的事情来大大加快速度。您可以从82个组件升级到51个本地组件,在Google CDN上再升级2个。如果您可以改进XML读取时间,那么您也可以节省近一秒的卸载时间。