1

请求的过程中划分的几部分时间

  • 数据在网络上传输的时间

  • 站点服务器处理请求并生成响应数据的时间

  • 浏览器本地计算和渲染的时间

数据在网络上传输的时间

一般分为两部分,客户端发送请求经过网络到达服务端及服务端回应数据经过网络到达客户端,统称为响应时间,其决定因素为发送的数据量网络带宽

站点服务器处理请求并生成响应数据

每秒处理请求数(吞吐率)一般作为衡量服务器的性能标准。

浏览器本地计算和渲染时间

会影响的因素并发策略、样式渲染方式、脚本解释器的性能、页面大小、页面组件数量、页面组件缓存状态、页面组件域名分布和域名DNS解析等。

常见的优化性能方式

增加带宽

简单、直接。延伸出来的概念却是,当前的站点使用了多少带宽?带宽用到哪里去了?如何计算站点当前和未来可预见的带宽?带宽增加下载速度会增加吗?使用独享和共享带宽的本质是神马?如何节省带宽?

减少网页中的http请求数

一个网页包含了多个组件,每个组件都需要下载、计算、渲染,所以常见的使用下面场景切入

  • 数据简介的页面,使用较少的图片和脚本

  • 多个图片合并为一个文件,使用CSS背景偏移技术

  • 合并js和css

  • 使用浏览器的cache策略,减少重复下载

加快服务器脚本的计算速度

例如PHP,使用代码缓存机制,APC等,需注意的是,代码缓存机制适合不同场景的应用吗?

使用动态内容缓存

将动态结果和html输出结果缓存起来,在一段时间内,直接输出缓存内容,不在进行动态内容的计算。那么使用了缓存,将会带来的问题是成千上万的缓存文件如何保持、缓存命中率如何实现?缓存过期策略如何设计?在分布式的站点上如何缓存动态内容?

数据缓存

在一些特殊的字段上时,使用数据缓存,提高灵活性和命中率及性能要求

动态内容静态化

将生成的html输出直接保存为静态文档文件在服务器的硬盘上

选择适合的web服务器软件

根据应用的场景选择适合的web服务器软件,常见的apache、nginx等

页面组件分离

根据应用的类型、大小、下载量、服务器资源等,合理的分配组件的存放位置,势必提高应用的响应。比较常见的就会图片、文件单独存放在静态资源服务器上。

合理部署服务器

根据应用的场景部署合理的服务器,例如地区性、运营商的选择等

使用负载均衡

即将流量合理的分配到更多的服务器上。常见的手法有http重定向,dns轮训解析、反向代理服务器调度、lvs组件集群等。疑问是它们之间的区别?及是否实现高可用、是否实现规模扩展等。

优化数据库

优化数据库表结构的设计,设计良好的表结构可以降低后期进行横向扩展及负载均衡的难度。降低数据库创建和销毁的次数,减少频繁连接和释放导致的数据访问等待时间加长,合理的使用索引、数据库引擎。

考虑可扩展性

以上的所有点,都可以进行可扩展的考虑,保证应用具有高扩展性,在增加主机节点的时候,实现平滑的升级

减少视觉等待

该部分主要是从人类心理角度考虑、涉及人机交互的相关知识。比如youtube的,在打开一个新页面的时候,页面顶部会有一个加载的进度条,提醒用户,这就是一个很好的例子

以上内容摘自:《构建高性能web站点》 郭欣 著


甄城
1.2k 声望34 粉丝