性能一直是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:discover
Discovered Package: dcat/laravel-admin
Discovered Package: facade/ignition
Discovered Package: fideloper/proxy
Discovered Package: fruitcake/laravel-cors
Discovered Package: laravel/tinker
Discovered Package: nesbot/carbon
Discovered Package: nunomaduro/collision
Package 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
增加以下代码
<?php
namespace 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.4
PHP_FPM_INSTALL_OPCACHE=true
Links
https://www.shiguopeng.cn/archives/374
https://www.shiguopeng.cn/archives/507
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。