Maison  >  Article  >  cadre php  >  cache de requêtes Laravel

cache de requêtes Laravel

PHPz
PHPzoriginal
2023-05-26 13:56:39850parcourir

Laravel est un framework Web PHP populaire largement utilisé dans le développement Web. Son générateur de requêtes vous permet de créer des requêtes de base de données, des schémas et des styles de référentiel de manière élégante. Cependant, les requêtes de Laravel ORM peuvent parfois être très lentes, ce qui peut impacter les performances de votre application. Une façon de résoudre ce problème consiste à utiliser le cache de requêtes de Laravel. Dans cet article, nous présenterons le concept de cache de requêtes Laravel et comment l'utiliser dans Laravel.

Qu'est-ce que le cache de requêtes ?

Le cache de requêtes est une technologie de mise en cache qui peut être utilisée pour réduire le temps d'exécution des requêtes SQL. Dans le cache de requêtes, la première fois qu'une requête est exécutée, les résultats sont mis en cache de sorte que lorsque la requête est répétée ultérieurement, les résultats puissent être obtenus directement à partir du cache sans réexécuter la requête. Cela peut réduire considérablement le temps d'exécution des requêtes, améliorant ainsi les performances des applications.

Dans Laravel, le cache de requêtes utilise un pilote de cache pour stocker les résultats des requêtes. Vous pouvez choisir n'importe quel pilote de cache comme memcached, Redis ou le cache de fichiers, etc. Laravel fournit également une API simple qui vous permet d'utiliser facilement les pilotes de cache.

Syntaxe du cache de requêtes Laravel

Dans Laravel, la mise en cache des requêtes peut être implémentée à l'aide de la méthode cache(). Voici la syntaxe de base pour utiliser le cache de requêtes :

$users = DB::table('users')

            ->where('name', 'John')
            ->cache(10) // 缓存10分钟
            ->get();

Dans l'exemple ci-dessus, nous utilisons d'abord la méthode DB::table() pour spécifier la table de base de données à laquelle requête. Ensuite, nous utilisons la méthode Where() pour ajouter des contraintes, et enfin la méthode get() pour exécuter la requête. En même temps, nous utilisons la méthode cache() pour activer la mise en cache des requêtes, qui accepte un paramètre time pour spécifier l'heure du cache.

Comment configurer le cache de requêtes

Avant d'utiliser le cache de requêtes, vous devez d'abord configurer le pilote de cache. Laravel prend en charge une variété de pilotes de cache, notamment le cache de fichiers, le cache Memcached, le cache Redis, etc. Vous pouvez choisir le pilote de cache approprié en fonction de vos besoins. Dans cet article, nous utiliserons la mise en cache des fichiers pour démontrer.

Pour configurer la mise en cache des fichiers, ouvrez le fichier config/cache.php et vous verrez ce qui suit :

return [

/*
|--------------------------------------------------------------------------
| Default Cache Store
|--------------------------------------------------------------------------
|
| This option controls the default cache "store" that gets used while
| using this caching library. This connection is used when another is
| not explicitly specified when executing a given caching function.
|
| Supported: "apc", "array", "database", "file", "memcached", "redis", "dynamodb"
|
*/

'default' => env('CACHE_DRIVER', 'file'),

/*
|--------------------------------------------------------------------------
| Cache Stores
|--------------------------------------------------------------------------
|
| Here you may define all of the cache "stores" for your application as
| well as their drivers. You may even define multiple stores for the
| same driver to group types of items stored in your caches.
|
*/

'stores' => [

    'apc' => [
        'driver' => 'apc',
    ],

    'array' => [
        'driver' => 'array',
    ],

    'database' => [
        'driver' => 'database',
        'table' => 'cache',
        'connection' => null,
    ],

    'file' => [
        'driver' => 'file',
        'path' => storage_path('framework/cache/data'),
    ],

    'memcached' => [
        'driver' => 'memcached',
        'persistent_id' => env('MEMCACHED_PERSISTENT_ID'),
        'sasl' => [
            env('MEMCACHED_USERNAME'),
            env('MEMCACHED_PASSWORD'),
        ],
        'options' => [
            // Memcached::OPT_CONNECT_TIMEOUT => 2000,
        ],
        'servers' => [
            [
                'host' => env('MEMCACHED_HOST', '127.0.0.1'),
                'port' => env('MEMCACHED_PORT', 11211),
                'weight' => env('MEMCACHED_WEIGHT', 100),
            ],
        ],
    ],

    'redis' => [
        'driver' => 'redis',
        'connection' => 'cache',
    ],

],

/*
|--------------------------------------------------------------------------
| Cache Key Prefix
|--------------------------------------------------------------------------
|
| When utilizing a RAM based store such as APC or Memcached, there might
| be other applications utilizing the same cache. So, we'll specify a
| value to get prefixed to all our keys so we can avoid collisions.
|
*/

'prefix' => env('CACHE_PREFIX', Str::slug(env('APP_NAME', 'laravel'), '_').'_cache'),

]

Dans le fichier de configuration ci-dessus, vous pouvez voir que "Laravel prend en charge plusieurs parties du pilote de mise en cache. Le pilote « fichier » utilise le système de fichiers pour stocker le cache. Vous pouvez modifier la valeur de l'option path' pour spécifier le répertoire dans lequel vous souhaitez que le cache soit stocké. Par défaut, tous les caches sont stockés dans le répertoire storage/framework/cache/data.

Remarques après l'utilisation du cache de requêtes

Il y a plusieurs choses à prendre en compte lors de l'utilisation du cache de requêtes. Premièrement, le cache de requêtes n'est utile que pour les requêtes qui renvoient des résultats après l'exécution de la requête. Si vous exécutez des requêtes qui modifient la base de données, telles que les requêtes INSERT, UPDATE et DELETE, le cache de requêtes ne fonctionnera pas. Deuxièmement, le cache de requêtes n’est utile que pour les requêtes classiques. La mise en cache des requêtes ne fonctionnera pas si votre requête contient des éléments aléatoires tels que des horodatages ou des GUID. Enfin, la mise en cache des requêtes ne doit être utilisée que lorsque les résultats des requêtes changent rarement. Si les résultats de votre requête changent fréquemment, l'utilisation du cache de requêtes peut entraîner des résultats incorrects.

Conclusion

Le cache de requêtes Laravel est un outil puissant pour réduire le temps d'exécution des requêtes SQL. Les problèmes de performances sont toujours une préoccupation lors du développement d'applications Web à grande échelle. En utilisant le cache de requêtes Laravel, vous pouvez améliorer considérablement les performances de votre application et fournir des temps de réponse plus rapides. Lors de la mise en œuvre de la mise en cache des requêtes, veuillez prêter attention aux points et considérations que nous avons mentionnés et choisissez le pilote de cache approprié en fonction de vos besoins.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn