毕业入职后主要做的是web后台开发,才开始深入接触web,在学校时基本都和蛋疼的windows打交道,大四实习时参与过移动app后端的工作,其实也和web后端差不多主要是提供接口,而web的性能在前端和后端都挺重要。 此这本书对于像我这种新手有一个全景式的介绍,我发现有不少性能优化方案也在公司也有实践。
首先大致地了解一下,一个web请求从浏览器发出直到呈现给用户的主要性能耗时在于一下几点:
1.数据在网络上的传输(可能会经过DNS,CDN,反射代理等);
2.web后端处理请求并返回结果(可能会和DB,cache,文件系统打交道);
3.前端页面在浏览器的渲染(前端的原理我就不是太了解了);
增加带宽,主要影响数据在网络上传输这一环节,解决下载速度变慢的问题。带宽的单位是bit/s,每秒传送的比特数,我笼统的理解为传送速度。在实际中,瓶颈容易出现在各个运营商之间的网络互联上,如果服务器和用户ip处于不同的运营商网络中,数据必须经过两个互联网运营商的节点,节点带宽变成令大家头疼的问题,这是web架构不可忽视的一点,主要通过分布式系统和负载均衡等方式来解决(我也没有详细了解这个问题)。
减少网页中的http请求,主要是前端方面的工作:合并多个图片利用css背景图片偏移技术呈现在网页中,避免多个图片的下载。合并js和css。充分利用浏览器的cache
加快服务器脚本的运算速度,在代码逻辑上,如果要了解代码的性能瓶颈,以php来举例,比较好的工具是xdebug,当然还有facebook的xhprof。脚本语言每次执行都要被解释器解析生成opcode才能执行,但是文件一般很少发生变化,因此可以将opcode进行缓存。
使用动态内容缓存,这些内容的生成有可能会涉及cpu计算,I/O操作,数据库连接,网络I/O(web api或远程调用),而且这些操作通常都不是异步的,但是很多情况下也不是实时性很强的数据,可以将这些内容缓存起来。比较常见的做法是使用分布式的memcached,这样比较方便扩展(虽然相对于使用本机内存来说会慢一些)。书中还提到缓存一些静态话的内容,我觉得更好地实践方案是动静分离之后,把静态内容(或者加上实时性不强的动态内容)直接存在http缓存中,再对动态内容进行异步请求。
web服务器缓存,利用建立的url映射,根据请求的url返回缓存好的响应内容。
反向代理缓存,我觉得这个其实和web服务器缓存本质上差不多,因为通常在web服务器前面会加一些反射代理服务器作负载均衡、安全性等方面的考虑。比较常用的http缓存是varnish。在这里要小心穿过反向代理,代理服务器最好把用户端的信息如ip加到header中转发给后端服务器,否则有可能后端就看不到一些信息了。
组件分离,其中一个比较有用的是为一些组件服务器使用独立的二级域名,如存放图片img.test.com,存放用户上传upload.test.com,存放静态文件 static.test.com。这样能把cookie的作用域分离。这里会有利于负载均衡,分布式文件系统(具体未深究)。
数据库性能优化,对于写操作也许不需要实时更新,有时候可以异步更新、批量跟新、累积更新。查询方面的优化主要是正确使用索引,对于一些不大明朗的语句可以考虑使用explain进行分析。表结构不一定要严格遵照那几个范式,通常情况下通过数据冗余来增强新能是有必要的。读写分离,如写操作都在主库,读操作都在从库。必要时还要进行分库和分表,把压力分解,注意扩展性的考虑。有时候页不一定需要关系型数据库,key-value型数据库性能会比较强大。
大致总结了这些。
读书笔记
《构建高性能Web站点》热门书评
-
卖弄国学已经成了国产技术书籍的通病
57有用 14无用 codedump 2009-11-26
拿到这本书几天了,正在看,还没有看完。就目前阅读到的部分而言,还算是一本靠谱的书,里面很多测试,说明等都有数据,抓包,strace查看调用情况等来进行说明。并且涉及的面挺广,从服务器模型,到前端,数据库,缓存都有讲到,不过呢,web架构这个主题我个人觉得过于宽泛了,或者这么说,这是一个需要知识面很广...
-
不论是高手还是菜鸟都适合阅读
10有用 0无用 rock 2010-10-01
这本书刚出来的时候就第一时间阅读了。本来是没想着写书评的。但最近向很多同学推荐这本书的时候,得到的回答却都是说看上去感觉太高阶了。其实不然,这本书确实是适合各个层次的读者阅读的。虽然全书涉及到了Web开发、操作系统和计算机网络等诸多方面,但作者的描述非常明晰而且富有吸引力。同时作者用到了大量的测试案...
-
全景式的建站指南
9有用 0无用 阿丹 2010-09-14
对于我这种门外汉来说,这本书为我打开一扇窗,从这本书里可以了解到建立一个高性能web站点所需要注意到的方方面面,并且对一些只是听过的“大词“有了一个直接的认识,原来负载均衡有这么多层次,反向代理还能干这个,缓存存在于从前端到后端各个方面等等。全书概括起来从两个方向,垂直方向提升单机性能,水平方向如何...
-
不管你是初学还是进阶,都能有所收获。强力推荐给所有做网站的XDJM们
5有用 2无用 冰冰子 2009-09-03
这是一本一周就可以读完的技术书籍,并不是因为它的简单,而是因为它很吸引我,很多的地方讲的非常好,例如服务器的IO模型以及缓存使用的各个环节。非常可贵的是作者的很多测试数据是非常真实的,是的可以更好的定量的去看问题。...
-
这封面啊差点毁掉了一本好书
3有用 1无用 大米粒 2014-01-15
由于本人不喜科技书弄成儿童书的模样, 看着便讨厌, 在图书馆几次撞见都被我忽略.近日针对网站架构设计进行主题阅读,时间紧迫,随手一翻, 喜出望外, 难得的精致好书, 全面细致,重点突出, 而且招招都有定量分析, 初阶的技术都掠过了,不像某些书,连安装,配置都给贴上来,读来越觉有味道. 全书都是重点...
书名: 构建高性能Web站点
作者: 郭欣
出版社: 电子工业出版社
副标题: 改善性能和扩展规模的具体做法
出版年: 2009-8
页数: 402
定价: 59.00元
ISBN: 9787121093357