V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
kokdemo
V2EX  ›  前端开发

前后端分离之后,通信这一块会不会产生新的瓶颈?

  •  
  •   kokdemo ·
    kokdemo · 2014-09-08 12:15:47 +08:00 · 5634 次点击
    这是一个创建于 3729 天前的主题,其中的信息可能已经有所发展或是发生改变。
    我发现我最近在做的一个东西,向服务器发一个请求,再把数据取回来,要花2秒多的时间,相当影响页面的加载。

    这一块也会产生瓶颈吗?你们有事怎么处理的?



    ps:说实在的,因为搞这个分离,导致要开发很多接口,后端和前端的压力都大了不少……让我总对这种分离的思路很不看好。
    36 条回复    2014-09-10 10:49:38 +08:00
    GTim
        1
    GTim  
       2014-09-08 12:20:05 +08:00
    先做了再说. 分离前期很痛苦,后期很欢乐
    learnshare
        2
    learnshare  
       2014-09-08 12:20:36 +08:00
    前后端分离,其实是降低了服务器的压力,提高了响应速度才对。后端搞成 RESTful 的话,应该有很多框架可以用,能够大大降低开发难度和工作量。

    响应慢的话,测试一下慢在哪里就好了。实在很慢,可以加一个 loading 效果到页面里,这样也比整页空白要好的吧。
    kokdemo
        3
    kokdemo  
    OP
       2014-09-08 12:22:33 +08:00
    @learnshare 现在后端没有啥框架……都是需要一个内容,后端去写新的接口……构造一个长长的url来取数据……

    整个页面加载5s,服务器请求2s,我觉得这里问题很大……
    ferock
        4
    ferock  
       2014-09-08 12:23:26 +08:00 via iPhone
    慢怎么都慢,不分离你就快了?
    gno23x
        5
    gno23x  
       2014-09-08 12:26:37 +08:00
    2s多,这时间一般不是耗在建立请求,看下服务端的io操作耗时多少吧。
    fansekey
        6
    fansekey  
       2014-09-08 12:27:44 +08:00
    经过长期测试,前端获取数据这种方式,性能很是问题。
    组建大UI才是王道。可以服务器端架设UI层,来从数据层获取数据支撑业务逻辑、模板渲染。

    UI层可以直接由前端负责,后端依然是restful接口。
    kokdemo
        7
    kokdemo  
    OP
       2014-09-08 12:41:13 +08:00
    @ferock ……有道理

    部门的老大现在也没有申请更多的服务器,于是在一个服务器上跑了好多业务,配了两个tomcat做“负载均衡”,orz
    kokdemo
        8
    kokdemo  
    OP
       2014-09-08 12:42:26 +08:00
    @fansekey 大ui?

    就是把模版渲染好,传到前端来?
    loading
        9
    loading  
       2014-09-08 12:48:01 +08:00 via Android
    不说具体场景都是耍流氓!
    chshouyu
        10
    chshouyu  
       2014-09-08 13:49:13 +08:00 via iPhone
    我们这的后端不懂jsonp。。。
    fengliu222
        11
    fengliu222  
       2014-09-08 14:12:34 +08:00
    个人认为,先分析一下这2秒钟都花在了什么地方,如果是服务器端返回的慢,那应该不是前后端分离的问题。
    kaneg
        12
    kaneg  
       2014-09-08 14:19:18 +08:00
    如果你不是做什么很复杂的业务操作,后台操作2s基本上认为是有性能问题
    learnshare
        13
    learnshare  
       2014-09-08 14:38:35 +08:00
    2s 可能的原因有很多啊,细细排查一下问题在哪里。

    前后端分离利大于弊吧,不过就需要独立前端了,对小团队来说还是一个麻烦。
    lygmqkl
        14
    lygmqkl  
       2014-09-08 15:07:46 +08:00
    感觉不太可能出现这样大的差别。
    wsph123
        15
    wsph123  
       2014-09-08 15:45:06 +08:00 via iPhone
    这两秒又不是前后端分离本身导致的呀
    这样放在一起才更慢,找为啥慢 别怨前后端分离
    fansekey
        16
    fansekey  
       2014-09-08 16:14:19 +08:00
    @kokdemo 是的
    ferock
        17
    ferock  
       2014-09-08 17:06:27 +08:00 via iPhone
    @kokdemo 不会是win 吧,找到哪里慢才是解决问题的关键
    kzzhr
        18
    kzzhr  
       2014-09-08 17:57:32 +08:00
    可以加个loading 进度条之类的动画来缓解延迟感
    也可以参考coding.net这样先加载默认内容
    反正不要把blank留出来就行
    kokdemo
        19
    kokdemo  
    OP
       2014-09-08 18:40:26 +08:00
    @ferock ……我还真不清楚……
    kokdemo
        20
    kokdemo  
    OP
       2014-09-08 18:43:20 +08:00
    @learnshare
    @wsph123

    我自己表达这个观点主要还是因为现在接口的开发没有任何的标准,也就是上面说的RESTful……

    需要个啥,就新弄个接口,工作量很大
    ferock
        21
    ferock  
       2014-09-08 18:43:29 +08:00 via iPhone
    @kokdemo 你就按照function 打点分析
    kokdemo
        22
    kokdemo  
    OP
       2014-09-08 20:12:01 +08:00
    @ferock 什么叫打点分析?
    leiz
        23
    leiz  
       2014-09-08 20:21:42 +08:00
    @kokdemo 每个function打个时间看看哪里耗时最多
    ferock
        24
    ferock  
       2014-09-08 21:42:50 +08:00 via iPhone
    @kokdemo 楼下告诉你了
    learnshare
        25
    learnshare  
       2014-09-08 21:43:07 +08:00
    @kokdemo 系统规模大的话,一定要好好规划,否则后边都是坑
    takato
        26
    takato  
       2014-09-08 21:44:47 +08:00
    @fansekey 根据多年测试经验来看,这种应用往往质量堪忧,因为缺乏测试切入点
    missdeer
        27
    missdeer  
       2014-09-08 22:14:44 +08:00
    怎么感觉跟我司做法有点像,哦哈哈
    incompatible
        28
    incompatible  
       2014-09-08 22:18:31 +08:00
    @fansekey 这跟传统的cgi编程有啥区别?
    fansekey
        29
    fansekey  
       2014-09-09 22:03:35 +08:00
    @incompatible 其实是现实的一种折中,把业务展现相关的交由同一拨人去开发,剩下的一波人就可以努力完善数据了。
    fansekey
        30
    fansekey  
       2014-09-09 22:08:13 +08:00
    @takato 测试的切入?是否可以考虑通过单元测试解决。
    takato
        31
    takato  
       2014-09-09 22:45:54 +08:00
    @fansekey 单元测试可以,但是代码这道壁垒是很多测试工程师不愿意越过的(或者越不过的),而开发的思路总体和测试思路是不太一致的。所以会导致这个点上风险其实是比较大的,因为你的数据已经被包装成UI
    fansekey
        32
    fansekey  
       2014-09-10 07:32:47 +08:00
    @takato 1. RESTful的数据接口是可以通过单元测试搞定。 2. UI层这块还是按照以前的测试方式可以搞定,因为原先最多就是直接访问数据库,并没有什么不同。3. 对于很多测试工程师不想越过代码,这个原因优点牵强。 如果是这样,单测完全可以由开发自己搞定,可以上ci等系统来保证功能正常。
    takato
        33
    takato  
       2014-09-10 09:39:16 +08:00
    @fansekey 根据目前所观察,有些 *良好* 单元测试习惯的开发工程师,在国内不超过10%
    takato
        34
    takato  
       2014-09-10 09:39:51 +08:00
    @fansekey lastComment.delete("些")
    fansekey
        35
    fansekey  
       2014-09-10 10:28:57 +08:00   ❤️ 1
    @takato 嗯,你说的确实是现状。但是为啥有那么多的开发不愿意写单测,这个问题值得考虑。是否是写感觉浪费时间疑惑是写单测太难,或者单测经常修改。找到这些根结,是否就可以督促开发写单测了呢。比如单测太难,可能是设计分层有问题,经常修改可能是抽象不理想。写单测完全对开发是个互惠的过程。

    虽然现状是这个样子的,但在有效的模式下是可以达到单测保证质量的这个目标的,只是时间问题。
    takato
        36
    takato  
       2014-09-10 10:49:38 +08:00
    @fansekey 其实目前总体行业现状是,平均值比国际水平的确低了很多,但不乏处于塔尖的人,如何帮助普通人快速地写单测,以及养成这个习惯,是一个亟待探讨的问题。

    感觉这个问题说大一点,和缺乏幸福感有关,我管这东西叫做信仰。

    曾经我也觉得信仰是个很虚的东西,直到我玩了《文明》

    才知道一个光环对于一个地区能力的加成是非常深刻的。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1268 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 52ms · UTC 18:01 · PVG 02:01 · LAX 10:01 · JFK 13:01
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.