V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
halicando
V2EX  ›  程序员

这种情况是jQuery的.load()的问题吗?

  •  
  •   halicando · 2013-06-26 20:21:11 +08:00 · 3517 次点击
    这是一个创建于 4169 天前的主题,其中的信息可能已经有所发展或是发生改变。
    通过点击一个链接,在某个div里加载一个带参数的动态url(比如"/user/htmlfiles/{{id}}/"),返回的是另一个html页面的内容。用了jQuery的.load(),感觉加载得好慢啊,本机测就能觉得有延迟,还能忍。在服务器上测试访问的时候,感觉页面就卡死了,至少有2、3秒时间鼠标点击没反应。

    但是,如果把url放在浏览器里直接向服务器请求,速度却很快,完全没有等待的感觉,所以能肯定不是网速、服务器或者数据库设置的问题,大家有碰到过同样的情况吗?有什么好的解决方法?
    5 条回复    1970-01-01 08:00:00 +08:00
    xieranmaya
        1
    xieranmaya  
       2013-06-27 12:19:02 +08:00 via Android
    难道是用的同步请求
    ijse
        2
    ijse  
       2013-06-27 12:40:27 +08:00   ❤️ 1
    用审查元素看下,先找出哪块费时最多。。
    halicando
        3
    halicando  
    OP
       2013-06-27 14:11:07 +08:00
    @xieranmaya 默认应该是异步的
    otakustay
        4
    otakustay  
       2013-06-27 21:03:39 +08:00   ❤️ 1
    如果鼠标点击没反应,那肯定不是网络传输,而是脚本在执行。jQuery的.load函数是使用dataType: html去加载资源,这意味着jQuery会把返回的HTML解析成DOM再使用,而这个解析过程要处理<script>标签等一堆问题(我记得以前版本jQuery处理这个的函数叫.clean,是个内部函数,现在不知道咋样了),HTML比较大的时候卡住也是可能的
    halicando
        5
    halicando  
    OP
       2013-06-28 10:53:38 +08:00
    @ijse
    @otakustay
    @xieranmaya
    问题已解决,经js调试,发现事件触发后,js加载时间长,数据多,导致速度异常,后来终于找到原因,是内嵌templates的base页包含了过多的不必要的脚本,导致加载时速度变慢。
    谢谢大家。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   888 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 20:51 · PVG 04:51 · LAX 12:51 · JFK 15:51
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.