性能始终是Laravel
的最大话题之一, 但它也的确为很多PHP
开发者提供了很多不一样的常识, 这里再次为框架减速一次.
根底 (陈词滥调)
- 缓存,会话,队列都是用
Redis
驱动 框架内置的缓存
- 路由缓存
php artisan route:cache
- 配置缓存
php artisan config:cache
- 路由缓存
- 依据接口幂等性应用缓存
降级
OPcache
- 没什么非凡理由间接上这个
- 并把
opcache.validate_timestamps
设置为0
,让你生产环境的PHP
代码永远不自动更新, 相似于其它编译型语言,每次部署代码,须要重启php-fpm
来加载新代码 - 更多可参考这篇文章https://gywbd.github.io/posts/2016/1/best-config-for-zend-opcache.html
缩小不必要的中间件
- 比方
Laravel
当初曾经内置了跨域中间件, 如果只是为APP
提供接口,齐全就没有跨域的问题, 能够间接正文这个中间件 - 比方内置的
API
限度速率的接口, 可能对很多我的项目场景就不适合
缩小服务提供者
- 比方接口就不须要视图服务,
Session
服务,明码重置服务等等
当然要讲的重点还是和API
和Admin
混合的我的项目, 应用了一个全栈的框架,置信也有很我的项目应用了Laravel-admin
或者是Dcat Admin
之前我也写过一篇文章讲过如何缩小你的服务提供者, 因为自从Laravel5.5
之后,须要第三方包都能够本人注册,而后Laravel
主动发现这些服务提供者
能够运行这条命令找出你曾经注册的服务提供者:
php artisan package:discoverDiscovered Package: dcat/laravel-adminDiscovered Package: facade/ignitionDiscovered Package: fideloper/proxyDiscovered Package: fruitcake/laravel-corsDiscovered Package: laravel/tinkerDiscovered Package: nesbot/carbonDiscovered Package: nunomaduro/collisionPackage manifest generated successfully.
- 这里能够很显著看到了
dcat/laravel-admin
, 咱们只须要去我的项目根目录下的composer.json
写入以下配置
"extra": { "laravel": { "dont-discover": [ "dcat/laravel-admin" ] } }
- 当你这样子做了之后, 再执行
php artisan package:discover
就会发现dcat/laravel-admin
隐没了 - 不过这也代表咱们无奈应用
Admin
了, 所以咱们也须要减少一个条件来手动注册服务提供者 - 咱们能够在
AppServiceProvider.php
减少以下代码
<?phpnamespace App\Providers;use Dcat\Admin\Admin;use Dcat\Admin\AdminServiceProvider;use Illuminate\Foundation\AliasLoader;use Illuminate\Support\ServiceProvider;class AppServiceProvider extends ServiceProvider{ /** * Register any application services. * * @return void */ public function register() { // } /** * Bootstrap any application services. * * @return void */ public function boot() { // 这个条件有很多种形式, 你甚至能够通过 url 来判断 if (config('admin.enable')) { AliasLoader::getInstance()->alias('Admin', Admin::class); $this->app->register(AdminServiceProvider::class); } }}
- 批改结束之后, 发现性能有了
40%
的晋升(因为Admin
注册了很多路由, 启动很多货色)
机器:2U4G 的机器 CentOS Linux release 8.3.2011
环境: (应用Laradock
全家桶, 开启OPcache
)
PHP_VERSION=7.4PHP_FPM_INSTALL_OPCACHE=true
- 最初找运维要了其中一台
API
服务器的图
能够看到, 优化之后的成果很好.
Links
https://www.shiguopeng.cn/archives/374
https://www.shiguopeng.cn/archives/507