{"id":43470,"date":"2021-09-16T11:14:53","date_gmt":"2021-09-16T09:14:53","guid":{"rendered":"https:\/\/kinsta.com\/?p=98920"},"modified":"2025-02-07T15:12:23","modified_gmt":"2025-02-07T14:12:23","slug":"laravel-caching","status":"publish","type":"post","link":"https:\/\/kinsta.com\/es\/blog\/laravel-caching\/","title":{"rendered":"Todo lo que Necesitas Saber Sobre la Cach\u00e9 de Laravel"},"content":{"rendered":"<p>El almacenamiento en cach\u00e9 es esencial para lograr un alto rendimiento y escalabilidad. Implementar la <a href=\"https:\/\/kinsta.com\/es\/blog\/que-es-la-cache\/\">estrategia adecuada de almacenamiento en cach\u00e9<\/a> desde la fase de desarrollo es fundamental para evitar APIs rezagadas y <a href=\"https:\/\/kinsta.com\/es\/blog\/plugins-cache-wordpress\/\">tiempos de carga de p\u00e1ginas<\/a> lentos. Laravel es uno de los frameworks PHP m\u00e1s populares, por lo que implementar la estrategia \u00f3ptima de cache en Laravel es indispensable para una mejor experiencia de usuario y un mayor impacto en el negocio.<\/p>\n<p>En este art\u00edculo, exploraremos estrategias para implementar y manipular el almacenamiento en cach\u00e9 en Laravel. Aprender\u00e1s c\u00f3mo funciona la cach\u00e9 de Laravel, varias consultas de cach\u00e9 de Laravel y c\u00f3mo puedes manejar la cach\u00e9 en las aplicaciones de Laravel.<\/p>\n<p>Sacar\u00e1s m\u00e1s provecho de este art\u00edculo si ya tienes un conocimiento b\u00e1sico de lo siguiente en tu haber:<\/p>\n<ul>\n<li>Buenos conocimientos de <a href=\"https:\/\/kinsta.com\/es\/blog\/herramientas-desarrollo-web\/\">desarrollo web<\/a><\/li>\n<li><a href=\"https:\/\/kinsta.com\/es\/blog\/que-es-laravel\/\">Conocimientos b\u00e1sicos de Laravel<\/a><\/li>\n<li>Construcci\u00f3n de <a href=\"https:\/\/masteringbackend.com\/posts\/laravel-framework-the-ultimate-guide\">APIs con Laravel<\/a><\/li>\n<li><a href=\"https:\/\/kinsta.com\/es\/docs\/alojamiento-wordpress\/cache\/cache-del-sitio\/#site-cache-expiration\">Conocimientos b\u00e1sicos sobre el almacenamiento en cach\u00e9<\/a><\/li>\n<\/ul>\n<p>Vamos a sumergirnos en el tema.<\/p>\n<div><\/div><kinsta-auto-toc heading=\"Table of Contents\" exclude=\"last\" list-style=\"arrow\" selector=\"h2\" count-number=\"-1\"><\/kinsta-auto-toc>\n<h3>Mira Nuestra <a href=\"https:\/\/www.youtube.com\/watch?v=6eJMRMgn6mI\">Gu\u00eda en Video<\/a> sobre la Cach\u00e9 de Laravel<\/h3>\n<kinsta-video src=\"https:\/\/www.youtube.com\/watch?v=6eJMRMgn6mI\"><\/kinsta-video>\n<h2>\u00bfPor qu\u00e9 es importante la cach\u00e9?<\/h2>\n<p>Con el reciente auge de los negocios en Internet, diferentes empresas tienen estad\u00edsticas que muestran c\u00f3mo el tiempo de carga del sitio web y el bajo rendimiento pueden impactar fuertemente en el SEO, el compromiso del usuario y las tasas de conversaci\u00f3n sin el almacenamiento en cach\u00e9. Y eso comienza con una excelente estrategia de almacenamiento en cach\u00e9.<\/p>\n<p><a href=\"https:\/\/kinsta.com\/es\/aprender\/optimizacion-de-velocidad-del-sitio\/#slow-how-slow\">Seg\u00fan un estudio online<\/a>, \u00ab1 segundo de retraso en la carga le costar\u00eda a Amazon 1.600 millones de d\u00f3lares en ventas al a\u00f1o\u00bb.<\/p>\n<p>Otro <a href=\"https:\/\/www.thinkwithgoogle.com\/future-of-marketing\/digital-transformation\/the-google-gospel-of-speed-urs-hoelzle\/\">estudio de Google inform\u00f3<\/a>: \u00abNuestra investigaci\u00f3n muestra que si los resultados de la b\u00fasqueda se ralentizan aunque sea una fracci\u00f3n de segundo, la gente busca menos (en serio: Un <strong>retraso de 400 ms conlleva <\/strong>un <strong>descenso del 0,44% <\/strong>en el volumen de b\u00fasquedas, seg\u00fan los aficionados a los datos). Y esta impaciencia no se limita a las b\u00fasquedas: Cuatro de cada cinco usuarios de Internet hacen clic si un v\u00eddeo se detiene mientras se carga\u00bb.<\/p>\n<p>Una ligera lentitud en el tiempo de carga de tu p\u00e1gina web puede tener un gran impacto en la experiencia de tus usuarios y en la p\u00e9rdida de fondos en general.<\/p>\n<h2>\u00bfQu\u00e9 es la cach\u00e9 de Laravel?<\/h2>\n<p>Laravel proporciona una implementaci\u00f3n robusta y f\u00e1cil de usar de la cach\u00e9 y diferentes backends de cach\u00e9. Con la cach\u00e9 de Laravel, se puede cambiar de manera eficiente y eficaz entre muchos motores de cach\u00e9 sin escribir ning\u00fan c\u00f3digo.<\/p>\n<p>Puedes encontrar la configuraci\u00f3n de la cach\u00e9 de Laravel dentro de la carpeta <code><strong>config\/cache.php<\/strong><\/code>, aunque es probable que solo necesites el archivo <strong>.env <\/strong>para cambiar entre diferentes backends de cach\u00e9.<\/p>\n<p>La cach\u00e9 de Laravel tambi\u00e9n proporciona muchos m\u00e9todos pr\u00e1cticos que podemos utilizar para implementar diferentes estrategias de cach\u00e9.<\/p>\n\n<h3>Controladores de cach\u00e9 de Laravel y comparaciones<\/h3>\n<p>La cach\u00e9 de Laravel proporciona grandes backends y controladores de cach\u00e9. Dependiendo de tu caso de uso, puedes cambiar entre ellos para mejorar el rendimiento de tu aplicaci\u00f3n y el tiempo de carga.<\/p>\n<p>Dicho esto, la cach\u00e9 de Laravel tambi\u00e9n proporciona una manera perfecta de crear un backend personalizado y utilizarlo con la cach\u00e9 de Laravel, pero solo si la lista de abajo no se ajusta a tu caso de uso.<\/p>\n<p>A continuaci\u00f3n hablaremos de la lista de todos los backends que proporciona la cach\u00e9 de Laravel.<\/p>\n<h4>1. Archivo<\/h4>\n<p>El controlador de <strong>archivos <\/strong>es el backend por defecto utilizado por la cach\u00e9 de Laravel cuando no se especifica ning\u00fan controlador en el archivo <strong>.env.<\/strong><\/p>\n<p>El backend de <strong>archivos <\/strong>est\u00e1 dise\u00f1ado para almacenar los datos en cach\u00e9 en un archivo encriptado que se encuentra en <code><strong>storage\/framework\/<\/strong><\/code>. Laravel crea un archivo encriptado con los datos y la clave de la cach\u00e9 cuando se almacenan nuevos datos. Lo mismo ocurre cuando el usuario intenta recuperar el contenido. Laravel cache busca en la carpeta la clave especificada y, si la encuentra, devuelve el contenido.<\/p>\n<p>Aunque el backend de <strong>archivos <\/strong>funciona perfectamente y ahorra tiempo en la instalaci\u00f3n y configuraci\u00f3n de controladores externos, tambi\u00e9n puede ser <a href=\"https:\/\/kinsta.com\/developer-roles\/development-at-kinsta\/\">perfecto para el desarrollo<\/a>. Es m\u00e1s r\u00e1pido que acceder a los datos desde el servidor de la base de datos directamente.<\/p>\n<p>Para utilizar el controlador de <strong>archivos<\/strong>, a\u00f1ade el siguiente c\u00f3digo a tu archivo <strong>.env<\/strong>:<\/p>\n<pre><code class=\"language-markdown\">CACHE_DRIVER=file<\/code><\/pre>\n<h4>2. Array<\/h4>\n<p>El controlador de <strong>matrices <\/strong>es un backend de cach\u00e9 perfecto para ejecutar pruebas automatizadas y se configura f\u00e1cilmente con Github Actions, Jenkins, etc.<\/p>\n<p>El backend de <strong>array <\/strong>almacena los datos almacenados en cach\u00e9 en un array en PHP y no requiere que instales o configures ning\u00fan controlador. Funciona perfectamente para pruebas automatizadas, y es un poco m\u00e1s r\u00e1pido que el backend de cach\u00e9 de archivos.<\/p>\n<p>Para utilizar el controlador de <strong>matrices<\/strong>, a\u00f1ade el siguiente c\u00f3digo a tu archivo <strong>.env<\/strong>:<\/p>\n<pre><code class=\"language-markdown\">CACHE_DRIVER=array<\/code><\/pre>\n<h4>3. Base de datos<\/h4>\n<p>Cuando se utiliza el controlador de <strong>la base de datos<\/strong>, los datos se almacenan en la memoria para el proceso PHP actual. Por lo tanto, es necesario crear una tabla de base de datos para almacenar los datos en cach\u00e9. Adem\u00e1s, el almacenamiento en cach\u00e9 de <a href=\"https:\/\/kinsta.com\/es\/blog\/base-de-datos-wordpress\/\">la base de datos<\/a> mejora la escalabilidad al distribuir la carga de trabajo de las consultas desde el backend a m\u00faltiples frontends.<\/p>\n<p>Puedes ejecutar este comando de Artisan \u2014 <code>php artisan cache:table<\/code> \u2014 para autogenerar el esquema de la base de datos que necesita el controlador de la base de datos.<\/p>\n<p>El controlador de <strong>la base de datos <\/strong>se utiliza principalmente en situaciones en las que se puede instalar cualquier software en la plataforma de alojamiento.<\/p>\n<p>Por ejemplo, digamos que est\u00e1s utilizando un plan de alojamiento gratuito con opciones limitadas. En ese caso, te sugerimos que te quedes con el controlador de <strong>archivos <\/strong>porque el controlador de <strong>la base de datos <\/strong>es, en la mayor\u00eda de los casos, el punto m\u00e1s d\u00e9bil de tu aplicaci\u00f3n, y tratar de empujar m\u00e1s datos en ese cuello de botella no es una buena idea.<\/p>\n<p>Para utilizar el controlador de <strong>la base de datos<\/strong>, a\u00f1ade el siguiente c\u00f3digo a su archivo <strong>.env<\/strong>:<\/p>\n<pre><code class=\"language-markdown\">CACHE_DRIVER=database<\/code><\/pre>\n<h4>4. Redis<\/h4>\n<p>El controlador <strong>redis <\/strong>utiliza la tecnolog\u00eda de cach\u00e9 basada en memoria llamada <a href=\"https:\/\/kinsta.com\/es\/docs\/alojamiento-wordpress\/cache\/cache-redis\/\">Redis<\/a>. Aunque es r\u00e1pido en comparaci\u00f3n con los otros controladores de cach\u00e9 comentados anteriormente, requiere la instalaci\u00f3n y configuraci\u00f3n de tecnolog\u00eda externa.<\/p>\n<p>Para utilizar el controlador de <strong>redis<\/strong>, a\u00f1ade el siguiente c\u00f3digo a su archivo <strong>.env<\/strong>:<\/p>\n<pre><code class=\"language-markdown\">CACHE_DRIVER=redis<\/code><\/pre>\n<h4>5. Memcached<\/h4>\n<p>Memcached es conocido por ser el almac\u00e9n de cach\u00e9 basado en memoria m\u00e1s popular. Si no te importa un poco de mantenimiento extra del servidor (tener que instalar y mantener servicios adicionales), los controladores de cach\u00e9 basados en memoria Memcached son grandes opciones.<\/p>\n<p>El uso del controlador <strong>memcached <\/strong>requiere la instalaci\u00f3n del <a href=\"https:\/\/pecl.php.net\/package\/memcached\">paquete Memcached PECL<\/a>.<\/p>\n<p>Para utilizar el controlador <strong>memcached<\/strong>, a\u00f1ade el siguiente c\u00f3digo a su archivo <strong>.env<\/strong>.<\/p>\n<pre><code class=\"language-markdown\">CACHE_DRIVER=memcached <\/code><\/pre>\n<p><a href=\"https:\/\/www.georgebuckingham.com\/laravel-cache-driver-performance\/\">El mejor controlador de cach\u00e9 a utilizar y el rendimiento<\/a> del controlador de cach\u00e9 dependen del caso de uso de tu proyecto y de la cantidad de datos a recuperar.<\/p>\n<h3>Uso y m\u00e9todos de la cach\u00e9 de Laravel<\/h3>\n<p>La cach\u00e9 de Laravel proporciona muchos m\u00e9todos valiosos utilizados para implementar muchas estrategias de almacenamiento en cach\u00e9.<\/p>\n<p>A continuaci\u00f3n, enumeraremos y explicaremos los diferentes m\u00e9todos (clasificados seg\u00fan tu caso de uso):<\/p>\n<ol>\n<li><code>put()<\/code><\/li>\n<li><code>get()<\/code><\/li>\n<li><code>many()<\/code><\/li>\n<li><code>putMany()<\/code><\/li>\n<li><code>increment()<\/code><\/li>\n<li><code>decrement()<\/code><\/li>\n<li><code>forever()<\/code><\/li>\n<li><code>forget()<\/code><\/li>\n<li><code>flush()<\/code><\/li>\n<li><code>remember()<\/code><\/li>\n<li><code>rememberForever()<\/code><\/li>\n<\/ol>\n<h4>Almacenamiento de la cach\u00e9<\/h4>\n<p>El almacenamiento de nuevos datos en la cach\u00e9 es muy sencillo utilizando los diferentes m\u00e9todos, cada uno con varios casos de uso.<\/p>\n<h5>1. Cache::put()<\/h5>\n<p>Este m\u00e9todo acepta tres par\u00e1metros clave, la <strong>duraci\u00f3n <\/strong>y los <strong>datos <\/strong>que se van a almacenar en cach\u00e9.<\/p>\n<p>Veamos c\u00f3mo utilizar <code><strong>Cache::put()<\/strong><\/code>:<\/p>\n<pre><code class=\"language-php\">Cache::put(key, data, duration)\n\n$post = Post::find(1);\n\nCache::put('post_1', $post, 20);\n<\/code><\/pre>\n<p>El c\u00f3digo anterior almacenar\u00e1 en cach\u00e9 la entrada con la <strong>clave <\/strong>\u00fanica durante 20 segundos.<\/p>\n<h5>2. Cache::putMany()<\/h5>\n<p>Este m\u00e9todo almacena un array de datos en la cach\u00e9 a la vez con la misma duraci\u00f3n. Acepta dos par\u00e1metros que son <strong>datos <\/strong>y <strong>segundos<\/strong>.<\/p>\n<p>Veamos c\u00f3mo utilizar <code><strong>Cache::putMany()<\/strong><\/code>:<\/p>\n<pre><code class=\"language-php\">Cache::putMany(data, duration) \/\/ syntax\n\n$posts = Post::all();\n\nCache::putMany($posts, 20);<\/code><\/pre>\n<h5>3. Cache::remember()<\/h5>\n<p>Este m\u00e9todo es otra excelente manera de implementar la estrategia de Aside de la cach\u00e9. El m\u00e9todo <code><strong>Cache::remember()<\/strong><\/code> acepta tres par\u00e1metros, una <strong>clave<\/strong>, <strong>unos segundos <\/strong>y un <strong>cierre <\/strong>utilizado para recuperar los datos de la base de datos si no se encuentran.<\/p>\n<p>Veamos c\u00f3mo utilizar <code><strong>Cache::remember()<\/strong><\/code>:<\/p>\n<pre><code class=\"language-php\">Cache::remember(key, duration, closure) \/\/ syntax\n\nCache::remember('posts', 20, function(){\n  return Post::all();\n});<\/code><\/pre>\n<p>La cach\u00e9 de Laravel tambi\u00e9n tiene el m\u00e9todo <code><strong>Cache::rememberForever()<\/strong><\/code>, que no acepta el par\u00e1metro <strong>seconds <\/strong>y almacena los <strong>datos <\/strong>para siempre.<\/p>\n<h5>4. Cache::forever()<\/h5>\n<p>Este m\u00e9todo almacena los datos en el servidor de cach\u00e9 para siempre sin especificar ninguna duraci\u00f3n. Puedes implementarlo con el siguiente c\u00f3digo:<\/p>\n<pre><code class=\"language-php\">Cache::forever(key, data)\n\n$post = Post::find(1);\n\nCache::forever('post_1', $post);\n<\/code><\/pre>\n<h4>Recuperaci\u00f3n de los datos de la cach\u00e9<\/h4>\n<p>Los m\u00e9todos de esta categor\u00eda recuperan datos de la cach\u00e9. Algunos de estos m\u00e9todos pueden comportarse de forma diferente dependiendo de si los datos se encuentran o no.<\/p>\n<h5>1. Cache::get()<\/h5>\n<p>Este m\u00e9todo recupera datos del servidor de cach\u00e9 con una clave espec\u00edfica. Puedes recuperar un elemento utilizando el c\u00f3digo siguiente:<\/p>\n<pre><code class=\"language-php\">Cache::get(key) \/\/ syntax\n\n$posts = Cache::get('posts');<\/code><\/pre>\n<h5>2. Cache::many()<\/h5>\n<p>Este m\u00e9todo es similar a <code><strong>Cache::putMany()<\/strong><\/code>. Se utiliza para recuperar un array de datos de la cach\u00e9 de una sola vez utilizando un array de las claves de la cach\u00e9. Puedes recuperar un array de cach\u00e9 usando el siguiente c\u00f3digo:<\/p>\n<pre><code class=\"language-php\">Cache::many(keys) \/\/ syntax\n\nconst $keys = [\n  'posts',\n  'post_1',\n  'post_2'\n];\n\n$posts = Cache::many($keys);\n<\/code><\/pre>\n<h5>3. Cache::remember()<\/h5>\n<p>Tambi\u00e9n puedes utilizar este m\u00e9todo para recuperar los datos almacenados en la cach\u00e9, comprobando el servidor de cach\u00e9 mediante la clave proporcionada. Si los datos est\u00e1n almacenados en la cach\u00e9, los recuperar\u00e1. En caso contrario, recuperar\u00e1 los datos del servidor de la base de datos y los almacenar\u00e1 en la cach\u00e9. Este m\u00e9todo es el mismo que el m\u00e9todo <code><strong>Cache::rememberForever()<\/strong><\/code> con s\u00f3lo un par\u00e1metro extra de <strong>segundos <\/strong>en el m\u00e9todo <code><strong>Cache::remember()<\/strong><\/code>.<\/p>\n<h4>Eliminaci\u00f3n de elementos de la cach\u00e9<\/h4>\n<p>Los m\u00e9todos de esta categor\u00eda se utilizan para eliminar elementos de la cach\u00e9, agrupados por funcionalidad.<\/p>\n<h5>1. Cache::forget()<\/h5>\n<p>Este m\u00e9todo elimina un solo elemento de la cach\u00e9 con un par\u00e1metro clave especificado:<\/p>\n<pre><code class=\"language-php\">Cache::forget('key');<\/code><\/pre>\n<h5>2. Cache::flush()<\/h5>\n<p>Este m\u00e9todo borra todos los motores de la cach\u00e9. Elimina todos los elementos almacenados en cualquier lugar de la cach\u00e9:<\/p>\n<pre><code class=\"language-php\">Cache::flush();<\/code><\/pre>\n<h4>Incremento o disminuci\u00f3n de los valores de la cach\u00e9<\/h4>\n<p>Puedes ajustar los valores de un valor entero almacenado en tu cach\u00e9 utilizando los m\u00e9todos de incremento y decremento, respectivamente:<\/p>\n<pre><code class=\"language-php\">Cache::increment('key');\n\nCache::increment('key', $amount);\n\nCache::decrement('key');\n\nCache::decrement('key', $amount);<\/code><\/pre>\n<p>La cach\u00e9 de Laravel tiene muchos m\u00e9todos excelentes que no hemos discutido anteriormente, pero los m\u00e9todos anteriores son populares. Puedes obtener una visi\u00f3n general de todos los m\u00e9todos en la <a href=\"https:\/\/laravel.com\/docs\/8.x\/cache#cache-usage\">documentaci\u00f3n oficial de Laravel cache<\/a>.<\/p>\n<h3>Explicaci\u00f3n de los comandos de la cach\u00e9<\/h3>\n<p>Laravel proporciona comandos para que trabajar con la cach\u00e9 de Laravel sea f\u00e1cil y r\u00e1pido. A continuaci\u00f3n se muestra la lista de todos los <a href=\"https:\/\/kinsta.com\/es\/blog\/comandos-de-ssh\/\">comandos<\/a> y sus funcionalidades.<\/p>\n<h4>Borrar la cach\u00e9 de Laravel<\/h4>\n<p>Este comando se utiliza para limpiar la cach\u00e9 de Laravel antes de que expire utilizando la terminal\/consola. Por ejemplo, puedes ejecutar el siguiente comando:<\/p>\n<pre><code class=\"language-bash\">php artisan cache:clear<\/code><\/pre>\n<h4>Borrar el cach\u00e9 de la ruta<\/h4>\n<p>Este comando se utiliza para borrar la cach\u00e9 de rutas de tu aplicaci\u00f3n Laravel. Por ejemplo, ejecuta el siguiente comando para borrar la cach\u00e9 de rutas:<\/p>\n<pre><code class=\"language-bash\">php artisan config:cache<\/code><\/pre>\n<h4>Borrar archivos de vista compilados<\/h4>\n<p>Este comando se utiliza para borrar los archivos de vista compilados de tu aplicaci\u00f3n Laravel. Puedes lograrlo con el siguiente comando:<\/p>\n<pre><code class=\"language-php\">php artisan view:clear<\/code><\/pre>\n<h4>Tabla de la base de datos<\/h4>\n<p>Cuando se utiliza el controlador de base de datos, es necesario crear un esquema de base de datos llamado <strong>cach\u00e9 <\/strong>para almacenar los datos de la cach\u00e9. Tambi\u00e9n puedes utilizar el comando Artisan para generar una migraci\u00f3n con el esquema adecuado:<\/p>\n<pre><code class=\"language-bash\">php artisan cache:table<\/code><\/pre>\n<h2>Estrategias de cach\u00e9 de Laravel<\/h2>\n<p>Dependiendo del caso de uso de tu aplicaci\u00f3n y de la estructura de los datos, es probable que tengas a tu disposici\u00f3n varias estrategias de cach\u00e9 diferentes. Incluso puedes crear una estrategia personalizada que se ajuste a tus necesidades. A continuaci\u00f3n vamos a repasar la lista de estrategias de cach\u00e9 populares que puedes implementar en tu proyecto Laravel.<\/p>\n<aside role=\"note\" class=\"wp-block-kinsta-notice is-style-info\">\n            <h3>Info<\/h3>\n        <p>Kinsta te permite ejecutar Laravel para tus productos, aunque no est\u00e9 oficialmente admitido por nuestro equipo.<\/p>\n<\/aside>\n\n<h3>writeThrough<\/h3>\n<p>En la estrategia <strong>writeThrough<\/strong>, el servidor de cach\u00e9 se sit\u00faa entre las peticiones y el servidor de base de datos, haciendo que cada operaci\u00f3n de <strong>escritura <\/strong>pase por el servidor de cach\u00e9 antes de ir al servidor de base de datos. Por lo tanto, la estrategia de almacenamiento en cach\u00e9 <strong>writeThrough<\/strong> es similar a la estrategia <strong>readThrough<\/strong>.<\/p>\n<p>Puedes implementar esta estrategia con la cach\u00e9 de Laravel con el siguiente c\u00f3digo:<\/p>\n<pre><code class=\"language-php\">public function writeThrough($key, $data, $minutes) {\n    $cacheData = Cache::put($key, $data, $minutes)\n\n    \/\/ Database Server is called from(after) the Cache Server.\n    $this-&gt;storeToDB($cachedData)\n    return $cacheData\n}\n\nprivate function storeToDB($data){\n    Database::create($data)\n    return true\n}<\/code><\/pre>\n<h3>writeBack (writeBehind)<\/h3>\n<p>Esta estrategia es una forma m\u00e1s avanzada de implementar la estrategia <strong>writeThrough <\/strong>a\u00f1adiendo retrasos en las operaciones de escritura.<\/p>\n<p>Tambi\u00e9n se puede llamar a esto la estrategia <strong>writeBehind <\/strong>por el retraso en el tiempo que se aplica al servidor de cach\u00e9 antes de escribir los datos en el servidor de la base de datos.<\/p>\n<p>Puedes implementar esta estrategia con la cach\u00e9 de Laravel con el siguiente c\u00f3digo:<\/p>\n<pre><code class=\"language-php\">$durationToFlush = 1; \/\/ (in minute)\n $tempDataToFlush = [];\n\n  public function writeBack($key, $data, $minutes){\n    return $this-&gt;writeThrough($key, $data, $minutes);\n  }\n\n  public function writeThrough($key, $data, $minutes) {\n      $cacheData = Cache::put($key, $data, $minutes);\n      $this-&gt;storeForUpdates($cacheData);\n      return $cacheData;\n  }\n\n\/\/ Stores new data to temp Array for updating\n  private function storeForUpdates($data){\n    $tempData = {};\n    $tempData['duration'] = this.getMinutesInMilli();\n    $tempData['data'] = data;\n    array_push($tempDataToFlush, data);\n  }\n\n\/\/ Converts minutes to millisecond\nprivate function getMinutesInMilli(){\n  $currentDate = now();\n  $futureDate = Carbon(Carbon::now()-&gt;timestamp + $this-&gt;durationToFlush * 60000)\n  return $futureDate-&gt;timestamp\n}\n\n\/\/ Calls to update the Database Server.\npublic function updateDatabaseServer(){\n  if($this-&gt;tempDataToFlush){\n    foreach($this-&gt;tempDataToFlush as $index =&gt; $obj){\n      if($obj-&gt;duration timestamp){\n        if(Database::create($obj-&gt;data)){\n            array_splice($this-&gt;tempDataToFlush, $index, 1);\n        }\n      }\n    }\n  }\n}<\/code><\/pre>\n<p>El m\u00e9todo <strong>writeBack <\/strong>llama al m\u00e9todo <strong>writeThrough<\/strong>, que almacena los datos en el servidor de cach\u00e9 y en una matriz temporal que se enviar\u00e1 posteriormente al servidor de bases de datos mediante el m\u00e9todo <strong>updateDatabaseServer<\/strong>. Puedes configurar un <a href=\"https:\/\/masteringbackend.com\/posts\/laravel-cron-the-definitive-guide\">CronJob<\/a> para actualizar el servidor de la base de datos cada cinco minutos.<\/p>\n<h3>writeAround<\/h3>\n<p>Esta estrategia permite que todas las operaciones de <strong>escritura <\/strong>vayan directamente al servidor de la base de datos sin actualizar el servidor de cach\u00e9 &#8211; solo durante las operaciones de <strong>lectura<\/strong> se actualiza el servidor de cach\u00e9.<\/p>\n<p>Suponiendo que un usuario quiera crear un nuevo <strong>Art\u00edculo<\/strong>, <strong>\u00e9ste <\/strong>se almacena directamente en el servidor de la base de datos. Cuando el usuario quiere leer el contenido del <strong>art\u00edculo <\/strong>por primera vez, el <strong>art\u00edculo <\/strong>se recupera del servidor de la base de datos y actualiza el servidor de cach\u00e9 para las siguientes solicitudes.<\/p>\n<p>Puedes implementar esta estrategia con la cach\u00e9 de Laravel con el siguiente c\u00f3digo:<\/p>\n<pre><code class=\"language-php\">public function writeAround($data) {\n    $storedData = Database::create($data);\n    return $storedData;\n}\n\npublic function readOperation($key, $minutes){\n    $cacheData = Cache::remember($key, $minutes, function() {\n      return Article::all();\n    })\n    return $cacheData;\n}\n<\/code><\/pre>\n<h3>Cache Aside (Lazy Loading)<\/h3>\n<p>En esta estrategia, la base de datos se mantiene al margen y la aplicaci\u00f3n solicita primero los datos al servidor de cach\u00e9. Entonces, si hay un \u00e9xito (encontrado), los datos se devuelven al cliente. De lo contrario, si hay un fallo (no se encuentra), el servidor de la base de datos solicita los datos y actualiza el servidor de cach\u00e9 para las siguientes solicitudes.<\/p>\n<p>Puedes implementar esta estrategia con la cach\u00e9 de Laravel con el siguiente c\u00f3digo:<\/p>\n<pre><code class=\"language-php\">public function lazyLoadingStrategy($key, $minutes, $callback) {\n  if (Cache::has($key)) {\n      $data = Cache::get($key);\n      return $data;\n  } else {\n      \/\/ Database Server is called outside the Cache Server.\n      $data = $callback();\n      Cache::set($key, $data, $minutes);\n      return $data;\n  }\n}<\/code><\/pre>\n<p>El c\u00f3digo anterior muestra la implementaci\u00f3n de la estrategia de Aside de la cach\u00e9, que equivale a implementar el m\u00e9todo <strong>Cache::remember<\/strong>.<\/p>\n<h3>Read Through<\/h3>\n<p>Esta estrategia es directamente opuesta a la Estrategia de Cach\u00e9 Aside. En esta estrategia, el servidor de cach\u00e9 se sit\u00faa entre la solicitud del cliente y el servidor de la base de datos.<\/p>\n<p>Las solicitudes van directamente al servidor de cach\u00e9, y \u00e9ste se encarga de recuperar los datos del <a href=\"https:\/\/kinsta.com\/es\/blog\/instalar-php\/\">servidor de base de datos<\/a> si no se encuentran en el servidor de cach\u00e9.<\/p>\n<p>Puedes implementar esta estrategia con la cach\u00e9 de Laravel con el siguiente c\u00f3digo:<\/p>\n<pre><code class=\"language-php\">public function readThrough($key, $minutes) {\n      $data = Cache::find($key, $minutes);\n      return $data;\n}\n\nprivate function find($key, $minutes){\n    if(Cache::has($key);){\n      return Cache::get($key);\n    }\n\n    \/\/ Database Server is called from the Cache Server.\n    $DBdata = Database::find($key);\n    Cache:put($key, $DBdata, $minutes);\n    return $DBdata;\n}<\/code><\/pre>\n<p>\u00a1Aqu\u00ed lo tienes! Ahora hemos discutido algunas estrategias populares de almacenamiento en cach\u00e9 para tu pr\u00f3xima aplicaci\u00f3n Laravel. Recuerda que incluso puedes utilizar una estrategia de almacenamiento en cach\u00e9 personalizada que se adapte mejor a los requisitos de tu proyecto.<\/p>\n<h2>Almacenamiento en cach\u00e9 de la parte de la interfaz de usuario de una aplicaci\u00f3n Laravel<\/h2>\n<p>El almacenamiento en cach\u00e9 de la UI de nuestra aplicaci\u00f3n Laravel es un concepto conocido como Full Page cache FPC. El t\u00e9rmino se refiere al proceso de almacenamiento en cach\u00e9 de la respuesta HTML de una aplicaci\u00f3n.<\/p>\n<p>Es excelente para aplicaciones en las que los datos HTML din\u00e1micos no cambian con frecuencia. Puedes almacenar en cach\u00e9 la respuesta HTML para obtener una respuesta general y una renderizaci\u00f3n del HTML m\u00e1s r\u00e1pidas.<\/p>\n<p>Podemos implementar el FPC con la siguiente l\u00ednea de c\u00f3digo:<\/p>\n<pre><code class=\"language-php\">class ArticlesController extends Controller {\n    public function index() {\n        if ( Cache::has('articles_index') ) {\n            return Cache::get('articles_index');\n        } else {\n            $news = News::all();\n            $cachedData = view('articles.index')-&gt;with('articles', $news)-&gt;render();\n            Cache::put('articles_index', $cachedData);                                         \n            return $cachedData;           \n        }  \n    }\n}<\/code><\/pre>\n<p>A primera vista, te habr\u00e1s dado cuenta de que comprobamos si la p\u00e1gina <strong>articles_index <\/strong>ya existe en nuestro servidor de cach\u00e9. Luego devolvemos la p\u00e1gina renderiz\u00e1ndola con los m\u00e9todos <strong>view() <\/strong>y <strong>render() <\/strong>de Laravel.<\/p>\n<p>En caso contrario, se renderiza la p\u00e1gina y se almacena el resultado en nuestro servidor de cach\u00e9 para posteriores peticiones antes de devolver la p\u00e1gina renderizada al navegador.<\/p>\n<h2>Construir una aplicaci\u00f3n Laravel<\/h2>\n<p>Ahora vamos a aplicar lo que hemos aprendido hasta ahora creando un nuevo proyecto Laravel e implementando la cach\u00e9 de Laravel.<\/p>\n<p>Si no has utilizado Laravel, puedes leer <a href=\"https:\/\/kinsta.com\/es\/blog\/que-es-laravel\/\">qu\u00e9 es Laravel<\/a> y echar un vistazo a nuestra lista de <a href=\"https:\/\/kinsta.com\/es\/blog\/tutoriales-laravel\/\">excelentes tutoriales de Laravel<\/a> para empezar.<\/p>\n<h3>Configuraci\u00f3n de Laravel<\/h3>\n<p>En primer lugar, vamos a crear una instancia nueva de Laravel utilizando el siguiente comando. Puedes consultar la documentaci\u00f3n oficial para m\u00e1s informaci\u00f3n.<\/p>\n<p>Abre tu consola y navega hasta el lugar donde almacena tus proyectos PHP antes de ejecutar los comandos siguientes. Aseg\u00farate de tener <a href=\"https:\/\/getcomposer.org\/\">Composer<\/a> instalado y configurado correctamente.<\/p>\n<pre><code class=\"language-bash\">composer create-project laravel\/laravel fast-blog-app\n\n\/\/ Change directory to current Laravel installation\ncd fast-blog-app\n\n\/\/ Start Laravel development server.\nphp artisan serve\n<\/code><\/pre>\n<h3>Configurar y alimentar la base de datos<\/h3>\n<p>A continuaci\u00f3n, configuraremos nuestra base de datos, crearemos un nuevo modelo de <strong>art\u00edculo <\/strong>y sembraremos 500 puntos de datos falsos para las pruebas.<\/p>\n<p>Abre tu <a href=\"https:\/\/kinsta.com\/es\/blog\/adminer\/\">cliente de base de datos<\/a> y crea una nueva base de datos. Haremos lo mismo con el nombre <strong>fast_blog_app_db <\/strong>y luego llenaremos nuestro archivo <strong>.env <\/strong>con las credenciales de la base de datos:<\/p>\n<pre><code class=\"language-bash\">DB_CONNECTION=mysql\nDB_HOST=127.0.0.1\nDB_PORT=3306\nDB_DATABASE=fast_blog_app_db\nDB_USERNAME=\/\/DB USERNAME HERE\nDB_PASSWORD=\/\/DB PASSWORD HERE\n<\/code><\/pre>\n<p>A continuaci\u00f3n, ejecutaremos el siguiente comando para crear la migraci\u00f3n y el modelo de <strong>art\u00edculo<\/strong> simult\u00e1neamente:<\/p>\n<pre><code class=\"language-bash\">php artisan make:model Article -m<\/code><\/pre>\n<p>Abre la migraci\u00f3n reci\u00e9n creada encontrada <code>database\/migrations\/xxx-create-articles-xxx.php<\/code> y pega el siguiente c\u00f3digo:<\/p>\n<pre><code class=\"language-php\">&lt;?php\nuse Illuminate\\Support\\Facades\\Schema;\nuse Illuminate\\Database\\Schema\\Blueprint;\nuse Illuminate\\Database\\Migrations\\Migration;\nclass CreateArticlesTable extends Migration\n{\n    \/**\n     * Run the migrations.\n     *\n     * @return void\n     *\/\n    public function up()\n    {\n        Schema::create('articles', function (Blueprint $table) {\n            $table-&gt;id();\n            $table-&gt;string('title');\n            $table-&gt;text('description');\n            $table-&gt;timestamps();\n        });\n    }\n    \/**\n     * Reverse the migrations.\n     *\n     * @return void\n     *\/\n    public function down()\n    {\n        Schema::dropIfExists('articles');\n    }\n}<\/code><\/pre>\n<p>A continuaci\u00f3n, ejecuta el siguiente comando para crear una nueva seeder:<\/p>\n<pre><code class=\"language-bash\">php artisan make:seeder ArticleSeeder<\/code><\/pre>\n<p>Abre el archivo de la seeder\u00a0reci\u00e9n creada que se encuentra en <code>database\/seeders\/ArticleSeeder.php<\/code> y pega el siguiente c\u00f3digo:<\/p>\n<pre><code class=\"language-php\">&lt;?php\nnamespace Database\\Seeders;\nuse App\\Models\\Article;\nuse Illuminate\\Database\\Seeder;\nclass ArticleSeeder extends Seeder\n{\n    \/**\n     * Run the database seeds.\n     *\n     * @return void\n     *\/\n    public function run()\n    {\n        Article::factory()-&gt;count(500)-&gt;create();\n    }\n}<\/code><\/pre>\n<p>Abre el archivo <strong>DatabaseSeeder.php <\/strong>en el mismo directorio y a\u00f1ade el siguiente c\u00f3digo:<\/p>\n<pre><code class=\"language-php\">&lt;?php\nnamespace Database\\Seeders;\nuse Illuminate\\Database\\Seeder;\nclass DatabaseSeeder extends Seeder\n{\n    \/**\n     * Seed the application's database.\n     *\n     * @return void\n     *\/\n    public function run()\n    {\n        $this-&gt;call(ArticleSeeder::class);\n    }\n}<\/code><\/pre>\n<p>A continuaci\u00f3n, ejecuta el siguiente comando para crear una nueva factory:<\/p>\n<pre><code class=\"language-bash\">php artisan make:factory ArticleFactory<\/code><\/pre>\n<p>Abre el archivo de factory reci\u00e9n construido que se encuentra en <code>database\/factories\/ArticleFactory.php<\/code> y pegue el siguiente c\u00f3digo:<\/p>\n<pre><code class=\"language-php\">&lt;?php\nnamespace Database\\Factories;\nuse App\\Models\\Article;\nuse Illuminate\\Database\\Eloquent\\Factories\\Factory;\nclass ArticleFactory extends Factory\n{\n    \/**\n     * The name of the factory's corresponding model.\n     *\n     * @var string\n     *\/\n    protected $model = Article::class;\n    \/**\n     * Define the model's default state.\n     *\n     * @return array\n     *\/\n    public function definition()\n    {\n        return [\n            'title' =&gt; $this-&gt;faker-&gt;text(),\n            'description' =&gt; $this-&gt;faker-&gt;paragraph(20)\n        ];\n    }\n}<\/code><\/pre>\n<p>Ahora, ejecuta el siguiente comando para migrar nuestro esquema reci\u00e9n creado y tambi\u00e9n seed nuestros datos falsos para las pruebas:<\/p>\n<pre><code class=\"language-bash\">php artisan migrate --seed<\/code><\/pre>\n<h3>Creaci\u00f3n del controlador de art\u00edculos<\/h3>\n<p>A continuaci\u00f3n, crearemos nuestro controlador y configuraremos nuestras rutas para manejar nuestra solicitud y recuperar los datos utilizando el modelo anterior.<\/p>\n<p>Ejecute el siguiente comando para crear un nuevo <strong>ArticlesController <\/strong>dentro de la carpeta <code>app\/Http\/Controllers<\/code>:<\/p>\n<pre><code class=\"language-bash\">php artisan make:controller ArticlesController --resource<\/code><\/pre>\n<p>Abre el archivo y a\u00f1ade el siguiente c\u00f3digo a la clase:<\/p>\n<pre><code class=\"language-php\">\/\/ Returns all 500 articles with Caching\npublic function index() {\n  return Cache::remember('articles', 60, function () {\n      return Article::all();\n  });\n}\n\n\/\/ Returns all 500 without Caching \npublic function allWithoutCache() {\n  return Article::all();\n}<\/code><\/pre>\n<p>Despu\u00e9s de eso, abre el archivo <strong>api.php <\/strong>que se encuentra dentro de la carpeta <code>routes\/<\/code> y pega el siguiente c\u00f3digo para crear un endpoint al que podamos llamar para recuperar nuestros datos:<\/p>\n<pre><code class=\"language-php\">Route::get('\/articles', 'ArticlesController@index');\n\nRoute::get('\/articles\/withoutcache', 'ArticlesController@allWithoutcache');<\/code><\/pre>\n<h3>Comprobaci\u00f3n del rendimiento<\/h3>\n<p>Por \u00faltimo, <a href=\"https:\/\/kinsta.com\/es\/blog\/monitoreo-rendimiento-aplicaciones\/\">probaremos el rendimiento<\/a> de la respuesta de nuestra app con o sin la implementaci\u00f3n de la cach\u00e9 de Laravel.<\/p>\n<p>Esta captura de pantalla muestra el tiempo de respuesta de la API con la cach\u00e9 implementada:<\/p>\n<figure id=\"attachment_99464\" aria-describedby=\"caption-attachment-99464\" style=\"width: 1024px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/kinsta.com\/wp-content\/uploads\/2021\/07\/laravel-api-response-time-cache.png\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-99464 size-large\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2021\/07\/laravel-api-response-time-cache-1024x583.png\" alt=\"Tiempo de respuesta de la API de Laravel con cach\u00e9.\" width=\"1024\" height=\"583\"><\/a><figcaption id=\"caption-attachment-99464\" class=\"wp-caption-text\">Tiempo de respuesta de la API de Laravel con cach\u00e9.<\/figcaption><\/figure>\n<p>La siguiente captura de pantalla muestra el tiempo de respuesta de la API sin la cach\u00e9 implementada &#8211; n\u00f3tese que el tiempo de respuesta ha aumentado con respecto a la instancia en cach\u00e9 en m\u00e1s de <strong>un 5.000%<\/strong>:<\/p>\n<figure id=\"attachment_99465\" aria-describedby=\"caption-attachment-99465\" style=\"width: 1024px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/kinsta.com\/wp-content\/uploads\/2021\/07\/laravel-api-response-time-no-cache.png\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-99465 size-large\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2021\/07\/laravel-api-response-time-no-cache-1024x584.png\" alt=\"Tiempo de respuesta de la API de Laravel sin cach\u00e9.\" width=\"1024\" height=\"584\"><\/a><figcaption id=\"caption-attachment-99465\" class=\"wp-caption-text\">Tiempo de respuesta de la API de Laravel sin cach\u00e9.<\/figcaption><\/figure>\n\n<h2>Resumen<\/h2>\n<p>Hemos explorado varias estrategias para implementar y manipular el almacenamiento en cach\u00e9 de Laravel construyendo un nuevo proyecto, evaluando sus respuestas y comparando los resultados.<\/p>\n<p>Tambi\u00e9n has aprendido a utilizar los diferentes controladores y m\u00e9todos de cach\u00e9 de Laravel. Adem\u00e1s, hemos implementado diferentes estrategias de almacenamiento en cach\u00e9 para ayudarte a averiguar cu\u00e1l puede ser la adecuada para ti.<\/p>\n<p>Para saber m\u00e1s sobre Laravel, explora nuestra selecci\u00f3n de <a href=\"https:\/\/kinsta.com\/es\/blog\/tutoriales-laravel\/\">los mejores tutoriales de Laravel<\/a>. Tanto si eres un principiante como un desarrollador avanzado de Laravel, \u00a1hay algo para todos!<\/p>\n<p><em>Si todav\u00eda tienes preguntas sobre el almacenamiento en cach\u00e9 de Laravel, por favor h\u00e1znoslo saber en la secci\u00f3n de comentarios.<\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>El almacenamiento en cach\u00e9 es esencial para lograr un alto rendimiento y escalabilidad. Implementar la estrategia adecuada de almacenamiento en cach\u00e9 desde la fase de desarrollo &#8230;<\/p>\n","protected":false},"author":193,"featured_media":43473,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_kinsta_gated_content":false,"_kinsta_gated_content_redirect":"","footnotes":""},"tags":[766,432],"topic":[1315,1303],"class_list":["post-43470","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","tag-laravel","tag-php","topic-frameworks-php","topic-laravel"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v24.6 (Yoast SEO v24.6) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Todo lo que Necesitas Saber Sobre la Cach\u00e9 de Laravel<\/title>\n<meta name=\"description\" content=\"Aprende a aumentar el rendimiento y la escalabilidad del software implementando y manipulando la estrategia correcta de almacenamiento en cach\u00e9 en Laravel.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/kinsta.com\/es\/blog\/laravel-caching\/\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Todo lo que Necesitas Saber Sobre la Cach\u00e9 de Laravel\" \/>\n<meta property=\"og:description\" content=\"Aprende a aumentar el rendimiento y la escalabilidad del software implementando y manipulando la estrategia correcta de almacenamiento en cach\u00e9 en Laravel.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/kinsta.com\/es\/blog\/laravel-caching\/\" \/>\n<meta property=\"og:site_name\" content=\"Kinsta\u00ae\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/kinsta.es\/\" \/>\n<meta property=\"article:published_time\" content=\"2021-09-16T09:14:53+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-02-07T14:12:23+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2021\/08\/laravel-caching.jpeg\" \/>\n\t<meta property=\"og:image:width\" content=\"1460\" \/>\n\t<meta property=\"og:image:height\" content=\"730\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Solomon Eseme\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:description\" content=\"Aprende a aumentar el rendimiento y la escalabilidad del software implementando y manipulando la estrategia correcta de almacenamiento en cach\u00e9 en Laravel.\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2021\/08\/laravel-caching.jpeg\" \/>\n<meta name=\"twitter:creator\" content=\"@kaperskyguru\" \/>\n<meta name=\"twitter:site\" content=\"@Kinsta_ES\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Solomon Eseme\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tiempo de lectura\" \/>\n\t<meta name=\"twitter:data2\" content=\"18 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/kinsta.com\/es\/blog\/laravel-caching\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/es\/blog\/laravel-caching\/\"},\"author\":{\"name\":\"Solomon Eseme\",\"@id\":\"https:\/\/kinsta.com\/es\/#\/schema\/person\/51c9c77fa35cf1ef9a46308358441ab2\"},\"headline\":\"Todo lo que Necesitas Saber Sobre la Cach\u00e9 de Laravel\",\"datePublished\":\"2021-09-16T09:14:53+00:00\",\"dateModified\":\"2025-02-07T14:12:23+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/kinsta.com\/es\/blog\/laravel-caching\/\"},\"wordCount\":3491,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/es\/#organization\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/es\/blog\/laravel-caching\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2021\/08\/laravel-caching.jpeg\",\"keywords\":[\"laravel\",\"php\"],\"articleSection\":[\"Sin Categor\u00eda\"],\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/kinsta.com\/es\/blog\/laravel-caching\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/kinsta.com\/es\/blog\/laravel-caching\/\",\"url\":\"https:\/\/kinsta.com\/es\/blog\/laravel-caching\/\",\"name\":\"Todo lo que Necesitas Saber Sobre la Cach\u00e9 de Laravel\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/es\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/kinsta.com\/es\/blog\/laravel-caching\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/es\/blog\/laravel-caching\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2021\/08\/laravel-caching.jpeg\",\"datePublished\":\"2021-09-16T09:14:53+00:00\",\"dateModified\":\"2025-02-07T14:12:23+00:00\",\"description\":\"Aprende a aumentar el rendimiento y la escalabilidad del software implementando y manipulando la estrategia correcta de almacenamiento en cach\u00e9 en Laravel.\",\"breadcrumb\":{\"@id\":\"https:\/\/kinsta.com\/es\/blog\/laravel-caching\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/kinsta.com\/es\/blog\/laravel-caching\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/kinsta.com\/es\/blog\/laravel-caching\/#primaryimage\",\"url\":\"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2021\/08\/laravel-caching.jpeg\",\"contentUrl\":\"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2021\/08\/laravel-caching.jpeg\",\"width\":1460,\"height\":730,\"caption\":\"Todo lo que necesita saber sobre el cach\u00e9 de Laravel\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/kinsta.com\/es\/blog\/laravel-caching\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/kinsta.com\/es\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Laravel\",\"item\":\"https:\/\/kinsta.com\/es\/secciones\/laravel\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Todo lo que Necesitas Saber Sobre la Cach\u00e9 de Laravel\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/kinsta.com\/es\/#website\",\"url\":\"https:\/\/kinsta.com\/es\/\",\"name\":\"Kinsta\u00ae\",\"description\":\"Soluciones de alojamiento premium, r\u00e1pidas y seguras\",\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/es\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/kinsta.com\/es\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/kinsta.com\/es\/#organization\",\"name\":\"Kinsta\",\"url\":\"https:\/\/kinsta.com\/es\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/kinsta.com\/es\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2023\/12\/kinsta-logo.jpeg\",\"contentUrl\":\"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2023\/12\/kinsta-logo.jpeg\",\"width\":500,\"height\":500,\"caption\":\"Kinsta\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/es\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/kinsta.es\/\",\"https:\/\/x.com\/Kinsta_ES\",\"https:\/\/www.instagram.com\/kinstahosting\/\",\"https:\/\/www.linkedin.com\/company\/kinsta\/\",\"https:\/\/www.pinterest.com\/kinstahosting\/\",\"https:\/\/www.youtube.com\/c\/Kinsta\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/kinsta.com\/es\/#\/schema\/person\/51c9c77fa35cf1ef9a46308358441ab2\",\"name\":\"Solomon Eseme\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/kinsta.com\/es\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/1c701993f8ff8c8df2a4c5664834a4e5?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/1c701993f8ff8c8df2a4c5664834a4e5?s=96&d=mm&r=g\",\"caption\":\"Solomon Eseme\"},\"description\":\"I am a Software Engineer and Content Creator who is geared toward building high-performing and innovative products following best practices and industry standards. I also love writing about it at Masteringbackend.com. Follow me on Twitter, LinkedIn, and About Me\",\"sameAs\":[\"https:\/\/masteringbackend.com\",\"https:\/\/linkedin.com\/in\/solomoneseme\",\"https:\/\/x.com\/kaperskyguru\"],\"url\":\"https:\/\/kinsta.com\/es\/blog\/author\/solomoneseme\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Todo lo que Necesitas Saber Sobre la Cach\u00e9 de Laravel","description":"Aprende a aumentar el rendimiento y la escalabilidad del software implementando y manipulando la estrategia correcta de almacenamiento en cach\u00e9 en Laravel.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/kinsta.com\/es\/blog\/laravel-caching\/","og_locale":"es_ES","og_type":"article","og_title":"Todo lo que Necesitas Saber Sobre la Cach\u00e9 de Laravel","og_description":"Aprende a aumentar el rendimiento y la escalabilidad del software implementando y manipulando la estrategia correcta de almacenamiento en cach\u00e9 en Laravel.","og_url":"https:\/\/kinsta.com\/es\/blog\/laravel-caching\/","og_site_name":"Kinsta\u00ae","article_publisher":"https:\/\/www.facebook.com\/kinsta.es\/","article_published_time":"2021-09-16T09:14:53+00:00","article_modified_time":"2025-02-07T14:12:23+00:00","og_image":[{"width":1460,"height":730,"url":"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2021\/08\/laravel-caching.jpeg","type":"image\/jpeg"}],"author":"Solomon Eseme","twitter_card":"summary_large_image","twitter_description":"Aprende a aumentar el rendimiento y la escalabilidad del software implementando y manipulando la estrategia correcta de almacenamiento en cach\u00e9 en Laravel.","twitter_image":"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2021\/08\/laravel-caching.jpeg","twitter_creator":"@kaperskyguru","twitter_site":"@Kinsta_ES","twitter_misc":{"Escrito por":"Solomon Eseme","Tiempo de lectura":"18 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/kinsta.com\/es\/blog\/laravel-caching\/#article","isPartOf":{"@id":"https:\/\/kinsta.com\/es\/blog\/laravel-caching\/"},"author":{"name":"Solomon Eseme","@id":"https:\/\/kinsta.com\/es\/#\/schema\/person\/51c9c77fa35cf1ef9a46308358441ab2"},"headline":"Todo lo que Necesitas Saber Sobre la Cach\u00e9 de Laravel","datePublished":"2021-09-16T09:14:53+00:00","dateModified":"2025-02-07T14:12:23+00:00","mainEntityOfPage":{"@id":"https:\/\/kinsta.com\/es\/blog\/laravel-caching\/"},"wordCount":3491,"commentCount":0,"publisher":{"@id":"https:\/\/kinsta.com\/es\/#organization"},"image":{"@id":"https:\/\/kinsta.com\/es\/blog\/laravel-caching\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2021\/08\/laravel-caching.jpeg","keywords":["laravel","php"],"articleSection":["Sin Categor\u00eda"],"inLanguage":"es","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/kinsta.com\/es\/blog\/laravel-caching\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/kinsta.com\/es\/blog\/laravel-caching\/","url":"https:\/\/kinsta.com\/es\/blog\/laravel-caching\/","name":"Todo lo que Necesitas Saber Sobre la Cach\u00e9 de Laravel","isPartOf":{"@id":"https:\/\/kinsta.com\/es\/#website"},"primaryImageOfPage":{"@id":"https:\/\/kinsta.com\/es\/blog\/laravel-caching\/#primaryimage"},"image":{"@id":"https:\/\/kinsta.com\/es\/blog\/laravel-caching\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2021\/08\/laravel-caching.jpeg","datePublished":"2021-09-16T09:14:53+00:00","dateModified":"2025-02-07T14:12:23+00:00","description":"Aprende a aumentar el rendimiento y la escalabilidad del software implementando y manipulando la estrategia correcta de almacenamiento en cach\u00e9 en Laravel.","breadcrumb":{"@id":"https:\/\/kinsta.com\/es\/blog\/laravel-caching\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/kinsta.com\/es\/blog\/laravel-caching\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/kinsta.com\/es\/blog\/laravel-caching\/#primaryimage","url":"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2021\/08\/laravel-caching.jpeg","contentUrl":"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2021\/08\/laravel-caching.jpeg","width":1460,"height":730,"caption":"Todo lo que necesita saber sobre el cach\u00e9 de Laravel"},{"@type":"BreadcrumbList","@id":"https:\/\/kinsta.com\/es\/blog\/laravel-caching\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/kinsta.com\/es\/"},{"@type":"ListItem","position":2,"name":"Laravel","item":"https:\/\/kinsta.com\/es\/secciones\/laravel\/"},{"@type":"ListItem","position":3,"name":"Todo lo que Necesitas Saber Sobre la Cach\u00e9 de Laravel"}]},{"@type":"WebSite","@id":"https:\/\/kinsta.com\/es\/#website","url":"https:\/\/kinsta.com\/es\/","name":"Kinsta\u00ae","description":"Soluciones de alojamiento premium, r\u00e1pidas y seguras","publisher":{"@id":"https:\/\/kinsta.com\/es\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/kinsta.com\/es\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"},{"@type":"Organization","@id":"https:\/\/kinsta.com\/es\/#organization","name":"Kinsta","url":"https:\/\/kinsta.com\/es\/","logo":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/kinsta.com\/es\/#\/schema\/logo\/image\/","url":"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2023\/12\/kinsta-logo.jpeg","contentUrl":"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2023\/12\/kinsta-logo.jpeg","width":500,"height":500,"caption":"Kinsta"},"image":{"@id":"https:\/\/kinsta.com\/es\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/kinsta.es\/","https:\/\/x.com\/Kinsta_ES","https:\/\/www.instagram.com\/kinstahosting\/","https:\/\/www.linkedin.com\/company\/kinsta\/","https:\/\/www.pinterest.com\/kinstahosting\/","https:\/\/www.youtube.com\/c\/Kinsta"]},{"@type":"Person","@id":"https:\/\/kinsta.com\/es\/#\/schema\/person\/51c9c77fa35cf1ef9a46308358441ab2","name":"Solomon Eseme","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/kinsta.com\/es\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/1c701993f8ff8c8df2a4c5664834a4e5?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/1c701993f8ff8c8df2a4c5664834a4e5?s=96&d=mm&r=g","caption":"Solomon Eseme"},"description":"I am a Software Engineer and Content Creator who is geared toward building high-performing and innovative products following best practices and industry standards. I also love writing about it at Masteringbackend.com. Follow me on Twitter, LinkedIn, and About Me","sameAs":["https:\/\/masteringbackend.com","https:\/\/linkedin.com\/in\/solomoneseme","https:\/\/x.com\/kaperskyguru"],"url":"https:\/\/kinsta.com\/es\/blog\/author\/solomoneseme\/"}]}},"acf":[],"_links":{"self":[{"href":"https:\/\/kinsta.com\/es\/wp-json\/wp\/v2\/posts\/43470","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kinsta.com\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kinsta.com\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kinsta.com\/es\/wp-json\/wp\/v2\/users\/193"}],"replies":[{"embeddable":true,"href":"https:\/\/kinsta.com\/es\/wp-json\/wp\/v2\/comments?post=43470"}],"version-history":[{"count":13,"href":"https:\/\/kinsta.com\/es\/wp-json\/wp\/v2\/posts\/43470\/revisions"}],"predecessor-version":[{"id":50328,"href":"https:\/\/kinsta.com\/es\/wp-json\/wp\/v2\/posts\/43470\/revisions\/50328"}],"alternate":[{"embeddable":true,"hreflang":"en","title":"English","href":"https:\/\/kinsta.com\/es\/wp-json\/kinsta\/v1\/posts\/43470\/translations\/en"},{"embeddable":true,"hreflang":"fr","title":"French","href":"https:\/\/kinsta.com\/es\/wp-json\/kinsta\/v1\/posts\/43470\/translations\/fr"},{"embeddable":true,"hreflang":"it","title":"Italian","href":"https:\/\/kinsta.com\/es\/wp-json\/kinsta\/v1\/posts\/43470\/translations\/it"},{"embeddable":true,"hreflang":"es","title":"Spanish","href":"https:\/\/kinsta.com\/es\/wp-json\/kinsta\/v1\/posts\/43470\/translations\/es"},{"embeddable":true,"hreflang":"pt","title":"Portuguese","href":"https:\/\/kinsta.com\/es\/wp-json\/kinsta\/v1\/posts\/43470\/translations\/pt"},{"embeddable":true,"hreflang":"de","title":"German","href":"https:\/\/kinsta.com\/es\/wp-json\/kinsta\/v1\/posts\/43470\/translations\/de"},{"embeddable":true,"hreflang":"nl","title":"Dutch","href":"https:\/\/kinsta.com\/es\/wp-json\/kinsta\/v1\/posts\/43470\/translations\/nl"},{"embeddable":true,"hreflang":"sv","title":"Swedish","href":"https:\/\/kinsta.com\/es\/wp-json\/kinsta\/v1\/posts\/43470\/translations\/se"},{"href":"https:\/\/kinsta.com\/es\/wp-json\/kinsta\/v1\/posts\/43470\/tree"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kinsta.com\/es\/wp-json\/wp\/v2\/media\/43473"}],"wp:attachment":[{"href":"https:\/\/kinsta.com\/es\/wp-json\/wp\/v2\/media?parent=43470"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kinsta.com\/es\/wp-json\/wp\/v2\/tags?post=43470"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/kinsta.com\/es\/wp-json\/wp\/v2\/topic?post=43470"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}