Refactor & 效能提升第一章作业
打开一个网站的速度通常取决于三个因素:1、网页文件的大小(和网速决定下载需要的时间,通常一个页面100-200KB,网速通常不可控。);2、服务器所在位置;3、服务器生产页面所需要的时间(通常100-200ms)。网页打开的时间实际上是由这几个因素需要的时间的累加。
网页文件代码通常包含html、css、javescript三部分,他对打开网页的影响就体现在其对下载文件所需要的时间的影响上。后端代码通常包括ruby code以及数据库相关,其对打开网页所需要的时间的影响,体现在它运行代码从数据库拿出相关数据并生成相应的页面和文件需要的时间(也就是从收到quest请求,到routing、controller、model、view的时间)。服务器所在地就简单多了,主要看服务器离使用者的远近(对应相应的地理位置)以及服务器能够提供的带宽,它可以通过使用ping命令查看完成一次封包请求需要的时间来测试。
所以,针对这三点我们要提高一个网页的打开速度。其中,提高网页文件的大小属于前端调整。而提高服务器的位置以及服务器产生页面的时间属于后端调整。
然而,在进行代码优化的时候我们就不得不考虑一个问题,那就是从那块开始优化的时间投入产出比最高?也可以说,如果使得见效最快。
这就需要考虑两个问题,一个是优化需要的时间,还有一个是优化后的效果。
比较三者,可以发现调整网页文件的大小和服务器的位置效果最明显。而,调整后端命令,由于本身后端生成页面时所需要的时间量级已经小于两者,所以收效较低。举个例子如下:
调整前端架构或搬机器:从 10s 下降到 2s (1s = 1000ms)
调整后端代码或数据库架构:从 500ms 下降到 150ms
再来看看投入时间,由于服务器通常是成组的,而且调整服务器会涉及到很多问题,特别是跨大区域调整服务器是问题非常多。而修改网页代码以及后端程序生成代码则相对简单得多,只需要对代码进行调整就好。而其中,后端代码往往相互关联所以调整起来规模又会比调整相对独立的前端页面代码复杂的多。
所以,综上,优先调整前端代码的时间和效率是最划算的。特别是作为个体户程序员来讲,这个往这个方向思考会更有效率。
Refactor & 效能提升第一章作业