`
dixian
  • 浏览: 15730 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

网站技术分析报告之——开心网(kaixin.com)

阅读更多

楔子

一直在研究互联网技术,经常访问这样那样的网站,突发奇想,为什么我们不去看看这些网站的技术架构是怎么样的呢?研究一下源代码?于是便有了这个系列,首先找谁呢?我想还是找山寨版的开心网开刀吧,这个开心网,不是那个开心网,呵呵。

坦白说,我不太想注册,也不想研究太多太多,一般来说,一个网站最重要的是首页,Ok,那我们就从首页开始吧。

本系列文章仅仅是个人研究发布,仅供参考,本人不承担任何责任,呵呵,谢绝跨省抓捕。对于开心网,因为是一个封闭系统的系统,我挑了一个注册的页面来分析。页面网址:http://reg.kaixin.com/kx7201.do?ss=10112&rt=26
分析工具:各种浏览器,firebug(一个基于firefox的插件)

导语:

我如果是陈一舟,我一定炒掉开心网的CTO,为什么呢,这么简单的一个登陆页,居然做到了385.2KB之大,像开心网这么大的流量,每多1kb就意味着每天N多的钱哪。呵呵,开玩笑啊,开心网的CTO别骂我,假如哪一天你真被炒了,别怪我啊,只能说是巧合。我没有找到官方的pv或独立Ip的数据,根据alexa的数据参考一下吧,估计日均独立IP为528,000,我们估计按每独立IP访问一次登陆吧,实际上可能少一些,因为很多用户可能直接在首页上登陆了(alexa的数据也不是那么可靠,供参考吧)。

开心网的网页每增加1k,我们需要多少带宽?算一下,我们需要528,000/1024=515MB/天的带宽,然后我们平均一下,按一天24小时用户访问很平均来计算(实际上不可能,一般峰值访问会是平均值的一倍以上),每秒需要消耗带宽是528000 / (24小时 * 60分钟 * 60秒)=6Kb,考虑到峰值,估计要到12k以上。

看官,我认为像开心网这么简单的登陆,完全可以控制在100k以内的大小,为什么我要这么多呢,一会儿看我对网页的分析就可以知道了。这是什么概念?385-100=285k,再算出带宽得出:285k * 12k / 1024 = 3.3M。乖乖,开心网每天需要添加3.3M的独享带宽。3.3M的带宽会是多少钱呢?像开心网这种网站,怎么也不可能放特别垃圾的机房吧,我们就以中档的机房来举例。北京中档的3M独立带宽,怎么也得3-5万块吧,我没有找到合适的数据,只是根据各网站估计一个值,有知道的朋友告诉一下。再加上CDN的带宽,我估计开心网每年需要为此增加5-8万的费用。

 

分析一下开心网存在的问题:

1. Javascript文件直接写在了网页当中

开心网的登陆页有大量的javascript的代码,这样的代码一方面不利于维护,另一方面,也不利用用户加载页面。大致计算了一下,开心网登陆页一个有180余行的javascript代码,而总代码仅在336行,也就是说代码中的javascript代码占了1/2 强。

2. 网页没有开启gzip

这是一个比较白痴的错误,根据文件头返回的信息可以看到,开心网应该在linux上搭建了nginx ,添加gzip应该不会是很难的事吧?而且像html及静态js/css这些文件,gzip后起码可以减少50%的传输量,当是这一项,就可以每年省下上百万的费用。

当然有人会反对,认为gzip会加重服务器的压力,并且客户端解压的时间与减小文件大小带来的传输速度不会有太多好处。但我认为,对于静态文件来说,可以放到独立的服务器,这个服务器可以把文件压缩后放到缓存中,这样不用去读IO,响应速度会提高。同时,虽然现在用户的带宽都已经是512k的 adsl以上了,但是为什么我不可以让用户更快的看到我们的网页呢?退一万步说,用户真的在乎这个快几秒的,那么我们为什么不可以减小带宽的压力以节省成本呢?如果把节省下的这些钱去奖励员工,没准他们可以给我带来更多的惊喜呢。

3. Javascript没有做任何处理

开心网的javascript可真有意思,他们的开发人员代码质量还不错,起码注释写得还不错,可是问题是,你需要把这些注释都发到客户端么,难道开心网想教我们怎么写javascript代码?这样的代码发到客户端,既占带宽又会泄密网站的代码。

开心网的核心javascript文件xn.core.js有105k,这么大的其中注释占了不少的代码,我尝试使用yahoo和google的压缩工具进行压缩,但因为代码中有错误无法完成,所以只好放弃。但我估计这个js,最基本的压缩去除空行和注释,可以减少1/5左右的大小,如果进行一些混淆的话,应该可以在40k左右,如果再gzip的话,应该就只有15k以内了。

4. 图片文件过大

登录页有一个157k的sys-bj2.jpeg文件,天啦,这么大的。我下载这张图片一看,发现这个图片实际是同几张图片组合的。他们的设计人员其实是想减少网页对服务器的请求数,所以把几个图片合并到一块。但是,他们这种做法是错误的。

我们要减少请求数,一般是把小图片,一般是几k的36 px* 36px以下的小图片合并,而不是把大图片也合并。因为小图片数量多,而大图的合并,也会增加图片的大小。我将这个图片用ps再优化一下,优化到66k,也没发现明显的失真。所以我认为,就算是大图,也可以优化到80k以内,而不是如此157k大小的图片。

再多一句,这个图片总量才5个合并是完全没有必要的,并且图片最大的有600px*255px,而最小的只有10px*10px以下,这种合并没有任何益处,百害而无一益!

总结:

开心网作为一个访问量非常大的网站,网页结构也非常简单,理应做得更小,比如在100k以内。从我的分析中可以看出,主要问题集中在javascript,gzip和图片上,代码质量总体还可以。当然,我们不仅只是挑刺,也应该看到一些好的地方,如下:
1. 首页处理得比较到位,虽然javascript也没有压缩,但总大小只有108k
2. 文件请求数较少,这个和开心网本身有关,开心网本来就不是一个网页结构复杂的网站,所以文件数自然会比较少了
3. 静态文件和网页分开部署
4. Javascript注释比较好,但不应该发到客户端

重要建议:

1. 开启gzip压缩
2. 压缩javascript及css,并将这些文件缓存起来

最后,这次的分析就写到这里了,就事论事而已,和任何网站及相关的人员没有任何关系,呵呵。

 

本文来自涂雅[http://iove.net/],原文链接:http://iove.net/archives/1623.html,网站转载请注明来源于涂雅并保留原文链接,否则视为侵权。

分享到:
评论

相关推荐

    kaixin.com卡片助手

    "kaixin.com卡片助手"是一款专门针对开心网(kaixin.com)用户设计的应用工具,旨在帮助用户更方便地管理和收集网站中的虚拟卡片。在开心网上,卡片作为一种互动元素,可以增强用户的游戏体验和社交乐趣。这款助手...

    安卓Android源码——精典源码之高仿开心网.zip

    总之,这份"安卓Android源码——精典源码之高仿开心网.zip"为开发者提供了一个实际项目的学习机会,通过它,开发者不仅可以加深对Android平台的理解,还能掌握实际项目开发中的各种技术和最佳实践。

    Android源码——仿开心网源代码.zip

    在本项目中,"Android源码——仿开心网源代码.zip" 提供了一个学习和研究Android应用程序开发的机会,特别是对于那些对社交网络应用设计感兴趣的人来说。这个压缩包包含了一个模仿开心网(Kaixin001)功能的Android...

    kaixin.zip_V2 _酒店官网dedecms

    【标题】"kaixin.zip_V2 _酒店官网dedecms" 涉及的主要知识点是基于DEDECMS内容管理系统构建的酒店官网模板及其组件。DEDECMS,全称是DedeCms,是一款广泛使用的开源内容管理系统,尤其适用于中小企业和个人建站。这...

    安卓Android源码——[安卓开源]高仿开心网.7z

    【标题】"安卓Android源码——[安卓开源]高仿开心网.7z" 提供的是一个基于Android平台的开源项目,目标是模仿知名的社交网络应用“开心网”的功能和界面设计。这个项目对于Android开发者来说,是一个学习和研究移动...

    自动登录网站的软件 非常方便 开心网(kaixin和kaixin001都可以)

    自动登录功能在这个场景下,意味着用户安装并配置好这种软件后,无论是访问kaixin.com还是kaixin001.com,都能实现一键快速登录,而无需每次手动输入账户信息。同时,描述中的“当然,只要不要求输入验证码的网站都...

    kaixin.apk

    标题中的"kaixin.apk"指的是一个Android应用软件包,它是Android操作系统上运行的应用程序的安装文件。在Android系统中,APK文件包含了应用程序的所有组件,包括代码、资源、图片、XML配置等,用户可以通过安装这个...

    开心网自动加好友工具,一天可加300多个好友

    1、在地址栏输入开心网 www.kaixin001.com 的地址。 2、手动登陆。 3、在 sns 网站列表中找到:开心网 ,开心网下面有个子菜单:自动添加好友; 4、点击:自动添加好友 5、拿起茶杯喝茶 6、好友蹭蹭往上窜!

    KaiXin.rar_android_android本地图片

    【标题】"KaiXin.rar_android_android本地图片"是一个Android开发相关的项目,重点在于如何在Android应用中使用本地图片资源。这个项目模仿了开心网的主界面,并实现了基本的功能,但具体细节操作如用户交互、数据...

    kaixin.rar_Set INI_kaixin_python 自动升级_pywin32

    python写的开心脚本,使用python3.1编写(花园精灵模块基于python2.6,需要PIL),xml解析需要安装模块lxml,windows下需要pywin32(不喜欢可以自己改掉) 功能: 支持windows和linux,命令行界面,可修改ini文件配置...

    Android应用源码之高仿开心网.zip

    【标题】"Android应用源码之高仿开心网"是一个基于Android平台的开源项目,旨在模仿知名社交网络“开心网”的功能和界面设计。这个项目为Android开发者提供了一个学习和研究移动应用开发的实例,尤其是对UI设计和...

    精简版深度XP2IIS补丁包

    【深度XP2IIS补丁包】是一款专为深度Linux精简版设计的补丁集合,主要用于在该系统上添加并完善Internet Information Services (IIS)功能。IIS是微软公司开发的一款强大的Web服务器,广泛应用于Windows操作系统,而...

    程炳皓反思:微博兴起非开心网“降温”根源.docx

    5. 域名策略与品牌保护:开心网在初期未能及时购买kaixin.com域名,导致了真假开心网之争,这是公司在品牌保护和域名策略上的教训。 6. 适应移动趋势:为应对挑战,开心网转向移动游戏领域,计划发布多款游戏并可能...

    开心网教父dos版123

    Kaixin for Kaixin.com 使用前请先安装 Framework2.0 【软件作者】 bbs.webgame007.com 【发布时间】 2009-2-1 【功能更新】 【软件功能】 功能列表: * 教父-自动做任务 * 教父-自动存钱 * 教父-自动火拼(选择...

    仿开心网源码分享

    【标题】"仿开心网源码分享"所涉及的知识点主要集中在网站开发、前端设计以及社交网络应用的构建上。开心网是中国早期的社交网络平台,它的用户界面(UI)设计简洁而富有吸引力,因此“仿开心网源码”通常指的是...

    病毒式营销在国内SNS网站推广中的应用探析.rar

    本文采用文献分析和个案研究的方法,通过对开心网成功应用病毒式营销进行推广的个案进行分析,结合病毒式营销的理论,得出一些适用于国内SNS网站进行病毒式营销推广的方法,以便使病毒式营销更好地为国内SNS网站推广...

    原创: httpclient 4.0 使用 - 访问开心网的各种组件 例子

    《HttpClient 4.0 使用详解:访问开心网组件实例》 ...通过理解并实践文中介绍的步骤,你可以轻松地构建出能够访问开心网或其他网站的程序。同时,HttpClient 的灵活性和扩展性使其适用于各种复杂的网络应用场景。

    高仿开心网

    【标题】"高仿开心网"所指的是一款模仿知名社交网络平台“开心网”的软件或网站开发项目。这个项目可能旨在提供与原版开心网类似的功能和用户体验,包括社交互动、游戏、分享等内容,让用户体验到相似的在线娱乐和...

    腾讯微博,新浪微博SDK 开心网搜狐微博轻量的SDK代码包

    4、开心网API OAuth1.0 & OAuth2.0 5、搜狐微博 OAuth1.0 6、网易微博 OAuth1.0 7、人人网SDK OAuth2.0 8、百度开放平台 OAuth2.0 一库接入所有平台 :) demo目录是演示代码。 文件名为tencent.php、...

    用httpclient写的登录开心网

    HttpPost httpPost = new HttpPost("https://www.kaixin001.com/login.php"); ``` 3. **添加请求头**:为了模仿浏览器行为,可能需要添加一些常见的请求头,如`User-Agent`和`Content-Type`: ```java ...

Global site tag (gtag.js) - Google Analytics