ThinkPHP 3.2 引入「Lite 編譯檔」機制,將框架核心類別、常用函式、設定檔等編譯合併為單一 lite.php,替換原本需載入數十個檔案的入口流程,大幅減少 I/O 操作,提升執行效能。本文詳細說明產生、自訂與替換流程。
在專案入口檔(通常為 index.php)最上方加入:
<?php
define('BUILD_LITE_FILE', true);
// 原本的框架入口引入
require './ThinkPHP/ThinkPHP.php';
瀏覽器訪問首頁,框架偵測到常數會在 Runtime/ 目錄自動產生 lite.php。
建議先在入口檔關閉調試模式,確保編譯內容為正式環境最佳化:
define('APP_DEBUG', false); // 關閉調試
define('BUILD_LITE_FILE', true);
require './ThinkPHP/ThinkPHP.php';
在應用設定檔 Conf/config.php 加入:
'RUNTIME_LITE_FILE' => APP_PATH . 'lite.php', // 存放於應用目錄下
在應用設定目錄建立 Conf/lite.php,回傳需編譯的檔案陣列:
<?php
return [
THINK_PATH . 'Common/functions.php',
COMMON_PATH . 'Common/function.php',
CORE_PATH . 'Think' . EXT,
CORE_PATH . 'Hook' . EXT,
CORE_PATH . 'App' . EXT,
CORE_PATH . 'Dispatcher' . EXT,
CORE_PATH . 'Model' . EXT,
CORE_PATH . 'Log' . EXT,
CORE_PATH . 'Log/Driver/File' . EXT,
CORE_PATH . 'Route' . EXT,
CORE_PATH . 'Controller' . EXT,
CORE_PATH . 'View' . EXT,
CORE_PATH . 'Storage' . EXT,
CORE_PATH . 'Storage/Driver/File' . EXT,
CORE_PATH . 'Exception' . EXT,
BEHAVIOR_PATH . 'ParseTemplateBehavior' . EXT,
BEHAVIOR_PATH . 'ContentReplaceBehavior' . EXT,
// 可依專案需求增減
];
所有列入清單的檔案將被合併進 lite.php,未列入的類別仍維持自動載入機制。
保留原入口檔邏輯,僅改變引入目標:
<?php
// 原本
// require './ThinkPHP/ThinkPHP.php';
// 改為載入 Lite 編譯檔
require './Runtime/lite.php'; // 或依 RUNTIME_LITE_FILE 設定路徑
此時框架不再產生應用編譯快取,效能顯著提升。
若入口檔無其他邏輯,可直接複製 lite.php 並更名為 index.php 放於公開目錄,原入口檔備份留存以便重新產生。
lite.php 並重新啟用 BUILD_LITE_FILE 產生新版。典型專案啟用 Lite 後:
ThinkPHP 3.2 Lite 編譯是零程式碼修改即可獲得效能提升的實用功能。生產環境部署流程建議加入「產生 Lite → 替換入口 → 驗證功能」三步驟,並納入自動化部署腳本,確保每次釋出皆為最佳化版本。