[TOC]
# 提升性能
獲得更快的應用程序需要改進許多方面:服務器,客戶端,網絡,數據庫,Web服務器,靜態源等。在本章中,我們將重點介紹可以提高性能以及如何檢測應用程序中哪些內容非常慢的方案。
## 分析服務端
每個應用程序都不同,永久性分析對于了解可以提高性能的位置非常重要。分析為我們提供了真實情況的真實情況。配置文件可能因請求而異,因此進行足夠的測量以得出結論非常重要。
使用XDebug進行分析
[XDebug](http://xdebug.org/docs) 提供了一種更簡單的方式來分析PHP應用程序,只需安裝擴展并在php.ini中啟用分析:
```ini
xdebug.profiler_enable = On
```
使用像[Webgrind](https://github.com/jokkedk/webgrind/)這樣的工具,您可以看到哪些函數/方法比其他函數/方法慢:

### 使用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查看器來分析配置數據:


### 分析SQL語句
大多數數據庫系統提供了識別慢速SQL語句的工具。檢測和修復慢速查詢對于提高服務器端的性能非常重要。在Mysql案例中,您可以使用慢查詢日志來了解哪些SQL查詢花費的時間超出預期:
```ini
log-slow-queries = /var/log/slow-queries.log
long_query_time = 1.5
```
## 分析客戶端
有時我們可能需要改進靜態元素(如圖像,javascript和css)的加載以提高性能。以下工具可用于檢測客戶端的常見瓶頸:
### 使用Chrome/Firefox分析
大多數現代瀏覽器都有工具來分析頁面加載時間。在Chrome中,您可以使用網絡檢查器了解加載單個頁面所需的不同資源需要多長時間:

[Firebug](http://getfirebug.com/) 提供了類似的功能:

### Yahoo! YSlow
[YSlow](http://developer.yahoo.com/yslow/) 分析網頁,并根據一組高性能網頁規則提出[改進其性能的方法](http://developer.yahoo.com/performance/rules.html)

### 使用Speed Tracer分析
[Speed Tracer](https://developers.google.com/web-toolkit/speedtracer/) 是一種幫助您識別和修復Web應用程序中的性能問題的工具。它可視化從瀏覽器內部的低級檢測點獲取的度量標準,并在應用程序運行時對其進行分析。
Speed Tracer作為Chrome擴展程序提供,適用于目前支持擴展的所有平臺(Windows和Linux)。

此工具非常有用,因為它可以幫助您獲得用于呈現整個頁面的實時時間,包括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管理
- 請求環境
- 返回響應
- 安全
- 加密/解密
- 安全
- 國際化
- 國際化
- 多語言支持