網路應用程式的效能受許多因素的影響。資料庫訪問,檔案系統操作,網路頻寬等都是潛在的影響因素。 Yii 已在各方面減少框架帶來的效能影響。但是在用戶的應用中仍有許多地方可以被改善來提高效能。
啟用 PHP APC 擴充 可能是改善一個應用整體效能最簡單的方式。此擴充功能快取和最佳化 PHP 中間程式碼並避免時間花費再為每個新來的請求解析PHP腳本。
禁用偵錯模式是另一個改善效能的容易方式。若常數 YII_DEBUG
被定以為 true,這個 Yii 應用將以調試模式運作。 調試模 式在開發階段是有用的,但是它影響性能因為一些組件引起額外的系統開銷。例如,資訊記錄器(the message logger)將為 被筆被記錄的資訊記錄額外的偵錯資訊。
yiilite.php
當啟用 PHP APC 擴充 時, 我們可以將 yii.php
替換為另一個名為 yiilite. 。
yiilite.php 包含在每個 Yii 發布中。它是一些常用到的 Yii 類別文件的合併文件。在文件中,註釋和追蹤語句都被移除。因此,使用
yiilite.php 將減少被引用的檔案數量並避免執行追蹤語句。
yiilite.php 而不開啟 APC 實際上將降低效能,因為
yiilite.php 包含了一些不是每個請求都必須的類別,這將花費額外的解析時間。 同時也要注意,在一些伺服器設定下使用
yiilite.php 將更慢,即使 APC 被開啟。 最好使用示範中的
hello world 執行基準程式來決定是否使用
yiilite.php。
SELECT 查詢更快, 但它會讓
INSERT,
UPDATE 或
DELETE 查詢更慢。
SELECT 查詢中使用
LIMIT 。這將避免從資料庫中取出過多的資料 並耗盡為 PHP 分配的記憶體。
Note: 下方所述的
scriptMap
特徵已自版本 1.0.3 起支援。
首先,透過設定應用元件 clientScript 的 scriptMap 屬性來宣告腳本被最小化。 可以在應用程式配置中完成,也可以在程式碼中配置。例如,
$cs=Yii::app()->clientScript; $cs->scriptMap=array( 'jquery.js'=>'/js/all.js', 'jquery.ajaxqueue.js'=>'/js/all.js', 'jquery.metadata.js'=>'/js/all.js', ...... );
上面的程式碼所做是映射這些 JavaScript 檔案到 URL /js/all.js
。 如果這些 JavaScript 檔案任何之一需要被一些元件引入, Yii 將會引入這個 URL (一次) 而不是各個獨立的腳本檔案。
其次,我們需要使用一些工具來聯合 (和壓縮) JavaScript 文件為一個單獨的文件,並保存為 js/all.js
。
相同的技巧也適用於 CSS 檔案。
在 Google AJAX Libraries API 幫助下我們可以改善頁面載入速度。例如,我們可以從 Google 的伺服器引入jquery.js
而不是從我們自己的伺服器。要這樣做, 我們首先配置 scriptMap
如下,
$cs=Yii::app()->clientScript; $cs->scriptMap=array( 'jquery.js'=>false, 'jquery.ajaxqueue.js'=>false, 'jquery.metadata.js'=>false, ...... );
透過映射(map)這些腳本檔案為 false,我們阻止 Yii 引入這些檔案的程式碼。作為替代,我們在頁面中編寫如下程式碼直接從Google 引入文件,
<head> <?php echo CGoogleApi::init(); ?> <?php echo CHtml::script( CGoogleApi::load('jquery','1.3.2') . "\n" . CGoogleApi::load('jquery.ajaxqueue.js') . "\n" . CGoogleApi::load('jquery.metadata.js') ); ?> ...... </head>
以上就是Yii框架官方指南系列52——專題:性能調整的內容,更多相關內容請關注PHP中文網(www. php.cn)!