构建高性能的构建高性能的web站点站点
目录:目录:
构建高性能的web站点学习笔记一
构建高性能的web站点学习笔记二------数据库扩展
构建高性能的web站点学习笔记三------动态内容缓存
构建高性能的web站点学习笔记四------浏览器缓存
构建高性能的web站点学习笔记五------Web服务器缓存
构建高性能的web站点学习笔记六------反向代理缓存
构建高性能的web站点学习笔记一
谈到网站优化,我们必须知道一次交互的过程中都经过哪几个阶段,然后在对应的阶段采取优化措施
一次交互大概经历以下几部分时间:一次交互大概经历以下几部分时间:
1. 数据在网络中传输的时间(响应时间:发送数据的传输时间+返回数据的传输时间)
2. 站点服务器接收到请求并生成回应数据的时间
3. 浏览器计算并在本地渲染的时间
根据上述三个时间段,我在这简单的列举一下常用的优化方案
1.增加带宽:增加带宽:
当网页或组件下载速度变慢的话,一些架构师可能会采取增加带宽,因为他们认为是服务器带宽不够用了,这是最省
事的一种方法,但是这对于提供下载服务为主的站点来说也许是这样的,对于其他服务的站点未必是好的解决方案
2.减少减少HTTP请求:请求:
我们知道几乎每一个页面都包含了多个组件,每个组件都需要计算,下载,渲染,这些都是需要时间的,如果我们减
少这些行为,那么就可以加快网页的执行速度,但是我们往往需要在优雅的网页以及网页的表现性能之间进行取舍,
常见的优化方法是:
1. 设计简单的网页,里面包含较少的图片和脚本,但是这可能牺牲了美观和用户交互
2. 将多个图片文件合成一个图片文件,利用CSS偏移技术来呈现网页,这样可以避免多个图片下载
3. 合并js脚本和css样式表
4. 利用浏览器缓存策略,避免重复下载
可见这一块属于网页的前端优化
3.加快服务器的脚本执行计算速度加快服务器的脚本执行计算速度
我们大多数涉及到性能的站点中都使用的各种各样额后台脚本语言:PHP,jsp,python,asp.net等等这行脚本都需要相应
的解释器进行解释生成中间代码,然后依托解释器的运行环境中运行,所以生成中间代码这段时间又成为我们为获取性
能提升瞄准的一大目标,对于一些较强的商业支持的语言比如ASP.net,JSP均有内置的优化方案(比如解释器第一次执
行,然后将结果缓存下来),而对于开源的脚本语言则依靠第三方组件来提供类似功能 比如PHP的APC组件
4.使用动态内容缓存使用动态内容缓存
动态内容缓存是指将动态生成HTML页给缓存起来,在以后一段时间内当有用户访问的时候直接跳过计算阶段而直接输
出缓存中的内容,听起来的确很好,但是好的东西往往都会有些难度,我们必须考虑:成千上万的缓存文件如何存储,缓存
的命中率如何,缓存的过期侧略如何设计,在应用在多台web服务器的分布式站点上我们需要考虑什么?
5.使用数据缓存使用数据缓存
动态内容缓存是将数据与表现一起打包缓存,这有时候并不是我们想要的效果,例如一个页面中有一部分是不经常变的
(顶部ogo),而所以另外我们可以发现有时候一些动态计算总是消耗在对于一些特殊数据处理上,这些数据更新过于
频繁,甚至占用大量的IO时间,如果我们想要提高缓存利用率,提高灵活性,以及性能的需求,所以引入了数据缓存
更加细粒度的缓存似乎可以避免网页的整体更新。有些内容是需要实时更新的(关系型数据的读取),如果采取动态内
容缓存的话,如果页面有更新,那么我们必须重新生成缓存,这对网页中不变的内容似乎有点不公平.
我们需要考虑的问题是:如何协调数据缓存和网页缓存,能否将二者结合在一起呢,数据缓存存放在哪?
6.动态内容静态化动态内容静态化