最近在做性能优化相关的工作,也了解了一些web性能优化的方法。简单总结一下。首先得知道哪些地方是性能瓶颈,哪里导致页面打开慢。一般通过浏览器自带的网络功能,可以看到页面打开时下载各组件花费的时间,比如css,js,图片等,大体上了解哪些环节慢。对于web服务端程序性能瓶颈的分析,则可以借助于一些分析统计工具。比如后面我们即将讨论的php程序,可以使用xdebug工具统计各function消耗时间。
Web站点常用的优化方案主要有哪些?很感谢《构建高性能web站点》一书,我在工作中的很多方法也是参考这本书去做的。后续内容的组织也按照这本书的结构,也算是这本书的读书笔记了。
- 增加服务器带宽。多适用于以提供下载服务为主的站点。
- 减少网页中的http请求
a)使用CSS Sprites将多个图片合并为一个图片,再利用CSS的“background”偏移技术进行定位。
b)合并js脚本或css文件。Nginx服务器的concat模块就支持js合并。
c)使用浏览器的缓存策略减少重复下载。一般需要服务端配合,设置响应的header,给浏览器发送了Last-Modified、Expire或Etag数据。
3.加快服务器脚本计算速度
服务器脚本(比如php)编写的程序需要通过脚本解释器解释后生成中间代码,然后依托在解释器的运行环境中运行。如果能缓存中间代码,下次直接使用将省去解释时间。PHP的APC组件提供此类功能。
4.使用动态内容缓存和数据缓存
动态内容缓存是把数据和展现整体打包,数据缓存则是对动态内容中的一部分频繁访问的数据进行缓存。Smarty、APC、Xcache、memcache。
5.将动态内容静态化
直接访问动态内容的缓存结果——html网页。
6.web服务器缓存
7.反向代理缓存
8.优化web服务器配置和内核参数
9.页面组件分离
可以很好的利用浏览器的并行下载。
10.使用负载均衡
11.数据库性能优化
除了增加服务器带宽没法做实验后面陆续介绍这些方法。以前都不知道什么是带宽,费笔再记一下。带宽就是数据的发送速度。限制带宽只要限制交换机对于你主机的数据接收速度,就控制了主机的出口带宽。
下期预告——Web性能优化初探(二)opcode缓存