前后端分离之后,通信这一块会不会产生新的瓶颈? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
kokdemo
V2EX    前端开发

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

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

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



    ps:说实在的,因为搞这个分离,导致要开发很多接口,后端和前端的压力都大了不少……让我总对这种分离的思路很不看好。
    36 条回复    2014-09-10 10:49:38 +08:00
    yemoluo
        1
    yemoluo  
       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  
    PRO
       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  
    PRO
       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  
    PRO
       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  
    PRO
       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     Solana     1194 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 26ms UTC 17:45 PVG 01:45 LAX 09:45 JFK 12:45
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86