V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
PageSpeed 相关文档
为 NGINX 编译 PageSpeed 支持
ngx_pagespeed
Configuring mod_pagespeed Filters
加载性能测试工具
WebPagetest
Gomez
changwei
V2EX  ›  前端优化

百度前端还有很多可以优化的措施,为什么百度都没有用上呢?

  •  
  •   changwei · 2017-03-06 07:51:37 +08:00 · 4020 次点击
    这是一个创建于 2853 天前的主题,其中的信息可能已经有所发展或是发生改变。

    比如说这是百度贴吧 frs 页面的源码,居然注释在发布的时候没有自动删除,留下了一些统计策略,先不说会不会泄露一些敏感信息,像百度这种 PV 量级如此之大的网站,一个页面这几 k 的注释去掉了,一天也可以节省很多流量把。

    还有别的什么小图标 base64 ,多个脚本合并等等我粗略的观察了一下做的也不是很好,比如说脚本合并部分,虽然脚本合并了,但是链接也是类似于

    <script src="http://tb1.bdstatic.com/??/tb/static-common/js/promise_3464b70.js,/tb/static-common/js/promise_config_91c2822.js,/tb/static-common/lib/uri.js/src/URI.min_e84a17a.js,/tb/static-common/js/jquery/jquery_ba2d628.js,/tb/static-common/js/jquery/jquery-ui-1.10.3.custom_65f256d.js,/tb/static-common/js/jquery/jquery.ui.droppable_3b547e9.js,/tb/static-common/js/jquery/jquery.lazyload_49a7282.js,/tb/static-common/lib/fis-module/fis_c1e11e0.js,/tb/static-common/js/__aop_af3a579.js,/tb/static-common/js/baiduTemplate_841433b.js,/tb/static-common/js/jcarousellite_1.0.1_a033082.js,/tb/static-common/js/page_link_574ec55.js,/tb/static-common/js/pageconf_8abbe38.js,/tb/static-common/js/tb_0bcfe52.js,/tb/static-common/js/tb_extend_000de9f.js,/tb/static-common/js/tb_fis_config_cf706ac.js,/tb/static-common/js/tb_stats_2bbe535.js,/tb/static-common/js/underscore_b23cfa6.js,/tb/static-common/js/qrcode_f84ab06.js,/tb/static-common/lib/fis-module/module_5ae89d6.js,/tb/static-common/lib/bigpipe.js/lib/bigpipe_eabdb6b.js,/tb/static-common/js/bigpipe_config_56d197b.js,/tb/static-common/js/lcs/lib/Long_8276e76.js,/tb/static-common/js/lcs/lcsas_df4742e.js"></script>
    <script src="http://tb1.bdstatic.com/??/tb/static-common/js/common/MessageSystem_2f3859e.js,/tb/static-common/js/common/CommonManager_main_d3b4283.js,/tb/static-common/js/common/passport/pass_shell_5ffcdcb.js,/tb/static-common/js/common/passport/passport_reset_ec12f65.js,/tb/static-common/js/common/passport/PassportFillName_0930ec0.js,/tb/static-common/js/common/uiDecorator_125371a.js,/tb/static-common/js/common/passport/PassportLogin_31ee196.js,/tb/static-common/js/common/user/User_53cdde4.js,/tb/static-common/js/common/crosspage_msg_system/utils/LCFManager_7f8094d.js,/tb/static-common/js/common/crosspage_msg_system/utils/MessageProxy_25dc8d9.js,/tb/static-common/js/common/crosspage_msg_system/utils/SWFListen_87d118b.js,/tb/static-common/js/common/crosspage_msg_system/utils/SWFRequest_f586836.js,/tb/static-common/js/common/crosspage_msg_system/MsgSystem_4809342.js,/tb/static-common/js/common/user_message/UserMessage_fe9d8f9.js,/tb/static-common/js/tb_https_f79be4c.js"></script>
    

    这种情况,链接那么长。看他注释用的是 FIS 构建,我没用过这个构建工具,不知道是不是它本身只能生成这么长的 URL ?

    还有一些其他的优化措施你们也可以打开百度各个分站的页面源代码观察一下,有大量注释和内联 JavaScript 代码没有去除,不知道是不是历史遗留问题。

    突然想起以前谷歌连页面底部的</html>结束标签都要省掉来节省流量,不知道为什么百度没有在前端优化上精益求精?

    19 条回复    2017-03-06 14:20:46 +08:00
    vghdjgh
        1
    vghdjgh  
       2017-03-06 08:13:37 +08:00
    可能是:用的 fis 框架( https://github.com/fex-team/fis3 )不支持,这段代码没有被 code review ,开发者没发现,开发者发现了,但懒的找框架开发去做
    virusdefender
        2
    virusdefender  
       2017-03-06 08:22:29 +08:00 via iPhone
    后面的链接好像是在利用 tengine 的合并功能
    changwei
        3
    changwei  
    OP
       2017-03-06 08:27:01 +08:00 via Android
    @virusdefender 那个链接也很奇怪啊,连用了两个问号,难道是以查询参数的方式提交需要请求的模块源文件名,让服务器返回对应打包好的文件?
    swift
        4
    swift  
       2017-03-06 08:27:10 +08:00   ❤️ 1
    每个项目无论你什么时候单独看都有优化的空间,关键是有时候上线后没有再优化的机会。
    virusdefender
        5
    virusdefender  
       2017-03-06 08:44:02 +08:00 via iPhone
    @changwei tengine 的用法,就是这样的
    tomato3
        6
    tomato3  
       2017-03-06 09:19:28 +08:00 via Android
    百度贴吧每取消一个关注 每删除一个收藏 都要重新加载新页面 应该是没有机会优化了
    66beta
        7
    66beta  
       2017-03-06 10:08:55 +08:00
    年轻人,开发任务很满的,不是你想改哪里就可以改哪里的
    wvidc
        8
    wvidc  
       2017-03-06 10:10:39 +08:00
    有这优化的闲工夫 百度已经完成了一个小目标 你懂的
    lwbjing
        9
    lwbjing  
       2017-03-06 10:13:58 +08:00
    KPI 里可能没有这项吧。。
    mikuazusa
        10
    mikuazusa  
       2017-03-06 10:16:17 +08:00
    留条生路给后面同事吧,不然后来者的 KPI 怎么搞?
    murmur
        11
    murmur  
       2017-03-06 10:38:48 +08:00
    优化再好有毛用 人家架不住 CDN 牛逼扛得起 你牛逼的优化架不住垃圾 CDN
    gzip 一下有多少多余的
    前端压缩不压缩 混淆不混淆都那回事 留一点好奇心给好奇的人万一能招揽到人呢
    按这么说在控制台里留招聘信息的也是多此一举咯?

    前端说优化,我呵呵了,以前用 zepto 的鄙视 jquery 大,但是 jquery 再大 min 了也才 100 多 k
    现在的库呢
    murmur
        12
    murmur  
       2017-03-06 10:46:40 +08:00
    顺便说一句,现在前端的优化仅停留在面试阶段,真正推动前端发展的是
    ( 1 )电脑越来越牛逼了, IE6 时代什么 CPU ,现在什么 CPU
    ( 2 )浏览器更新
    ( 3 )宽带升级
    ( 4 )移动流量越来越便宜,以前最早套餐 30m ,现在多少 g ,每月还要发愁如何浪费流量
    iyaozhen
        13
    iyaozhen  
       2017-03-06 11:15:50 +08:00 via Android
    这是不能看分站,不是一拨人写的。而且大家对前端优化(基本优化有,但不极致)不是那么重视,没时间排期给你做这个,而且等你优化好了第二版又要上了。
    xuexb
        15
    xuexb  
       2017-03-06 12:16:09 +08:00
    压缩注释那个确实可以配置去注释的吧
    小图标 base64 这个看场景吧
    赞楼主~
    sunsulei
        16
    sunsulei  
       2017-03-06 13:08:54 +08:00
    @murmur 不敢苟同,大站的流量也是钱啊。当然还是可
    changwei
        17
    changwei  
    OP
       2017-03-06 13:22:25 +08:00 via Android
    @xuexb 他为什么不把这链接弄短一点呢?像 webpack 那样简洁多好,难道这里面有啥学问嘛?

    @murmur 那为什么谷歌连 7 个字节的结束标签都考虑进去了,说明人家优化确实做到了极致啊。再说了假设他一天几十亿 pv ,每次请求节省 1kb ,那也非常可观啊,无论是钱还是环保节能。

    @iyaozhen 这种面试题都会出现的优化手段应该是在研发的时候就要考虑进去的,不应该是先把成品做好上线再考虑优化问题吧

    @tomato3 对,还有百度贴吧发帖的时候抓包会发现它是先发送一个 ajax 发帖请求,然后再把帖子页面刷新一遍,搞不懂他们为什么会有这么奇怪的逻辑。

    @virusdefender 刚刚查了一下,明白了,谢谢。
    xuexb
        18
    xuexb  
       2017-03-06 14:11:51 +08:00
    @changwei 我理解那个链接是 nginx 根据 url 来动态拼出来结果, webpack 是离线本地打包的吧, 不是一个类型的, https://github.com/alibaba/nginx-http-concat
    murmur
        19
    murmur  
       2017-03-06 14:20:46 +08:00
    @sunsulei 钱不钱的也就是嘴上吧,各家网站现在贴图一个比一个炫酷, banner 一个比一个大,好几年前支付宝就开始用 video 作为 bg ,还在首页挂梦的汽车人,各家发布会的时候首页也都是直播的各种入口,看来有 cdn 啥问题都不是问题

    虽然说带宽比较值钱,但是现在看来还是便宜不少。。

    @changwei 岂止, google 的设计就偏简约,对比 youku 和 youtube 的首页图片排布就知道了, youku bg 那么大一个两会
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   956 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 21:02 · PVG 05:02 · LAX 13:02 · JFK 16:02
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.