Laravel Octane 項目加速與靜態資源優化指南
一、Octane 核心加速配置
- 擴展安裝與環境配置
composer require laravel/octane # 安裝核心擴展?php artisan octane:install # 生成配置文件(選擇 Swoole/RoadRunner 等服務器)?
- 服務器參數調優?
修改 .env 文件啟用高性能模式:
OCTANE_SERVER=swoole # 推薦 Swoole 或 RoadRunner?
OCTANE_WORKERS=16 # 根據 CPU 核心數設定(建議 2-4 倍邏輯核心數)?
OCTANE_TASK_WORKERS=8 # 異步任務處理線程數?
- 服務啟動與熱更新?
php artisan octane:start --port=8000 --watch # 指定端口并啟用開發環境熱更新?
二、靜態資源處理方案
Nginx 代理分流?
動態請求與靜態資源分離配置:
server {location / {try_files $uri $uri/ @octane; # 優先匹配 public 目錄靜態文件?}location @octane {proxy_pass http://127.0.0.1:8000; # 動態請求轉發至 Octane 服務?proxy_set_header Host $host;}
}
長期緩存策略?
針對靜態文件添加緩存頭:
location ~* \.(js|css|png|jpg|svg)$ {expires 365d; # 設置 1 年緩存有效期?add_header Cache-Control "public";
}
三、性能深度優化
代碼級加速?
類預加載機制?:在 config/octane.php 中配置 preload 字段減少重復加載?
中間件精簡?:移除 routes/web.php 中非必要中間件?
數據庫連接池?
啟用 Swoole 獨立連接池:
php artisan octane:start --task-workers=8 # 專用數據庫連接線程?
異步任務處理?
Octane::concurrent([fn() => Log::info(...)]); # 非阻塞執行耗時操作?
四、驗證與監控
靜態資源驗證?
訪問 http://domain.com/js/app.js 檢查響應頭是否包含 Cache-Control: public?
壓力測試對比?
ab -c 100 -n 1000 http://domain.com/api/test # 觀察 Requests/sec 提升(預期 3-5 倍)?
運行狀態監控?
php artisan octane:status # 查看進程內存占用?
tail -f storage/logs/swoole_http.log # 實時錯誤追蹤?
五、注意事項
?? ?路徑兼容性?:遷移原服務配置到新目錄時需修正 cron 等任務路徑?
🔄 ?熱更新限制?:生產環境需手動執行 php artisan octane:reload 更新代碼?
💾 ?內存泄漏排查?:通過 octane:status 監控長期運行后的內存波動?