"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > Consejos para la optimización del código y la mejora del rendimiento en Laravel

Consejos para la optimización del código y la mejora del rendimiento en Laravel

Publicado el 2024-11-02
Navegar:476

Tips for Code Optimization and Performance Improvement in Laravel

Laravel es un marco robusto y elegante, pero a medida que su aplicación crece, optimizar su rendimiento se vuelve esencial. Aquí tienes una guía completa con consejos y ejemplos que te ayudarán a mejorar el rendimiento y optimizar tu aplicación Laravel.

1. Carga ansiosa versus carga diferida

Problema: De forma predeterminada, Laravel usa carga diferida, lo que puede resultar en el "problema de consulta N 1", donde se activan innecesariamente múltiples consultas de bases de datos.

Optimización: utilice carga ansiosa para cargar datos relacionados en una consulta, lo que mejora significativamente el rendimiento al trabajar con relaciones.

Antes (carga diferida):

// This runs multiple queries (N 1 Problem)
$users = User::all();

foreach ($users as $user) {
    $posts = $user->posts;
}

Después (Carga ansiosa):

// This loads users and their posts in just two queries
$users = User::with('posts')->get();

Conclusión clave: utilice siempre la carga rápida cuando sepa que necesitará modelos relacionados.


2. Utilice el almacenamiento en caché para consultas costosas

Problema: Obtener con frecuencia los mismos datos (como listas de usuarios, configuraciones o catálogos de productos) puede crear cuellos de botella en el rendimiento.

Optimización: almacena en caché los resultados de consultas y cálculos costosos para reducir los tiempos de carga y las consultas a la base de datos.

Antes (sin almacenamiento en caché):

// Querying the database every time
$users = User::all();

Después (usando caché):

// Caching the user data for 60 minutes
$users = Cache::remember('users', 60, function () {
    return User::all();
});

Conclusión clave: Utilice el sistema de almacenamiento en caché de Laravel (Redis, Memcached) para reducir las consultas innecesarias a la base de datos.


3. Optimice las consultas de la base de datos

Problema: Las consultas ineficientes y la falta de una indexación adecuada pueden reducir drásticamente el rendimiento.

Optimización: agregue siempre índices a las columnas consultadas con frecuencia y use solo los datos requeridos.

Antes:

// Fetching all columns (bad practice)
$orders = Order::all();

Después:

// Only fetching necessary columns and applying conditions
$orders = Order::select('id', 'status', 'created_at')
    ->where('status', 'shipped')
    ->get();

Conclusión clave: Especifique siempre las columnas que necesita y asegúrese de que su base de datos tenga una indexación adecuada en los campos consultados con frecuencia.


4. Minimizar el uso de middleware

Problema: aplicar middleware globalmente a cada ruta puede agregar gastos generales innecesarios.

Optimización: aplique middleware de forma selectiva solo donde sea necesario.

Antes (uso global de middleware):

// Applying middleware to all routes
Route::middleware('logRouteAccess')->group(function () {
    Route::get('/profile', 'UserProfileController@show');
    Route::get('/settings', 'UserSettingsController@index');
});

Después (uso selectivo de middleware):

// Apply middleware only to specific routes
Route::get('/profile', 'UserProfileController@show')->middleware('logRouteAccess');

Conclusión clave: El middleware solo debe aplicarse cuando sea necesario para evitar pérdidas de rendimiento.


5. Optimice la paginación para grandes conjuntos de datos

Problema: Obtener y mostrar grandes conjuntos de datos a la vez puede provocar un uso elevado de memoria y respuestas lentas.

Optimización: use paginación para limitar la cantidad de registros obtenidos por solicitud.

Antes (obteniendo todos los registros):

// Fetching all users (potentially too much data)
$users = User::all();

Después (usando paginación):

// Fetching users in chunks of 10 records per page
$users = User::paginate(10);

Conclusión clave: Pagina grandes conjuntos de datos para evitar saturar la base de datos y reducir el uso de memoria.


6. Poner en cola tareas de larga duración

Problema: Las tareas de larga duración, como enviar correos electrónicos o generar informes, ralentizan los tiempos de solicitud-respuesta.

Optimización: utiliza colas para descargar tareas y manejarlas de forma asincrónica en segundo plano.

Antes (tarea sincrónica):

// Sending email directly (slows down response)
Mail::to($user->email)->send(new OrderShipped($order));

Después (tarea en cola):

// Queuing the email for background processing
Mail::to($user->email)->queue(new OrderShipped($order));

Conclusión clave: Utilice colas para tareas que no sean urgentes para mejorar los tiempos de respuesta.


7. Utilice ruta, configuración y visualización de almacenamiento en caché

Problema: No almacenar en caché rutas, configuraciones o vistas puede provocar un rendimiento más lento, especialmente en entornos de producción.

Optimización: rutas de caché, archivos de configuración y vistas para un rendimiento más rápido en producción.

Comandos de ejemplo:

# Cache routes
php artisan route:cache

# Cache configuration files
php artisan config:cache

# Cache compiled views
php artisan view:cache

Conclusión clave: Siempre guarde en caché sus configuraciones, rutas y vistas en producción para un rendimiento más rápido de la aplicación.


8. Utilice compact() para limpiar el código

Problema: Pasar manualmente varias variables a las vistas puede generar un código detallado y difícil de administrar.

Optimización: utilice compact() para simplificar el proceso de pasar múltiples variables a una vista.

Antes:

return view('profile', [
    'user' => $user,
    'posts' => $posts,
    'comments' => $comments,
]);

Después:

return view('profile', compact('user', 'posts', 'comments'));

Conclusión clave: Usar compact() hace que tu código sea más conciso y más fácil de mantener.


9. Utilice Redis o Memcached para la sesión y el almacenamiento en caché

Problema: almacenar sesiones y datos de caché en el sistema de archivos ralentiza la aplicación en entornos de mucho tráfico.

Optimización: utilice soluciones rápidas de almacenamiento en memoria como Redis o Memcached para obtener un mejor rendimiento.

Ejemplo de configuración para Redis:

// In config/cache.php
'default' => env('CACHE_DRIVER', 'redis'),

// In config/session.php
'driver' => env('SESSION_DRIVER', 'redis'),

Conclusión clave: Evite usar el controlador de archivos para sesiones y almacenamiento en caché en producción, especialmente en aplicaciones de alto tráfico.


10. Evite el uso de consultas sin formato a menos que sea necesario

Problema: el uso de consultas SQL sin formato puede hacer que el código sea menos legible y más difícil de mantener.

Optimización: utilice Eloquent ORM o Query Builder de Laravel siempre que sea posible, pero si son necesarias consultas sin procesar, asegúrese de que estén optimizadas.

Antes (consulta sin formato):

// Using raw query directly
$users = DB::select('SELECT * FROM users WHERE status = ?', ['active']);

Después (usando Eloquent o Query Builder):

// Using Eloquent ORM for better readability and maintainability
$users = User::where('status', 'active')->get();

Conclusión clave: Prefiera Eloquent ORM a consultas sin formato a menos que sea absolutamente necesario.


11. Utilice niveles de registro eficientes

Problema: Registrar todo en todo momento puede causar una degradación del rendimiento y llenar tu almacenamiento.

Optimización: establece niveles de registro adecuados en producción para capturar solo lo necesario (por ejemplo, errores y mensajes críticos).

Ejemplo:

// In .env file, set log level to 'error' in production
LOG_LEVEL=error

Conclusión clave: registre solo lo que sea necesario en producción para evitar el uso innecesario del almacenamiento y los impactos en el rendimiento.


Pensamientos finales

Optimizar el rendimiento de Laravel es crucial para aplicaciones escalables y eficientes. Al implementar estas mejores prácticas, puedes asegurarte de que tu aplicación Laravel se ejecute más rápido, maneje más tráfico y ofrezca una mejor experiencia de usuario.

¡Déjame saber lo que piensas o siéntete libre de compartir tus propios consejos y trucos para optimizar las aplicaciones de Laravel!

¡Feliz codificación! ?

Declaración de liberación Este artículo se reproduce en: https://dev.to/harish_kumars_9c58df6fcc/10-tips-for-code-optimization-and-performance-improvement-in-laravel-1e99?1 Si hay alguna infracción, comuníquese con Study_golang@163 .com para eliminarlo
Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3