[TOC]
# 提升性能
获得更快的应用程序需要改进许多方面:服务器,客户端,网络,数据库,Web服务器,静态源等。在本章中,我们将重点介绍可以提高性能以及如何检测应用程序中哪些内容非常慢的方案。
## 分析服务端
每个应用程序都不同,永久性分析对于了解可以提高性能的位置非常重要。分析为我们提供了真实情况的真实情况。配置文件可能因请求而异,因此进行足够的测量以得出结论非常重要。
使用XDebug进行分析
[XDebug](http://xdebug.org/docs) 提供了一种更简单的方式来分析PHP应用程序,只需安装扩展并在php.ini中启用分析:
```ini
xdebug.profiler_enable = On
```
使用像[Webgrind](https://github.com/jokkedk/webgrind/)这样的工具,您可以看到哪些函数/方法比其他函数/方法慢:
![](https://docs.phalconphp.com/images/content/performance-webgrind.jpg)
### 使用Xhprof进行分析
[Xhprof](https://github.com/facebook/xhprof) 是配置PHP应用程序的另一个有趣的扩展。将以下行添加到引导程序文件的开头:
```php
<?php
xhprof_enable(XHPROF_FLAGS_CPU + XHPROF_FLAGS_MEMORY);
```
然后在文件的末尾保存配置文件数据:
```php
<?php
$xhprof_data = xhprof_disable('/tmp');
$XHPROF_ROOT = '/var/www/xhprof/';
include_once $XHPROF_ROOT . '/xhprof_lib/utils/xhprof_lib.php';
include_once $XHPROF_ROOT . '/xhprof_lib/utils/xhprof_runs.php';
$xhprof_runs = new XHProfRuns_Default();
$run_id = $xhprof_runs->save_run($xhprof_data, 'xhprof_testing');
echo "http://localhost/xhprof/xhprof_html/index.php?run={$run_id}&source=xhprof_testing\n";
```
Xhprof提供了一个内置的HTML查看器来分析配置数据:
![](https://docs.phalconphp.com/images/content/performance-xhprof-2.jpg)
![](https://docs.phalconphp.com/images/content/performance-xhprof-1.jpg)
### 分析SQL语句
大多数数据库系统提供了识别慢速SQL语句的工具。检测和修复慢速查询对于提高服务器端的性能非常重要。在Mysql案例中,您可以使用慢查询日志来了解哪些SQL查询花费的时间超出预期:
```ini
log-slow-queries = /var/log/slow-queries.log
long_query_time = 1.5
```
## 分析客户端
有时我们可能需要改进静态元素(如图像,javascript和css)的加载以提高性能。以下工具可用于检测客户端的常见瓶颈:
### 使用Chrome/Firefox分析
大多数现代浏览器都有工具来分析页面加载时间。在Chrome中,您可以使用网络检查器了解加载单个页面所需的不同资源需要多长时间:
![](https://docs.phalconphp.com/images/content/performance-chrome-1.jpg)
[Firebug](http://getfirebug.com/) 提供了类似的功能:
![](https://docs.phalconphp.com/images/content/performance-firefox-1.jpg)
### Yahoo! YSlow
[YSlow](http://developer.yahoo.com/yslow/) 分析网页,并根据一组高性能网页规则提出[改进其性能的方法](http://developer.yahoo.com/performance/rules.html)
![](https://docs.phalconphp.com/images/content/performance-yslow-1.jpg)
### 使用Speed Tracer分析
[Speed Tracer](https://developers.google.com/web-toolkit/speedtracer/) 是一种帮助您识别和修复Web应用程序中的性能问题的工具。它可视化从浏览器内部的低级检测点获取的度量标准,并在应用程序运行时对其进行分析。
Speed Tracer作为Chrome扩展程序提供,适用于目前支持扩展的所有平台(Windows和Linux)。
![](https://docs.phalconphp.com/images/content/performance-speed-tracer.jpg)
此工具非常有用,因为它可以帮助您获得用于呈现整个页面的实时时间,包括HTML解析,Javascript评估和CSS样式。
## 使用最新的PHP版本
PHP日新月异,使用最新版本可以提高应用程序和Phalcon的性能。
## 使用PHP字节码缓存
[APC](http://php.net/manual/en/book.apc.php) 和许多其他字节码缓存一样,可以帮助应用程序减少每个请求中读取,标记化和解析PHP文件的开销。安装扩展后,使用以下设置启用APC:
```ini
apc.enabled = On
```
## 在后台处理任务
处理视频,发送电子邮件,压缩文件或图像等是必须在后台作业中处理的慢任务。有许多工具可以提供与PHP兼容的排队或消息系统:
* [Beanstalkd](http://kr.github.io/beanstalkd/)
* [Redis](http://redis.io/)
* [RabbitMQ](http://www.rabbitmq.com/)
* [Resque](https://github.com/chrisboulton/php-resque>)
* [Gearman](http://gearman.org/)
* [ZeroMQ](http://www.zeromq.org/)
## Google Page Speed
[mod_pagespeed](https://developers.google.com/speed/pagespeed/mod) 可加快您的网站速度并缩短网页加载时间。
此开源Apache HTTP服务器模块(也可用于nginx作为[ngx_pagespeed](https://developers.google.com/speed/pagespeed/ngx))自动将Web性能最佳实践应用于页面和关联资产(CSS,JavaScript,图像),而无需修改现有内容或工作流。
- 常规
- Welcome
- 贡献
- 生成回溯
- 测试重现
- 单元测试
- 入门
- 安装
- Web服务器设置
- WAMP
- XAMPP
- 教程
- 基础教程
- 教程:创建一个简单的REST API
- 教程:Vökuró
- 提升性能
- 教程:INVO
- 开发环境
- Phalcon Compose (Docker)
- Nanobox
- Phalcon Box (Vagrant)
- 开发工具
- Phalcon开发者工具的安装
- Phalcon开发者工具的使用
- 调试应用程序
- 核心
- MVC应用
- 微应用
- 创建命令行(CLI)应用程序
- 依赖注入与服务定位
- MVC架构
- 服务
- 使用缓存提高性能
- 读取配置
- 上下文转义
- 类加载器
- 使用命名空间
- 日志
- 队列
- 数据库
- 数据库抽象层
- Phalcon查询语言(PHQL)
- ODM(对象文档映射器)
- 使用模型
- 模型行为
- ORM缓存
- 模型事件
- 模型元数据
- 模型关系
- 模型事务
- 验证模型
- 数据库迁移
- 分页
- 前端
- Assets管理
- 闪存消息
- 表单
- 图像
- 视图助手(标签)
- 使用视图
- Volt:模板引擎
- 业务逻辑
- 访问控制列表(ACL)
- 注解解析器
- 控制器
- 调度控制器
- 事件管理器
- 过滤与清理
- 路由
- 在session中存储数据
- 生成URL和路径
- 验证
- HTTP
- Cookies管理
- 请求环境
- 返回响应
- 安全
- 加密/解密
- 安全
- 国际化
- 国际化
- 多语言支持