一、服務器與系統層優化
/etc/selinux/config
為SELINUX=disabled
)、調整系統運行級別至3(節約資源)、增加文件描述符限制(ulimit -n 65535
,永久生效需修改/etc/security/limits.conf
)、優化內核參數(如啟用SYN Cookies、TCP連接重用,修改/etc/sysctl.conf
中的net.ipv4.tcp_syncookies=1
、net.ipv4.tcp_tw_reuse=1
)。location / { try_files $uri $uri/ /index.php?$query_string; }
(路由轉發)、location ~ \.php$ { fastcgi_pass unix:/var/run/php/php8.2-fpm.sock; }
(PHP處理)、gzip on; gzip_types text/css application/javascript;
(壓縮設置)。二、PHP環境優化
php.ini
中添加:[opcache] zend_extension=opcache.so; opcache.enable=1; opcache.memory_consumption=128; opcache.interned_strings_buffer=8; opcache.max_accelerated_files=4000; opcache.revalidate_freq=60
(根據服務器內存調整memory_consumption
,revalidate_freq
控制腳本重新驗證頻率)。memory_limit
(如256M
,避免內存溢出)、max_execution_time
(如30
秒,防止腳本長時間運行)、upload_max_filesize
(如20M
,適配上傳需求)。三、緩存機制優化
config/app.php
):'cache' => ['type' => 'redis', 'host' => '127.0.0.1', 'port' => 6379, 'select' => 0]
(Redis緩存,需安裝Redis擴展);生成路由緩存(php think optimize:route
,降低路由注冊開銷);關閉調試模式(app_debug
設為false
,避免額外性能消耗)。cache()
助手函數緩存(如$data = cache('data_key'); if (!$data) { $data = Db::table('table')->select(); cache('data_key', $data, 3600); }
,緩存1小時);對不常變化的頁面(如首頁)使用return cache('page_key')
緩存整個頁面。四、數據庫層優化
id
、status
、create_time
)添加索引,避免全表掃描。使用EXPLAIN
分析SQL語句(如EXPLAIN SELECT * FROM users WHERE status = 1
),確認索引是否生效。SELECT *
(只查詢所需字段)、減少子查詢(用JOIN替代)、避免在WHERE
子句中使用函數(如WHERE DATE(create_time) = '2025-10-20'
,會導致索引失效)。db_config
配置persistent => true
),減少連接建立與銷毀的開銷。五、代碼層優化
foreach
中Db::table()->find()
),改用批量查詢(Db::table()->whereIn('id', [1,2,3])->select()
);使用延遲加載(如with
方法關聯模型,只在需要時加載關聯數據)。Db::getInstance()
)。gzip on;
;PHP:ob_start('ob_gzhandler')
),減少傳輸數據量(通常壓縮率為50%-70%)。六、靜態資源與架構優化
static.example.com
指向CDN域名)。base64
編碼嵌入HTML)。runtime/cache
目錄)、日志(runtime/log
目錄)、臨時文件(runtime/temp
目錄),釋放服務器磁盤空間(可使用crontab
設置每天凌晨清理)。七、監控與分析
top
(查看CPU/內存使用率)、vmstat
(查看系統級性能)、netstat
(查看網絡連接)等命令監控服務器狀態,及時發現資源瓶頸(如CPU占用過高需擴容、內存不足需優化緩存)。