-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
97f102e
commit 01a1916
Showing
10,384 changed files
with
1,145,843 additions
and
1 deletion.
The diff you're trying to view is too large. We only load the first 3000 changed files.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1 +1,35 @@ | ||
# nova-test-performance | ||
# Test Repo for Laravel Nova | ||
|
||
I found a performance issue while upgrading a customers Laravel Nova installation from | ||
version 2 to 4. | ||
|
||
## The issue | ||
|
||
Link: https://github.com/laravel/nova-issues/issues/5690 | ||
|
||
Our customer has ~60.000 records in users table. Using a filter on colum `email` | ||
reduces the performance a lot. In earlier version 2 opening the filter needs less than 300ms | ||
and opening the email selectbox costs less than a second. After upgrading to Nova 4 opening | ||
the filterbox needs 12 seconds and opening the email selectbox costs ~24 seconds while | ||
browser interrupts you with questions to close the tab or still waiting until process may end. | ||
|
||
## How to reproduce | ||
|
||
Clone this repository: https://github.com/sfroemkenjw/nova-test-performance | ||
|
||
It contains an DDEV environment. So start the project with: `ddev start` | ||
|
||
The database needs to be migrated: `ddev artisan migrate` | ||
|
||
Create an admin user: `ddev artisan nova:user` | ||
|
||
Launch PhpMyAdmin: `ddev launch -p` | ||
|
||
Select database `db` and import the file: `./db-import-for-table-users.sql` | ||
It just contains records since ID 2. So your admin will not be deleted. | ||
Big thanks to the service of: https://filldb.info/ | ||
|
||
Visit user resources in admin area of nova: | ||
https://nova-test-performance.ddev.site/nova/resources/user-resources | ||
|
||
Click on the filter icon and wait...and wait...wait ;-) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,27 @@ | ||
<?php | ||
|
||
namespace App\Console; | ||
|
||
use Illuminate\Console\Scheduling\Schedule; | ||
use Illuminate\Foundation\Console\Kernel as ConsoleKernel; | ||
|
||
class Kernel extends ConsoleKernel | ||
{ | ||
/** | ||
* Define the application's command schedule. | ||
*/ | ||
protected function schedule(Schedule $schedule): void | ||
{ | ||
// $schedule->command('inspire')->hourly(); | ||
} | ||
|
||
/** | ||
* Register the commands for the application. | ||
*/ | ||
protected function commands(): void | ||
{ | ||
$this->load(__DIR__.'/Commands'); | ||
|
||
require base_path('routes/console.php'); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,30 @@ | ||
<?php | ||
|
||
namespace App\Exceptions; | ||
|
||
use Illuminate\Foundation\Exceptions\Handler as ExceptionHandler; | ||
use Throwable; | ||
|
||
class Handler extends ExceptionHandler | ||
{ | ||
/** | ||
* The list of the inputs that are never flashed to the session on validation exceptions. | ||
* | ||
* @var array<int, string> | ||
*/ | ||
protected $dontFlash = [ | ||
'current_password', | ||
'password', | ||
'password_confirmation', | ||
]; | ||
|
||
/** | ||
* Register the exception handling callbacks for the application. | ||
*/ | ||
public function register(): void | ||
{ | ||
$this->reportable(function (Throwable $e) { | ||
// | ||
}); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,12 @@ | ||
<?php | ||
|
||
namespace App\Http\Controllers; | ||
|
||
use Illuminate\Foundation\Auth\Access\AuthorizesRequests; | ||
use Illuminate\Foundation\Validation\ValidatesRequests; | ||
use Illuminate\Routing\Controller as BaseController; | ||
|
||
class Controller extends BaseController | ||
{ | ||
use AuthorizesRequests, ValidatesRequests; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,68 @@ | ||
<?php | ||
|
||
namespace App\Http; | ||
|
||
use Illuminate\Foundation\Http\Kernel as HttpKernel; | ||
|
||
class Kernel extends HttpKernel | ||
{ | ||
/** | ||
* The application's global HTTP middleware stack. | ||
* | ||
* These middleware are run during every request to your application. | ||
* | ||
* @var array<int, class-string|string> | ||
*/ | ||
protected $middleware = [ | ||
// \App\Http\Middleware\TrustHosts::class, | ||
\App\Http\Middleware\TrustProxies::class, | ||
\Illuminate\Http\Middleware\HandleCors::class, | ||
\App\Http\Middleware\PreventRequestsDuringMaintenance::class, | ||
\Illuminate\Foundation\Http\Middleware\ValidatePostSize::class, | ||
\App\Http\Middleware\TrimStrings::class, | ||
\Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class, | ||
]; | ||
|
||
/** | ||
* The application's route middleware groups. | ||
* | ||
* @var array<string, array<int, class-string|string>> | ||
*/ | ||
protected $middlewareGroups = [ | ||
'web' => [ | ||
\App\Http\Middleware\EncryptCookies::class, | ||
\Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class, | ||
\Illuminate\Session\Middleware\StartSession::class, | ||
\Illuminate\View\Middleware\ShareErrorsFromSession::class, | ||
\App\Http\Middleware\VerifyCsrfToken::class, | ||
\Illuminate\Routing\Middleware\SubstituteBindings::class, | ||
], | ||
|
||
'api' => [ | ||
// \Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class, | ||
\Illuminate\Routing\Middleware\ThrottleRequests::class.':api', | ||
\Illuminate\Routing\Middleware\SubstituteBindings::class, | ||
], | ||
]; | ||
|
||
/** | ||
* The application's middleware aliases. | ||
* | ||
* Aliases may be used instead of class names to conveniently assign middleware to routes and groups. | ||
* | ||
* @var array<string, class-string|string> | ||
*/ | ||
protected $middlewareAliases = [ | ||
'auth' => \App\Http\Middleware\Authenticate::class, | ||
'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class, | ||
'auth.session' => \Illuminate\Session\Middleware\AuthenticateSession::class, | ||
'cache.headers' => \Illuminate\Http\Middleware\SetCacheHeaders::class, | ||
'can' => \Illuminate\Auth\Middleware\Authorize::class, | ||
'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class, | ||
'password.confirm' => \Illuminate\Auth\Middleware\RequirePassword::class, | ||
'precognitive' => \Illuminate\Foundation\Http\Middleware\HandlePrecognitiveRequests::class, | ||
'signed' => \App\Http\Middleware\ValidateSignature::class, | ||
'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class, | ||
'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class, | ||
]; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,17 @@ | ||
<?php | ||
|
||
namespace App\Http\Middleware; | ||
|
||
use Illuminate\Auth\Middleware\Authenticate as Middleware; | ||
use Illuminate\Http\Request; | ||
|
||
class Authenticate extends Middleware | ||
{ | ||
/** | ||
* Get the path the user should be redirected to when they are not authenticated. | ||
*/ | ||
protected function redirectTo(Request $request): ?string | ||
{ | ||
return $request->expectsJson() ? null : route('login'); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,17 @@ | ||
<?php | ||
|
||
namespace App\Http\Middleware; | ||
|
||
use Illuminate\Cookie\Middleware\EncryptCookies as Middleware; | ||
|
||
class EncryptCookies extends Middleware | ||
{ | ||
/** | ||
* The names of the cookies that should not be encrypted. | ||
* | ||
* @var array<int, string> | ||
*/ | ||
protected $except = [ | ||
// | ||
]; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,17 @@ | ||
<?php | ||
|
||
namespace App\Http\Middleware; | ||
|
||
use Illuminate\Foundation\Http\Middleware\PreventRequestsDuringMaintenance as Middleware; | ||
|
||
class PreventRequestsDuringMaintenance extends Middleware | ||
{ | ||
/** | ||
* The URIs that should be reachable while maintenance mode is enabled. | ||
* | ||
* @var array<int, string> | ||
*/ | ||
protected $except = [ | ||
// | ||
]; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,30 @@ | ||
<?php | ||
|
||
namespace App\Http\Middleware; | ||
|
||
use App\Providers\RouteServiceProvider; | ||
use Closure; | ||
use Illuminate\Http\Request; | ||
use Illuminate\Support\Facades\Auth; | ||
use Symfony\Component\HttpFoundation\Response; | ||
|
||
class RedirectIfAuthenticated | ||
{ | ||
/** | ||
* Handle an incoming request. | ||
* | ||
* @param \Closure(\Illuminate\Http\Request): (\Symfony\Component\HttpFoundation\Response) $next | ||
*/ | ||
public function handle(Request $request, Closure $next, string ...$guards): Response | ||
{ | ||
$guards = empty($guards) ? [null] : $guards; | ||
|
||
foreach ($guards as $guard) { | ||
if (Auth::guard($guard)->check()) { | ||
return redirect(RouteServiceProvider::HOME); | ||
} | ||
} | ||
|
||
return $next($request); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,19 @@ | ||
<?php | ||
|
||
namespace App\Http\Middleware; | ||
|
||
use Illuminate\Foundation\Http\Middleware\TrimStrings as Middleware; | ||
|
||
class TrimStrings extends Middleware | ||
{ | ||
/** | ||
* The names of the attributes that should not be trimmed. | ||
* | ||
* @var array<int, string> | ||
*/ | ||
protected $except = [ | ||
'current_password', | ||
'password', | ||
'password_confirmation', | ||
]; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,20 @@ | ||
<?php | ||
|
||
namespace App\Http\Middleware; | ||
|
||
use Illuminate\Http\Middleware\TrustHosts as Middleware; | ||
|
||
class TrustHosts extends Middleware | ||
{ | ||
/** | ||
* Get the host patterns that should be trusted. | ||
* | ||
* @return array<int, string|null> | ||
*/ | ||
public function hosts(): array | ||
{ | ||
return [ | ||
$this->allSubdomainsOfApplicationUrl(), | ||
]; | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,28 @@ | ||
<?php | ||
|
||
namespace App\Http\Middleware; | ||
|
||
use Illuminate\Http\Middleware\TrustProxies as Middleware; | ||
use Illuminate\Http\Request; | ||
|
||
class TrustProxies extends Middleware | ||
{ | ||
/** | ||
* The trusted proxies for this application. | ||
* | ||
* @var array<int, string>|string|null | ||
*/ | ||
protected $proxies; | ||
|
||
/** | ||
* The headers that should be used to detect proxies. | ||
* | ||
* @var int | ||
*/ | ||
protected $headers = | ||
Request::HEADER_X_FORWARDED_FOR | | ||
Request::HEADER_X_FORWARDED_HOST | | ||
Request::HEADER_X_FORWARDED_PORT | | ||
Request::HEADER_X_FORWARDED_PROTO | | ||
Request::HEADER_X_FORWARDED_AWS_ELB; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,22 @@ | ||
<?php | ||
|
||
namespace App\Http\Middleware; | ||
|
||
use Illuminate\Routing\Middleware\ValidateSignature as Middleware; | ||
|
||
class ValidateSignature extends Middleware | ||
{ | ||
/** | ||
* The names of the query string parameters that should be ignored. | ||
* | ||
* @var array<int, string> | ||
*/ | ||
protected $except = [ | ||
// 'fbclid', | ||
// 'utm_campaign', | ||
// 'utm_content', | ||
// 'utm_medium', | ||
// 'utm_source', | ||
// 'utm_term', | ||
]; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,17 @@ | ||
<?php | ||
|
||
namespace App\Http\Middleware; | ||
|
||
use Illuminate\Foundation\Http\Middleware\VerifyCsrfToken as Middleware; | ||
|
||
class VerifyCsrfToken extends Middleware | ||
{ | ||
/** | ||
* The URIs that should be excluded from CSRF verification. | ||
* | ||
* @var array<int, string> | ||
*/ | ||
protected $except = [ | ||
// | ||
]; | ||
} |
Oops, something went wrong.