{"id":47214,"date":"2021-08-30T15:08:12","date_gmt":"2021-08-30T13:08:12","guid":{"rendered":"https:\/\/kinsta.com\/?p=98920"},"modified":"2023-02-01T14:42:42","modified_gmt":"2023-02-01T13:42:42","slug":"caching-laravel","status":"publish","type":"post","link":"https:\/\/kinsta.com\/it\/blog\/caching-laravel\/","title":{"rendered":"Tutto Quello Che C&#8217;\u00c8 da Sapere sul Caching di Laravel"},"content":{"rendered":"<p>Il caching \u00e8 essenziale per ottenere alte prestazioni e scalabilit\u00e0. Implementare la corretta <a href=\"https:\/\/kinsta.com\/it\/blog\/cos-e-la-cache\/\">strategia di caching<\/a> fin dalla fase di sviluppo \u00e8 fondamentale per evitare ritardo nelle API e lentezza nei <a href=\"https:\/\/kinsta.com\/it\/blog\/plugin-cache-wordpress\/\">tempi di caricamento delle pagine<\/a>. Laravel \u00e8 uno dei framework PHP pi\u00f9 popolari, quindi un\u2019implementazione della strategia di caching Laravel ottimale \u00e8 indispensabile per una migliore esperienza utente e un maggiore impatto sul business.<\/p>\n<p>In questo articolo, esploreremo le strategie per implementare e manipolare il caching in Laravel: imparerete come funziona, quali sono le query di caching in Laravel e come gestire il caching nelle applicazioni Laravel.<\/p>\n<p>Questo articolo vi sar\u00e0 ancora pi\u00f9 utile se avete gi\u00e0 una conoscenza di base di questi temi:<\/p>\n<ul>\n<li>Buona conoscenza dello <a href=\"https:\/\/kinsta.com\/it\/blog\/strumenti-sviluppo-web\/\">sviluppo web<\/a>.<\/li>\n<li><a href=\"https:\/\/kinsta.com\/it\/blog\/framework-laravel\/\">Comprensione di base di Laravel<\/a>.<\/li>\n<li>Costruire <a href=\"https:\/\/masteringbackend.com\/posts\/laravel-framework-the-ultimate-guide\">API con Laravel<\/a>.<\/li>\n<li><a href=\"https:\/\/kinsta.com\/it\/docs\/hosting-wordpress\/cache\/cache-del-sito\/#site-cache-expiration\">Comprensione di base del caching<\/a>.<\/li>\n<\/ul>\n<p>Iniziamo!<\/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>Guardate la nostra <a href=\"https:\/\/www.youtube.com\/watch?v=6eJMRMgn6mI\">video guida<\/a> alla cache di Laravel<\/h3>\n<p class=\"p1\"><kinsta-video src=\"https:\/\/www.youtube.com\/watch?v=6eJMRMgn6mI\"><\/kinsta-video><\/p>\n<h2>Perch\u00e9 la Cache \u00c8 Importante?<\/h2>\n<p>Con il boom dei business internet, le statistiche di diverse aziende mostrano come il tempo di caricamento del sito web e le basse prestazioni possono avere un impatto pesante sulla SEO, l&#8217;impegno degli utenti e i tassi di conversione. E questi risultati iniziano con un&#8217;eccellente strategia di caching.<\/p>\n<p>Uno <a href=\"https:\/\/kinsta.com\/it\/impara\/velocita-pagina\/#slow-how-slow\">studio online ha scoperto<\/a> che &#8220;1 secondo di ritardo nel caricamento costerebbe ad Amazon 1,6 miliardi di dollari di vendite all&#8217;anno&#8221;.<\/p>\n<p>Un altro <a href=\"https:\/\/www.thinkwithgoogle.com\/future-of-marketing\/digital-transformation\/the-google-gospel-of-speed-urs-hoelzle\/\">studio di Google ha riportato<\/a>: &#8220;La nostra ricerca mostra che se i risultati di ricerca sono rallentati anche di una frazione di secondo, la gente fa meno ricerche (sul serio: un <strong>ritardo di 400ms<\/strong> porta a un <strong>calo dello 0,44%<\/strong> del volume di ricerca). E questa impazienza non \u00e8 solo limitata alla ricerca: quattro utenti di internet su cinque fanno clic se un video si blocca durante il caricamento&#8221;.<\/p>\n<p>Un leggero ritardo nel tempo di caricamento della vostro pagina web pu\u00f2 avere un impatto massiccio sull&#8217;esperienza dei vostri utenti e sulla perdita di fondi a lungo termine.<\/p>\n<h2>Cos&#8217;\u00c8 la Cache di Laravel?<\/h2>\n<p>Laravel fornisce un&#8217;implementazione per il caching robusta e facile da usare, nonch\u00e9 diversi backend di caching. Con Laravel cache, potete passare in modo efficiente ed efficace tra molti motori di caching senza bisogno di scrivere codice.<\/p>\n<p>Potete trovare la configurazione della cache di Laravel all&#8217;interno della cartella <code><strong>config\/cache.php<\/strong><\/code>, anche se probabilmente avrete bisogno solo del file <strong>.env<\/strong> per passare tra diversi backend di cache.<\/p>\n<p>Laravel cache fornisce anche molti metodi pratici che possiamo usare per implementare diverse strategie di caching.<\/p>\n\n<h3>Driver della Cache di Laravel e Confronti<\/h3>\n<p>Laravel cache fornisce ottimi backend e driver di caching. A seconda del vostro caso d&#8217;uso, potete passare da uno all&#8217;altro per migliorare le prestazioni dell&#8217;applicazione e il tempo di caricamento.<\/p>\n<p>Detto questo, Laravel cache fornisce anche un modo efficace per creare un backend personalizzato e usarlo con Laravel cache, ma solo se l&#8217;elenco qui sotto non rientra tra i vostri casi d\u2019uso.<\/p>\n<p>In seguito parleremo di tutti i backend forniti da Laravel cache.<\/p>\n<h4>1. File<\/h4>\n<p>Il driver <strong>file<\/strong> \u00e8 il backend predefinito usato dalla cache di Laravel quando nessun driver \u00e8 specificato nel file <strong>.env.<\/strong><\/p>\n<p>Il backend <strong>file<\/strong> \u00e8 progettato per memorizzare i dati in cache in un file criptato che si trova sotto <code><strong>storage\/framework\/<\/strong><\/code>. Laravel crea un file criptato con i dati e la chiave della cache quando vengono memorizzati nuovi dati. Lo stesso accade quando l&#8217;utente cerca di recuperare il contenuto. Laravel cache cerca nella cartella la chiave specificata e, se la trova, restituisce il contenuto.<\/p>\n<p>Il backend <strong>file<\/strong> funziona perfettamente e fa risparmiare tempo nell&#8217;installazione e nella configurazione di driver esterni, ma pu\u00f2 funzionare molto bene <a href=\"https:\/\/kinsta.com\/developer-roles\/development-at-kinsta\/\">anche per lo sviluppo<\/a>. \u00c8 pi\u00f9 veloce che accedere direttamente ai dati dal server del database.<\/p>\n<p>Per usare il driver <strong>file<\/strong>, aggiungete il seguente codice al vostro file <strong>.env<\/strong>:<\/p>\n<pre><code class=\"language-markdown\">CACHE_DRIVER=file<\/code><\/pre>\n<h4>2. Array<\/h4>\n<p>Il driver <strong>array<\/strong> \u00e8 un backend di caching perfetto per l&#8217;esecuzione di test automatizzati e si configura facilmente con Github Actions, Jenkins, ecc.<\/p>\n<p>Il backend <strong>array<\/strong> memorizza i dati in cache in un array in PHP e non richiede l&#8217;installazione o la configurazione di nessun driver. Funziona perfettamente per i test automatici ed \u00e8 un po&#8217; pi\u00f9 veloce del backend della cache dei file.<\/p>\n<p>Per usare il driver <strong>array<\/strong>, aggiungete il seguente codice al vostro file <strong>.env<\/strong>:<\/p>\n<pre><code class=\"language-markdown\">CACHE_DRIVER=array<\/code><\/pre>\n<h4>3. Database<\/h4>\n<p>Quando usate il driver <strong>database<\/strong>, i dati sono salvati in memoria per il processo PHP corrente. Pertanto, \u00e8 necessario creare una tabella di database per memorizzare i dati in cache. Inoltre, la cache del <a href=\"https:\/\/kinsta.com\/it\/blog\/database-wordpress\/\">database<\/a> migliora la scalabilit\u00e0 distribuendo il carico di lavoro delle query dal backend a pi\u00f9 frontend.<\/p>\n<p>Potete eseguire questo comando Artisan &#8211; <code>php artisan cache:table<\/code> &#8211; per generare automaticamente lo schema del database necessario al driver del database.<\/p>\n<p>Il driver <strong>database<\/strong> si usa soprattutto in situazioni in cui \u00e8 possibile installare qualsiasi software sulla piattaforma di hosting.<\/p>\n<p>Per esempio, diciamo che state usando un piano di hosting gratuito con opzioni limitate. Per questo, vi suggeriamo di attenervi al driver <strong>file<\/strong> perch\u00e9 il driver <strong>database<\/strong> \u00e8, nella maggior parte dei casi, il punto pi\u00f9 debole della vostra applicazione, e cercare di spingere pi\u00f9 dati in quel collo di bottiglia non \u00e8 una buona idea.<\/p>\n<p>Per usare il driver <strong>database<\/strong>, aggiungete il seguente codice al vostro file <strong>.env<\/strong>:<\/p>\n<pre><code class=\"language-markdown\">CACHE_DRIVER=database<\/code><\/pre>\n<h4>4. Redis<\/h4>\n<p>Il driver <strong>redis<\/strong> usa la tecnologia di cache basata sulla memoria chiamata <a href=\"https:\/\/kinsta.com\/it\/docs\/hosting-wordpress\/cache\/cache-redis\/\">Redis<\/a>. Anche se \u00e8 veloce rispetto agli altri driver di cache discussi sopra, richiede l&#8217;installazione e la configurazione di una tecnologia esterna.<\/p>\n<p>Per usare il driver <strong>redis<\/strong>, aggiungete il seguente codice al vostro file <strong>.env<\/strong>:<\/p>\n<pre><code class=\"language-markdown\">CACHE_DRIVER=redis<\/code><\/pre>\n<h4>5. Memcached<\/h4>\n<p>Memcached \u00e8 noto per essere il pi\u00f9 popolare in-memory-based cache-store. Se non vi dispiace fare un po&#8217; di manutenzione extra del server (dover installare e mantenere servizi aggiuntivi), i driver di cache basati sulla memoria Memcached sono ottime opzioni.<\/p>\n<p>L&#8217;utilizzo del driver <strong>memcached<\/strong> richiede l&#8217;installazione del <a href=\"https:\/\/pecl.php.net\/package\/memcached\">pacchetto Memcached PECL<\/a>.<\/p>\n<p>Per usare il driver <strong>memcached<\/strong>, aggiungete il seguente codice al vostro file <strong>.env<\/strong>:<\/p>\n<pre><code class=\"language-markdown\">CACHE_DRIVER=memcached <\/code><\/pre>\n<p>Il <a href=\"https:\/\/www.georgebuckingham.com\/laravel-cache-driver-performance\/\">miglior driver di cache da usare e le prestazioni<\/a> del driver di cache dipendono dal vostro progetto e dalla quantit\u00e0 di dati da recuperare.<\/p>\n<h3>Uso e Metodi della Cache di Laravel<\/h3>\n<p>Laravel cache fornisce molti metodi preziosi usati per implementare molte strategie di caching.<\/p>\n<p>Di seguito elencheremo e spiegheremo i diversi metodi (classificati in base al loro caso d&#8217;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>Memorizzazione della Cache<\/h4>\n<p>Memorizzare nuovi dati nella cache \u00e8 molto semplice con i diversi metodi, ognuno dedicato a specifici casi d&#8217;uso.<\/p>\n<h5>1. Cache::put()<\/h5>\n<p>Questo metodo accetta tre parametri chiave: <strong>key<\/strong>, la <strong>durata (duration)<\/strong> e i <strong>dati (data)<\/strong> da mettere in cache.<\/p>\n<p>Diamo un&#8217;occhiata a come usare <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>Il codice qui sopra metter\u00e0 in cache il post con <strong>key<\/strong> unica per 20 secondi.<\/p>\n<h5>2. Cache::putMany()<\/h5>\n<p>Questo metodo memorizza un array di dati nella cache in una volta sola con la stessa durata. Accetta due parametri che sono <strong>data<\/strong> e <strong>seconds<\/strong>.<\/p>\n<p>Diamo un&#8217;occhiata a come usare <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>Questo \u00e8 un altro modo eccellente per implementare la strategia cache Aside. Il metodo <code><strong>Cache::remember()<\/strong><\/code> accetta tre parametri, una <strong>chiave (key)<\/strong>, i <strong>secondi (seconds)<\/strong> e la <strong>chiusura (closure)<\/strong> usata per recuperare i dati dal database se non vengono trovati.<\/p>\n<p>Vediamo come usare <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 cache di Laravel include anche il metodo <code><strong>Cache::rememberForever()<\/strong><\/code>, che non accetta il parametro <strong>seconds<\/strong> e memorizza i <strong>dati (data)<\/strong> per sempre.<\/p>\n<h5>4. Cache::forever()<\/h5>\n<p>Questo metodo memorizza i dati nel server di cache per sempre senza specificare alcuna durata. Potete implementarlo con il seguente codice:<\/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>Recuperare i Dati della Cache<\/h4>\n<p>I metodi di questa categoria recuperano dati dalla cache. Alcuni di questi metodi possono comportarsi diversamente a seconda che i dati vengano trovati o meno.<\/p>\n<h5>1. Cache::get()<\/h5>\n<p>Questo metodo recupera i dati dal server della cache con una chiave specifica. \u00c8 possibile recuperare un elemento utilizzando il codice qui sotto:<\/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>Questo metodo \u00e8 simile a <code><strong>Cache::putMany()<\/strong><\/code>. Viene utilizzato per recuperare un array di dati in cache in una volta sola, utilizzando un array delle chiavi memorizzate in cache. \u00c8 possibile recuperare un array di cache usando il seguente codice:<\/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>Potete usare questo metodo per recuperare i dati memorizzati nella cache, controllando il server della cache con la chiave fornita. Se i dati sono memorizzati nella cache, verranno recuperati. Altrimenti, verranno recuperati i dati dal server di database per poi memorizzarli in cache.<\/p>\n<p>Questo metodo \u00e8 lo stesso del metodo <code><strong>Cache::rememberForever()<\/strong><\/code> ma include un ulteriore parametro <strong>seconds <\/strong> nel metodo <strong><code>Cache::remember()<\/code><\/strong>.<\/p>\n<h4>Rimozione di Elementi dalla Cache<\/h4>\n<p>I metodi di questa categoria sono usati per rimuovere elementi dalla cache e sono raggruppati per funzionalit\u00e0.<\/p>\n<h5>1. Cache::forget()<\/h5>\n<p>Questo metodo rimuove un singolo elemento dalla cache con un parametro chiave specificato:<\/p>\n<pre><code class=\"language-php\">Cache::forget('key');<\/code><\/pre>\n<h5>2. Cache::flush()<\/h5>\n<p>Questo metodo cancella tutti i motori di cache e tutti gli elementi memorizzati ovunque nella cache:<\/p>\n<pre><code class=\"language-php\">Cache::flush();<\/code><\/pre>\n<h4>Aumentare o Diminuire i Valori della Cache<\/h4>\n<p>Potete regolare i valori di un valore intero memorizzato nella vostra cache usando, rispettivamente, i metodi increment e decrement:<\/p>\n<pre><code class=\"language-php\">Cache::increment('key');\n\nCache::increment('key', $amount);\n\nCache::decrement('key');\n\nCache::decrement('key', $amount);\n<\/code><\/pre>\n<p>Laravel cache include molti altri ottimi metodi che non abbiamo discusso sopra, ma quelli visti finora sono i pi\u00f9 popolari. Per avere una panoramica di tutti i metodi, date un\u2019occhiata alla <a href=\"https:\/\/laravel.com\/docs\/8.x\/cache#cache-usage\">documentazione ufficiale della cache di Laravel<\/a>.<\/p>\n<h3>Spiegazione dei Comandi di Cache<\/h3>\n<p>Laravel fornisce dei comandi per rendere il lavoro con la cache di Laravel facile e veloce. Di seguito \u00e8 riportato l&#8217;elenco di tutti i <a href=\"https:\/\/kinsta.com\/it\/blog\/commandi-ssh\/\">comandi<\/a> e le loro funzionalit\u00e0.<\/p>\n<h4>Cancellare la Cache di Laravel<\/h4>\n<p>Questo comando serve a cancellare la cache di Laravel prima che scada usando il terminale o la console. Per esempio, potete eseguire il seguente comando:<\/p>\n<pre><code class=\"language-bash\">php artisan cache:clear<\/code><\/pre>\n<h4>Cancellare la Cache di Route<\/h4>\n<p>Questo comando si usa per cancellare la cache di route della vostra applicazione Laravel. Per esempio, eseguite il seguente comando per cancellare la cache di route:<\/p>\n<pre><code class=\"language-bash\">php artisan config:cache<\/code><\/pre>\n<h4>Cancellare i File di Visualizzazione Compilata<\/h4>\n<p>Questo comando \u00e8 usato per cancellare i file di visualizzazione compilata della vostra applicazione Laravel. Potete ottenerlo con il seguente comando:<\/p>\n<pre><code class=\"language-php\">php artisan view:clear<\/code><\/pre>\n<h4>Tabella del Database<\/h4>\n<p>Quando si usa il driver database, \u00e8 necessario creare uno schema di database chiamato <strong>cache<\/strong> per memorizzare i dati della cache. Potete anche usare il comando Artisan per generare una migrazione con lo schema appropriato:<\/p>\n<pre><code class=\"language-bash\">php artisan cache:table<\/code><\/pre>\n<h2>Strategie di Caching di Laravel<\/h2>\n<p>A seconda del caso d&#8217;uso dell&#8217;applicazione e della struttura dei dati, sono probabilmente disponibili diverse strategie di cache. Potete anche creare una strategia personalizzata per soddisfare le vostre esigenze. Ora vedremo l&#8217;elenco delle strategie di caching popolari che potete implementare nel vostro progetto Laravel.<\/p>\n<aside role=\"note\" class=\"wp-block-kinsta-notice is-style-info\">\n            <h3>Info<\/h3>\n        <p>Kinsta vi permette di usare Laravel per i vostri prodotti, anche se non \u00e8 ufficialmente supportato dal nostro team.<\/p>\n<\/aside>\n\n<h3>writeThrough<\/h3>\n<p>Nella strategia <strong>writeThrough<\/strong>, il server di cache si trova tra le richieste e il server di database, facendo passare ogni operazione di <strong>scrittura<\/strong> attraverso il server di cache prima di andare al server di database. Quindi, la strategia di caching <strong>writeThrough<\/strong> \u00e8 simile alla strategia <strong>readThrough<\/strong>.<\/p>\n<p>Potete usare il seguente codice per implementare questa strategia con la cache di Laravel:<\/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>Questa strategia \u00e8 un modo pi\u00f9 avanzato di implementare la strategia <strong>writeThrough<\/strong> aggiungendo ritardi nelle operazioni di scrittura.<\/p>\n<p>Si pu\u00f2 anche chiamare questa strategia <strong>writeBehind<\/strong> a causa del ritardo temporale applicato al server della cache prima che vengano scritti i dati al server di database.<\/p>\n<p>Potete usare il seguente codice per implementare questa strategia con la cache di Laravel:<\/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>Il metodo <strong>writeBack<\/strong> richiama il metodo <strong>writeThrough<\/strong>, che memorizza i dati sul server della cache e su un array temporaneo da spingere successivamente sul server di database tramite il metodo <strong>updateDatabaseServer<\/strong>. \u00c8 possibile impostare un <a href=\"https:\/\/masteringbackend.com\/posts\/laravel-cron-the-definitive-guide\">CronJob<\/a> per aggiornare il server di database ogni cinque minuti.<\/p>\n<h3>writeAround<\/h3>\n<p>Questa strategia permette a tutte le operazioni di <strong>scrittura<\/strong> di andare direttamente al server di database senza aggiornare il server di cache: solo durante le operazioni di lettura (<strong>read<\/strong>) il server di cache viene aggiornato.<\/p>\n<p>Supponiamo che un utente voglia creare un nuovo articolo (<strong>Article<\/strong>): <strong>Article<\/strong> viene memorizzato direttamente sul server di database. Quando l&#8217;utente vuole leggere il contenuto di <strong>Article<\/strong> per la prima volta, questo viene recuperato dal server di database e aggiorna il server di cache per le richieste successive.<\/p>\n<p>Potete implementare questa strategia con la cache di Laravel usando il seguente codice:<\/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>In questa strategia il database viene messo da parte e l&#8217;applicazione richiede prima i dati dal server di cache. Poi, se c&#8217;\u00e8 un hit (found), i dati vengono restituiti al client. Altrimenti, se c&#8217;\u00e8 un miss (not found), il server di database richiede i dati e aggiorna il server di cache per le richieste successive.<\/p>\n<p>Potete implementare questa strategia con la cache di Laravel tramite il seguente codice:<\/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>Il codice qui sopra mostra l&#8217;implementazione della cache Aside Strategy, che \u00e8 equivalente all&#8217;implementazione del metodo <strong>Cache::remember<\/strong>.<\/p>\n<h3>Read Through<\/h3>\n<p>Questa strategia \u00e8 il diretto opposto della strategia di cache Aside. In questa strategia, il server di cache si trova tra la richiesta del client e il server di database.<\/p>\n<p>Le richieste vanno direttamente al server di cache: questo \u00e8 responsabile del recupero dei dati dal <a href=\"https:\/\/kinsta.com\/it\/blog\/installare-php\/\">server di database<\/a> se non vengono trovati nel server di cache.<\/p>\n<p>Potete implementare questa strategia con la cache di Laravel tramite il seguente codice:<\/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>Ecco fatto! Ora abbiamo discusso alcune strategie di caching popolari per la vostra prossima applicazione Laravel. Ricordate: potete anche usare una strategia di caching personalizzata che meglio si adatta ai requisiti del vostro progetto.<\/p>\n<h2>Caching della Interfaccia Utente di un&#8217;Applicazione Laravel<\/h2>\n<p>Il caching dell&#8217;interfaccia utente della nostra app Laravel \u00e8 un concetto noto come Full Page cache FPC. Il termine si riferisce al processo di caching della risposta HTML di un&#8217;applicazione.<\/p>\n<p>\u00c8 eccellente per le applicazioni in cui i dati HTML dinamici non cambiano frequentemente. \u00c8 possibile memorizzare nella cache la risposta HTML e ottenere cos\u00ec una risposta complessiva e un rendering pi\u00f9 veloce dell&#8217;HTML.<\/p>\n<p>Possiamo implementare FPC con la seguente linea di codice:<\/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 prima vista, potreste aver notato che controlliamo se la pagina <strong>articles_index<\/strong> esiste gi\u00e0 nel nostro server di cache. Poi restituiamo la pagina renderizzandola con i metodi <strong>view()<\/strong> e <strong>render()<\/strong> di Laravel.<\/p>\n<p>Altrimenti, renderizziamo la pagina e memorizziamo l&#8217;output nel nostro server cache per le richieste successive prima di restituire la pagina renderizzata al browser.<\/p>\n<h2>Costruire un&#8217;Applicazione Laravel<\/h2>\n<p>Ora applicheremo ci\u00f2 che abbiamo imparato finora creando un nuovo progetto Laravel e implementando la cache Laravel.<\/p>\n<p>Se non avete mai usato Laravel, potete leggere <a href=\"https:\/\/kinsta.com\/it\/blog\/framework-laravel\/\">cos&#8217;\u00e8 Laravel<\/a> e dare un&#8217;occhiata alla nostra lista con <a href=\"https:\/\/kinsta.com\/it\/blog\/tutorial-laravel\/\">eccellenti tutorial su Laravel<\/a>, utili per iniziare.<\/p>\n<h3>Impostazione di Laravel<\/h3>\n<p>Per prima cosa, creeremo una nuova istanza di Laravel usando il seguente comando. Potete consultare la documentazione ufficiale per saperne di pi\u00f9.<\/p>\n<p>Aprite la vostra console e navigate fino al punto in cui memorizzate i vostri progetti PHP prima di eseguire i comandi qui sotto. Verificate di avere <a href=\"https:\/\/getcomposer.org\/\">Composer<\/a> installato e configurato correttamente.<\/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>Configurazione e Seeding del Database<\/h3>\n<p>Successivamente, imposteremo il nostro database, creeremo un nuovo modello di <strong>Article<\/strong> e faremo un seeding di 500 data point falsi per i test.<\/p>\n<p>Aprite il vostro <a href=\"https:\/\/kinsta.com\/it\/blog\/adminer\/\">client di database<\/a> e create un nuovo database. Faremo lo stesso con il nome <strong>fast_blog_app_db<\/strong> e poi riempiremo il nostro file <strong>.env <\/strong>con le credenziali del database:<\/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>In seguito, eseguiremo il seguente comando per creare simultaneamente la migrazione e il modello di <strong>Article:<\/strong><\/p>\n<pre><code class=\"language-bash\">php artisan make:model Article -m<\/code><\/pre>\n<p>Aprite la migrazione appena creata che \u00e8 stata trovata <code>database\/migrations\/xxx-create-articles-xxx.php<\/code>, e incollate il seguente codice:<\/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>Poi, eseguite il comando qui sotto per creare un nuovo seeder:<\/p>\n<pre><code class=\"language-bash\">php artisan make:seeder ArticleSeeder<\/code><\/pre>\n<p>Aprite il file seeder appena creato che si trova in <code>database\/seeders\/ArticleSeeder.php<\/code> e incollate il seguente codice:<\/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>Aprite il file <strong>DatabaseSeeder.php<\/strong> nella stessa directory e aggiungete il seguente codice:<\/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>Poi, eseguite il comando seguente per creare una nuova factory:<\/p>\n<pre><code class=\"language-bash\">php artisan make:factory ArticleFactory<\/code><\/pre>\n<p>Aprite il file factory appena costruito che si trova in <code>database\/factories\/ArticleFactory.php<\/code> e incollate il seguente codice:<\/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>Ora, eseguite il comando qui sotto per migrare lo schema che abbiamo appena creato e anche per fare seed dei nostri dati falsi per i test:<\/p>\n<pre><code class=\"language-bash\">php artisan migrate --seed<\/code><\/pre>\n<h3>Creare il Controller dell&#8217;Articolo<\/h3>\n<p>Successivamente, creeremo il nostro controller e imposteremo le route per gestire la nostra richiesta e recuperare i dati utilizzando il modello di cui sopra.<\/p>\n<p>Eseguite il seguente comando per creare un nuovo <strong>ArticlesController<\/strong> all&#8217;interno della cartella <code>app\/Http\/Controllers<\/code>:<\/p>\n<pre><code class=\"language-bash\">php artisan make:controller ArticlesController --resource<\/code><\/pre>\n<p>Aprite il file e aggiungete il seguente codice alla classe:<\/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>Dopo di che, aprite il file <strong>api.php<\/strong> che si trova all&#8217;interno della cartella <code>routes\/<\/code> e incollate il seguente codice per creare un endpoint da richiamare per recuperare i nostri dati:<\/p>\n<pre><code class=\"language-php\">Route::get('\/articles', 'ArticlesController@index');\n\nRoute::get('\/articles\/withoutcache', 'ArticlesController@allWithoutcache');<\/code><\/pre>\n<h3>Test delle Prestazioni<\/h3>\n<p>Infine, <a href=\"https:\/\/kinsta.com\/it\/blog\/monitoraggio-prestazioni-applicazioni\/\">testeremo le prestazioni<\/a> della risposta della nostra app con o senza l&#8217;implementazione della cache di Laravel.<\/p>\n<p>Questa schermata mostra il tempo di risposta dell&#8217;API con la cache implementata:<\/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=\"Tempo di risposta di Laravel API con la cache.\" width=\"1024\" height=\"583\"><\/a><figcaption id=\"caption-attachment-99464\" class=\"wp-caption-text\">Tempo di risposta di Laravel API con la cache.<\/figcaption><\/figure>\n<p>Il seguente screenshot mostra il tempo di risposta dell&#8217;API senza cache implementata: notate che il tempo di risposta \u00e8 aumentato rispetto all&#8217;istanza nella cache di oltre il <strong>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=\"Tempo di risposta di Laravel API senza cache.\" width=\"1024\" height=\"584\"><\/a><figcaption id=\"caption-attachment-99465\" class=\"wp-caption-text\">Tempo di risposta di Laravel API senza cache.<\/figcaption><\/figure>\n\n<h2>Riepilogo<\/h2>\n<p>Abbiamo esplorato varie strategie per implementare e manipolare il caching di Laravel costruendo un nuovo progetto, facendo il benchmarking delle sue risposte e confrontando i risultati.<\/p>\n<p>Avete anche imparato a usare i diversi driver e metodi di caching di Laravel. Inoltre, abbiamo implementato diverse strategie di caching per aiutarvi a capire quale potrebbe essere quella giusta per voi.<\/p>\n<p>Per saperne di pi\u00f9 su Laravel, date un\u2019occhiata alla nostra selezione dei <a href=\"https:\/\/kinsta.com\/it\/blog\/tutorial-laravel\/\">migliori tutorial su Laravel<\/a>. Che voi siate principianti o abbiate esperienza nello sviluppo di Laravel, abbiamo qualcosa per voi!<\/p>\n<p><em>Se avete ancora domande sul caching di Laravel, fatecelo sapere nella sezione dei commenti.<\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Il caching \u00e8 essenziale per ottenere alte prestazioni e scalabilit\u00e0. Implementare la corretta strategia di caching fin dalla fase di sviluppo \u00e8 fondamentale per evitare ritardo &#8230;<\/p>\n","protected":false},"author":193,"featured_media":47221,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_kinsta_gated_content":false,"_kinsta_gated_content_redirect":"","footnotes":""},"tags":[25528,41],"topic":[25889,26164,26020],"class_list":["post-47214","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","tag-laravel","tag-php","topic-cache-del-sito","topic-framework-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>Tutto Quello Che C&#039;\u00c8 da Sapere sul Caching di Laravel<\/title>\n<meta name=\"description\" content=\"Impara come aumentare le prestazioni e la scalabilit\u00e0 del software implementando e manipolando la giusta strategia di caching in 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\/it\/blog\/caching-laravel\/\" \/>\n<meta property=\"og:locale\" content=\"it_IT\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Tutto Quello Che C&#039;\u00c8 da Sapere sul Caching di Laravel\" \/>\n<meta property=\"og:description\" content=\"Impara come aumentare le prestazioni e la scalabilit\u00e0 del software implementando e manipolando la giusta strategia di caching in Laravel.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/kinsta.com\/it\/blog\/caching-laravel\/\" \/>\n<meta property=\"og:site_name\" content=\"Kinsta\u00ae\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/kinstaitalia\/\" \/>\n<meta property=\"article:published_time\" content=\"2021-08-30T13:08:12+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-02-01T13:42:42+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/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=\"Impara come aumentare le prestazioni e la scalabilit\u00e0 del software implementando e manipolando la giusta strategia di caching in Laravel.\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2021\/08\/laravel-caching.jpeg\" \/>\n<meta name=\"twitter:creator\" content=\"@kaperskyguru\" \/>\n<meta name=\"twitter:site\" content=\"@Kinsta_IT\" \/>\n<meta name=\"twitter:label1\" content=\"Scritto da\" \/>\n\t<meta name=\"twitter:data1\" content=\"Solomon Eseme\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tempo di lettura stimato\" \/>\n\t<meta name=\"twitter:data2\" content=\"16 minuti\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/kinsta.com\/it\/blog\/caching-laravel\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/it\/blog\/caching-laravel\/\"},\"author\":{\"name\":\"Solomon Eseme\",\"@id\":\"https:\/\/kinsta.com\/it\/#\/schema\/person\/51c9c77fa35cf1ef9a46308358441ab2\"},\"headline\":\"Tutto Quello Che C&#8217;\u00c8 da Sapere sul Caching di Laravel\",\"datePublished\":\"2021-08-30T13:08:12+00:00\",\"dateModified\":\"2023-02-01T13:42:42+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/kinsta.com\/it\/blog\/caching-laravel\/\"},\"wordCount\":2955,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/it\/#organization\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/it\/blog\/caching-laravel\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2021\/08\/laravel-caching.jpeg\",\"keywords\":[\"laravel\",\"php\"],\"articleSection\":[\"Sviluppo Web\"],\"inLanguage\":\"it-IT\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/kinsta.com\/it\/blog\/caching-laravel\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/kinsta.com\/it\/blog\/caching-laravel\/\",\"url\":\"https:\/\/kinsta.com\/it\/blog\/caching-laravel\/\",\"name\":\"Tutto Quello Che C'\u00c8 da Sapere sul Caching di Laravel\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/it\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/kinsta.com\/it\/blog\/caching-laravel\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/it\/blog\/caching-laravel\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2021\/08\/laravel-caching.jpeg\",\"datePublished\":\"2021-08-30T13:08:12+00:00\",\"dateModified\":\"2023-02-01T13:42:42+00:00\",\"description\":\"Impara come aumentare le prestazioni e la scalabilit\u00e0 del software implementando e manipolando la giusta strategia di caching in Laravel.\",\"breadcrumb\":{\"@id\":\"https:\/\/kinsta.com\/it\/blog\/caching-laravel\/#breadcrumb\"},\"inLanguage\":\"it-IT\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/kinsta.com\/it\/blog\/caching-laravel\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\/\/kinsta.com\/it\/blog\/caching-laravel\/#primaryimage\",\"url\":\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2021\/08\/laravel-caching.jpeg\",\"contentUrl\":\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2021\/08\/laravel-caching.jpeg\",\"width\":1460,\"height\":730,\"caption\":\"Tutto quello che devi sapere sul caching di Laravel\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/kinsta.com\/it\/blog\/caching-laravel\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/kinsta.com\/it\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Laravel\",\"item\":\"https:\/\/kinsta.com\/it\/argomenti\/laravel\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Tutto Quello Che C&#8217;\u00c8 da Sapere sul Caching di Laravel\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/kinsta.com\/it\/#website\",\"url\":\"https:\/\/kinsta.com\/it\/\",\"name\":\"Kinsta\u00ae\",\"description\":\"Soluzioni di hosting premium, veloci e sicure\",\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/it\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/kinsta.com\/it\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"it-IT\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/kinsta.com\/it\/#organization\",\"name\":\"Kinsta\",\"url\":\"https:\/\/kinsta.com\/it\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\/\/kinsta.com\/it\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/12\/kinsta-logo.jpeg\",\"contentUrl\":\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/12\/kinsta-logo.jpeg\",\"width\":500,\"height\":500,\"caption\":\"Kinsta\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/it\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/kinstaitalia\/\",\"https:\/\/x.com\/Kinsta_IT\",\"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\/it\/#\/schema\/person\/51c9c77fa35cf1ef9a46308358441ab2\",\"name\":\"Solomon Eseme\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\/\/kinsta.com\/it\/#\/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\/it\/blog\/author\/solomoneseme\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Tutto Quello Che C'\u00c8 da Sapere sul Caching di Laravel","description":"Impara come aumentare le prestazioni e la scalabilit\u00e0 del software implementando e manipolando la giusta strategia di caching in 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\/it\/blog\/caching-laravel\/","og_locale":"it_IT","og_type":"article","og_title":"Tutto Quello Che C'\u00c8 da Sapere sul Caching di Laravel","og_description":"Impara come aumentare le prestazioni e la scalabilit\u00e0 del software implementando e manipolando la giusta strategia di caching in Laravel.","og_url":"https:\/\/kinsta.com\/it\/blog\/caching-laravel\/","og_site_name":"Kinsta\u00ae","article_publisher":"https:\/\/www.facebook.com\/kinstaitalia\/","article_published_time":"2021-08-30T13:08:12+00:00","article_modified_time":"2023-02-01T13:42:42+00:00","og_image":[{"width":1460,"height":730,"url":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2021\/08\/laravel-caching.jpeg","type":"image\/jpeg"}],"author":"Solomon Eseme","twitter_card":"summary_large_image","twitter_description":"Impara come aumentare le prestazioni e la scalabilit\u00e0 del software implementando e manipolando la giusta strategia di caching in Laravel.","twitter_image":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2021\/08\/laravel-caching.jpeg","twitter_creator":"@kaperskyguru","twitter_site":"@Kinsta_IT","twitter_misc":{"Scritto da":"Solomon Eseme","Tempo di lettura stimato":"16 minuti"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/kinsta.com\/it\/blog\/caching-laravel\/#article","isPartOf":{"@id":"https:\/\/kinsta.com\/it\/blog\/caching-laravel\/"},"author":{"name":"Solomon Eseme","@id":"https:\/\/kinsta.com\/it\/#\/schema\/person\/51c9c77fa35cf1ef9a46308358441ab2"},"headline":"Tutto Quello Che C&#8217;\u00c8 da Sapere sul Caching di Laravel","datePublished":"2021-08-30T13:08:12+00:00","dateModified":"2023-02-01T13:42:42+00:00","mainEntityOfPage":{"@id":"https:\/\/kinsta.com\/it\/blog\/caching-laravel\/"},"wordCount":2955,"commentCount":0,"publisher":{"@id":"https:\/\/kinsta.com\/it\/#organization"},"image":{"@id":"https:\/\/kinsta.com\/it\/blog\/caching-laravel\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2021\/08\/laravel-caching.jpeg","keywords":["laravel","php"],"articleSection":["Sviluppo Web"],"inLanguage":"it-IT","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/kinsta.com\/it\/blog\/caching-laravel\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/kinsta.com\/it\/blog\/caching-laravel\/","url":"https:\/\/kinsta.com\/it\/blog\/caching-laravel\/","name":"Tutto Quello Che C'\u00c8 da Sapere sul Caching di Laravel","isPartOf":{"@id":"https:\/\/kinsta.com\/it\/#website"},"primaryImageOfPage":{"@id":"https:\/\/kinsta.com\/it\/blog\/caching-laravel\/#primaryimage"},"image":{"@id":"https:\/\/kinsta.com\/it\/blog\/caching-laravel\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2021\/08\/laravel-caching.jpeg","datePublished":"2021-08-30T13:08:12+00:00","dateModified":"2023-02-01T13:42:42+00:00","description":"Impara come aumentare le prestazioni e la scalabilit\u00e0 del software implementando e manipolando la giusta strategia di caching in Laravel.","breadcrumb":{"@id":"https:\/\/kinsta.com\/it\/blog\/caching-laravel\/#breadcrumb"},"inLanguage":"it-IT","potentialAction":[{"@type":"ReadAction","target":["https:\/\/kinsta.com\/it\/blog\/caching-laravel\/"]}]},{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/kinsta.com\/it\/blog\/caching-laravel\/#primaryimage","url":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2021\/08\/laravel-caching.jpeg","contentUrl":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2021\/08\/laravel-caching.jpeg","width":1460,"height":730,"caption":"Tutto quello che devi sapere sul caching di Laravel"},{"@type":"BreadcrumbList","@id":"https:\/\/kinsta.com\/it\/blog\/caching-laravel\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/kinsta.com\/it\/"},{"@type":"ListItem","position":2,"name":"Laravel","item":"https:\/\/kinsta.com\/it\/argomenti\/laravel\/"},{"@type":"ListItem","position":3,"name":"Tutto Quello Che C&#8217;\u00c8 da Sapere sul Caching di Laravel"}]},{"@type":"WebSite","@id":"https:\/\/kinsta.com\/it\/#website","url":"https:\/\/kinsta.com\/it\/","name":"Kinsta\u00ae","description":"Soluzioni di hosting premium, veloci e sicure","publisher":{"@id":"https:\/\/kinsta.com\/it\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/kinsta.com\/it\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"it-IT"},{"@type":"Organization","@id":"https:\/\/kinsta.com\/it\/#organization","name":"Kinsta","url":"https:\/\/kinsta.com\/it\/","logo":{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/kinsta.com\/it\/#\/schema\/logo\/image\/","url":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/12\/kinsta-logo.jpeg","contentUrl":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/12\/kinsta-logo.jpeg","width":500,"height":500,"caption":"Kinsta"},"image":{"@id":"https:\/\/kinsta.com\/it\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/kinstaitalia\/","https:\/\/x.com\/Kinsta_IT","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\/it\/#\/schema\/person\/51c9c77fa35cf1ef9a46308358441ab2","name":"Solomon Eseme","image":{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/kinsta.com\/it\/#\/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\/it\/blog\/author\/solomoneseme\/"}]}},"acf":[],"_links":{"self":[{"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/posts\/47214","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/users\/193"}],"replies":[{"embeddable":true,"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/comments?post=47214"}],"version-history":[{"count":18,"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/posts\/47214\/revisions"}],"predecessor-version":[{"id":52853,"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/posts\/47214\/revisions\/52853"}],"alternate":[{"embeddable":true,"hreflang":"en","title":"English","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/47214\/translations\/en"},{"embeddable":true,"hreflang":"fr","title":"French","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/47214\/translations\/fr"},{"embeddable":true,"hreflang":"it","title":"Italian","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/47214\/translations\/it"},{"embeddable":true,"hreflang":"es","title":"Spanish","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/47214\/translations\/es"},{"embeddable":true,"hreflang":"pt","title":"Portuguese","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/47214\/translations\/pt"},{"embeddable":true,"hreflang":"de","title":"German","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/47214\/translations\/de"},{"embeddable":true,"hreflang":"nl","title":"Dutch","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/47214\/translations\/nl"},{"embeddable":true,"hreflang":"sv","title":"Swedish","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/47214\/translations\/se"},{"href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/47214\/tree"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/media\/47221"}],"wp:attachment":[{"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/media?parent=47214"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/tags?post=47214"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/topic?post=47214"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}