{"id":40920,"date":"2021-10-04T12:51:30","date_gmt":"2021-10-04T10:51:30","guid":{"rendered":"https:\/\/kinsta.com\/?p=98920"},"modified":"2023-09-21T09:22:20","modified_gmt":"2023-09-21T09:22:20","slug":"laravel-cachning","status":"publish","type":"post","link":"https:\/\/kinsta.com\/se\/blog\/laravel-cachning\/","title":{"rendered":"Allt du beh\u00f6ver veta om Laravel-cachning"},"content":{"rendered":"<p>Cachning \u00e4r viktigt f\u00f6r att uppn\u00e5 h\u00f6g prestanda och skalbarhet. Att implementera den korrekta <a href=\"https:\/\/kinsta.com\/se\/blog\/vad-ar-ett-cacheminne\/\">cachningsstrategin<\/a> direkt fr\u00e5n utvecklingsfasen \u00e4r avg\u00f6rande f\u00f6r att undvika tr\u00f6ga API:er och h\u00f6ga <a href=\"https:\/\/kinsta.com\/se\/blog\/wordpress-cachningsplugins\/\">sidladdningstider<\/a>. Laravel \u00e4r ett av de mest popul\u00e4ra PHP-ramverken, s\u00e5 att implementera den optimala Laravel-cachningsstrategin \u00e4r oumb\u00e4rligt f\u00f6r en b\u00e4ttre anv\u00e4ndarupplevelse och b\u00e4ttre aff\u00e4rseffekt.<\/p>\n<p>I den h\u00e4r artikeln kommer vi att unders\u00f6ka strategier f\u00f6r att implementera och manipulera cachning i Laravel. Du kommer l\u00e4ra dig om hur Laravel-cachning fungerar, flera Laravel-cachningsf\u00f6rfr\u00e5gningar, , och hur du kan hantera cachning p\u00e5 Laravel-appar.<\/p>\n<p>Du f\u00e5r ut mer av den h\u00e4r artikeln om du redan har en grundl\u00e4ggande kunskap av f\u00f6ljande:<\/p>\n<ul>\n<li>God kunskap om <a href=\"https:\/\/kinsta.com\/se\/blog\/webbutvecklingsverktyg\/\">webbutveckling<\/a><\/li>\n<li>Grundl\u00e4ggande <a href=\"https:\/\/kinsta.com\/se\/blog\/vad-ar-laravel\/\">f\u00f6rst\u00e5else av Laravel<\/a><\/li>\n<li>Bygga <a href=\"https:\/\/masteringbackend.com\/posts\/laravel-framework-the-ultimate-guide\">API:er med Laravel<\/a><\/li>\n<li>Grundl\u00e4ggande <a href=\"https:\/\/kinsta.com\/docs\/wordpress-hosting\/caching\/site-caching\/#site-cache-expiration\">f\u00f6rst\u00e5else av cachning<\/a><\/li>\n<\/ul>\n<p>Nu b\u00f6rjar vi!<\/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>Kolla in v\u00e5r <a href=\"https:\/\/www.youtube.com\/watch?v=6eJMRMgn6mI\">videoguide<\/a> om Laravel Cache<\/h3>\n<kinsta-video src=\"https:\/\/www.youtube.com\/watch?v=6eJMRMgn6mI\"><\/kinsta-video>\n<h2>Varf\u00f6r \u00e4r cachning viktigt?<\/h2>\n<p>I och med den senaste boomen f\u00f6r internetf\u00f6retag har olika f\u00f6retag statistik som visar hur webbplatsens laddningstid och l\u00e5ga prestanda kraftigt kan p\u00e5verka SEO, anv\u00e4ndarengagemang, och konverteringsfrekvens utan cachning. Och det b\u00f6rjar med en utm\u00e4rkt cachningsstrategi.<\/p>\n<p>En <a href=\"https:\/\/kinsta.com\/learn\/page-speed\/#slow-how-slow\">onlinestudie fann att<\/a>, &#8221;1 sekund extra laddningstid skulle kosta Amazon $1,6 miljarder i f\u00f6rs\u00e4ljning varje \u00e5r&#8221;.<\/p>\n<p>En annan <a href=\"https:\/\/www.thinkwithgoogle.com\/future-of-marketing\/digital-transformation\/the-google-gospel-of-speed-urs-hoelzle\/\">Google-studie rapporterade<\/a>, &#8221;V\u00e5r forskning visar att om s\u00f6kresultaten saktas ner med ens en br\u00e5kdel av en sekund, s\u00f6ker folk mindre (allvarligt: en <strong>400ms f\u00f6rdr\u00f6jning<\/strong> leder till en <strong>0,44% minskning<\/strong> i s\u00f6kvolym). Och denna ot\u00e5lighet \u00e4r inte bara begr\u00e4nsad till s\u00f6kning: fyra av fem internetanv\u00e4ndare kommer att l\u00e4mna videon om det dr\u00f6jer innan den startar&#8221;.<\/p>\n<p>En mindre f\u00f6rsening i din webbsidas laddningstid kan resultera i en massiv inverkan p\u00e5 anv\u00e4ndarupplevelsen, och f\u00f6rlust av pengar.<\/p>\n<h2>Vad \u00e4r Laravel-cachning?<\/h2>\n<p>Laravel ger en robust och l\u00e4ttanv\u00e4nd implementering av cachning och olika cachnings-backender. Med Laravel-cachning kan du effektivt v\u00e4xla mellan m\u00e5nga cachningsmotorer utan att beh\u00f6va skriva n\u00e5gon kod.<\/p>\n<p>Du hittar konfigurationen av Laravel-cacheminnet i <strong>config\/cache.php<\/strong>-mappen, \u00e4ven om du nog bara beh\u00f6ver <strong>.env<\/strong>-filen f\u00f6r att v\u00e4xla mellan olika cachnings-backender.<\/p>\n<p>Laravel-cachning ger dig ocks\u00e5 m\u00e5nga praktiska metoder som du kan anv\u00e4nda f\u00f6r olika cachningsstrategier.<\/p>\n\n<h3>Laravels cachedriver och j\u00e4mf\u00f6relser<\/h3>\n<p>Laravels cache ger dig en bra cachnings-backend och driver. Beroende p\u00e5 just dina behov kan du v\u00e4xla mellan dem f\u00f6r att f\u00f6rb\u00e4ttra din applikationsprestanda och laddningstid.<\/p>\n<p>Med det sagt ger Laravel-cachningen dig ocks\u00e5 ett smidigt s\u00e4tt att skapa en anpassad backend och anv\u00e4nda den med Laravel-cachningen, men bara om listan nedan inte passar dina behov.<\/p>\n<p>Vi pratar om listan \u00f6ver alla backender som tillhandah\u00e5lls av Laravel-cachningen nedan.<\/p>\n<h4>1. Fil<\/h4>\n<p><strong>Fil<\/strong>-drivern \u00e4r standard-backenden som anv\u00e4nds av Laravels cache n\u00e4r ingen driver angetts i <strong>.env<\/strong>-filen.<\/p>\n<p><strong>Fil<\/strong>-backenden \u00e4r utformad f\u00f6r att lagra cachade data i en krypterad fil under <code><strong>storage\/framework\/<\/strong><\/code>. Laravel skapar en krypterad fil med data och cachenyckeln n\u00e4r nya data cachelagras. Samma sak h\u00e4nder n\u00e4r anv\u00e4ndaren f\u00f6rs\u00f6ker h\u00e4mta inneh\u00e5llet. Laravel-cachningen s\u00f6ker igenom mappen f\u00f6r den angivna nyckeln och, om den hittas, returnerar inneh\u00e5llet.<\/p>\n<p>\u00c4ven om <strong>Fil<\/strong>-backenden fungerar felfritt och sparar tid p\u00e5 att installera och konfigurera externa drivers, kan den ocks\u00e5 vara <a href=\"https:\/\/kinsta.com\/developer-roles\/development-at-kinsta\/\">perfekt f\u00f6r utveckling<\/a>. Det \u00e4r snabbare \u00e4n att komma \u00e5t data fr\u00e5n databasservern direkt.<\/p>\n<p>F\u00f6r att anv\u00e4nda <strong>Fil<\/strong>-drivern, l\u00e4gg till f\u00f6ljande kod till din <strong>.env<\/strong>-fil:<\/p>\n<pre><code class=\"language-markdown\">CACHE_DRIVER=file<\/code><\/pre>\n<h4>2. Array<\/h4>\n<p><strong>Array<\/strong>-drivern \u00e4r en perfekt cachningsbackend f\u00f6r att k\u00f6ra automatiserade tester och konfigureras enkelt med Github Actions, Jenkins, etc.<\/p>\n<p><strong>Array<\/strong>-backenden lagrar cachade data i en array i PHP och kr\u00e4ver inte att du installerar eller konfigurerar n\u00e5gon driver. Det fungerar perfekt f\u00f6r automatiserade tester, och \u00e4r lite snabbare \u00e4n File-cachen.<\/p>\n<p>F\u00f6r att anv\u00e4nda <strong>array<\/strong>-drivern, l\u00e4gg till f\u00f6ljande kod till din <strong>.env<\/strong>-fil:<\/p>\n<pre><code class=\"language-markdown\">CACHE_DRIVER=array<\/code><\/pre>\n<h4>3. Databas<\/h4>\n<p>N\u00e4r du anv\u00e4nder <strong>databas<\/strong>-drivern, lagras data i den aktuella PHP-processens minne. D\u00e4rf\u00f6r m\u00e5ste du skapa en databastabell f\u00f6r att lagra cachade data. Dessutom f\u00f6rb\u00e4ttrar <a href=\"https:\/\/kinsta.com\/se\/blog\/wordpressdatabasen\/\">databas-<\/a>cachningen skalbarheten genom att distribuera f\u00f6rfr\u00e5gnings-arbetsbelastningen fr\u00e5n backenden till flera frontender.<\/p>\n<p>Du kan k\u00f6ra det h\u00e4r Artisan-kommandot \u2014 <code>php artisan cache:tabl<\/code>e \u2014 f\u00f6r att automatiskt generera databasschemat som databasdrivern beh\u00f6ver.<\/p>\n<p><strong>Databastabell<\/strong>-drivern anv\u00e4nds fr\u00e4mst i situationer d\u00e5 du installerar programvara p\u00e5 din hostingplattform.<\/p>\n<p>Till exempel, l\u00e5t oss s\u00e4ga att du anv\u00e4nder ett gratis webbhotell med begr\u00e4nsade alternativ. F\u00f6r det skulle vi f\u00f6resl\u00e5 att du h\u00e5ller dig vid <strong>fil<\/strong>-drivern eftersom <strong>databas<\/strong>-drivern i de flesta fall \u00e4r den svagaste punkten i din applikation, och att f\u00f6rs\u00f6ka driva in mer data i den flaskhalsen \u00e4r inte en bra id\u00e9.<\/p>\n<p>F\u00f6r att anv\u00e4nda <strong>databas<\/strong>-drivern, l\u00e4gg till f\u00f6ljande kod till din <strong>.env<\/strong>-fil:<\/p>\n<pre><code class=\"language-markdown\">CACHE_DRIVER=database<\/code><\/pre>\n<h4>4. Redis<\/h4>\n<p><strong>Redis<\/strong>-drivern anv\u00e4nder den minnesbaserade cachningstekniken som kallas <a href=\"https:\/\/kinsta.com\/docs\/wordpress-hosting\/caching\/redis-cache\/\">Redis<\/a><strong>. <\/strong>\u00c4ven om den \u00e4r snabb j\u00e4mf\u00f6rt med andra cachedrivers som diskuterats ovan kr\u00e4ver den att du installerar och konfigurerar extern teknik.<\/p>\n<p>F\u00f6r att anv\u00e4nda <strong>redis<\/strong>-drivern, l\u00e4gg till f\u00f6ljande kod till din <strong>.env<\/strong>-fil:<\/p>\n<pre><code class=\"language-markdown\">CACHE_DRIVER=redis<\/code><\/pre>\n<h4>5. Memcached<\/h4>\n<p>Memcached \u00e4r k\u00e4nt som den mest popul\u00e4ra bland minnesbaserad cachelagring. Om du inte har n\u00e5got emot lite extra serverunderh\u00e5ll (att beh\u00f6va installera och underh\u00e5lla ytterligare tj\u00e4nster), \u00e4r den minnesbaserade cachedrivern Memcached ett bra alternativ.<\/p>\n<p>Att anv\u00e4nda <strong>memcached<\/strong>-drivern kr\u00e4ver att <a href=\"https:\/\/pecl.php.net\/package\/memcached\">Memcached PECL-paketet<\/a> installeras.<\/p>\n<p>F\u00f6r att anv\u00e4nda <strong>memcached<\/strong> driver, l\u00e4gg till f\u00f6ljande kod till din <strong>.env<\/strong>-fil.<\/p>\n<pre><code class=\"language-markdown\">CACHE_DRIVER=memcached <\/code><\/pre>\n<p>Den <a href=\"https:\/\/www.georgebuckingham.com\/laravel-cache-driver-performance\/\">b\u00e4sta cachedrivern att anv\u00e4nda och dess prestanda<\/a> beror p\u00e5 ditt projekts anv\u00e4ndningsfall och m\u00e4ngden data som ska h\u00e4mtas.<\/p>\n<h3>Laravel-cachningens anv\u00e4ndning och metoder<\/h3>\n<p>Laravel-cachningen ger dig m\u00e5nga v\u00e4rdefulla metoder f\u00f6r att implementera m\u00e5nga cachningsstrategier.<\/p>\n<p>Nedan listar vi och f\u00f6rklarar de olika metoderna (kategoriserade enligt anv\u00e4ndningsfall):<\/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>Att lagra cache<\/h4>\n<p>Lagring av nya data i cacheminnet \u00e4r mycket enkelt och anv\u00e4nder olika metoder, var och en med flera anv\u00e4ndningsfall.<\/p>\n<h5>1. Cache::put()<\/h5>\n<p>Denna metod accepterar tre <strong>key<\/strong>-parametrar, <strong>duration<\/strong> och de <strong>data<\/strong> som ska cachas.<\/p>\n<p><span style=\"font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen-Sans, Ubuntu, Cantarell, 'Helvetica Neue', sans-serif;font-size: 1rem\">L\u00e5t oss ta en titt p\u00e5 hur man anv\u00e4nder <\/span><code><strong>Cache::put()<\/strong><\/code><span style=\"font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen-Sans, Ubuntu, Cantarell, 'Helvetica Neue', sans-serif;font-size: 1rem\">:<\/span><\/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>Koden ovan kommer att cachelagra inl\u00e4gget med dess unika <strong>key<\/strong> i 20 sekunder.<\/p>\n<h5>2. Cache::putMany()<\/h5>\n<p>Denna metod lagrar en array data i cacheminnet samtidigt med samma varaktighet. Den accepterar tv\u00e5 parametrar som \u00e4r <strong>data<\/strong> och <strong>seconds<\/strong>.<\/p>\n<p>L\u00e5t oss ta en titt p\u00e5 hur man anv\u00e4nder <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>Denna metod \u00e4r ett till utm\u00e4rkt s\u00e4tt att implementera cacheminnets Aside-strategi. <code><strong>Cache::remember()<\/strong><\/code>-metoden accepterar tre parametrar, en <strong>key<\/strong>, <strong>seconds<\/strong>, och <strong>closure<\/strong> anv\u00e4nds f\u00f6r att h\u00e4mta data fr\u00e5n databasen om den inte hittas.<\/p>\n<p>L\u00e5t oss ta en titt p\u00e5 hur man anv\u00e4nder <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});\n<\/code><\/pre>\n<p>Laravel-cachningen har ocks\u00e5 <code><strong>Cache::rememberForever()<\/strong><\/code>-metoden, som inte accepterar <strong>seconds<\/strong>-parametern och lagrar <strong>data<\/strong> f\u00f6r alltid.<\/p>\n<h5>4. Cache::forever()<\/h5>\n<p>Denna metod lagrar data i cacheservern f\u00f6r alltid utan att ange n\u00e5gon varaktighet. Du kan implementera den med f\u00f6ljande kod:<\/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>H\u00e4mta cachedata<\/h4>\n<p>Metoderna i denna kategori h\u00e4mtar data fr\u00e5n cacheminnet. N\u00e5gra av dessa metoder kan upptr\u00e4da olika beroende p\u00e5 om data hittas eller inte.<\/p>\n<h5>1. Cache::get()<\/h5>\n<p>Denna metod h\u00e4mtar data fr\u00e5n cacheservern med en specifik nyckel. Du kan h\u00e4mta ett objekt med hj\u00e4lp av koden nedan:<\/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>Denna metod liknar <code><strong>Cache::putMany()<\/strong><\/code>. Den anv\u00e4nds f\u00f6r att h\u00e4mta en array med cachelagrade data p\u00e5 en g\u00e5ng med hj\u00e4lp av en array av cachade nycklar. Du kan h\u00e4mta en array cache med f\u00f6ljande kod:<\/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>Du kan ocks\u00e5 anv\u00e4nda den h\u00e4r metoden f\u00f6r att h\u00e4mta cachelagrade data genom att kontrollera cacheservern med hj\u00e4lp av den tillhandah\u00e5llna nyckeln. Om data lagras i cacheminnet kommer det att h\u00e4mta dem. Annars kommer det att h\u00e4mta data fr\u00e5n databasservern och cacha dem. Denna metod \u00e4r samma som <code><strong>Cache::rememberForever()<\/strong><\/code>-metoden med bara en extra <strong>seconds<\/strong>-parameter i <code><strong>Cache::remember()<\/strong><\/code>-metoden.<\/p>\n<h4>Ta bort objekt fr\u00e5n cacheminnet<\/h4>\n<p>Metoderna under denna kategori anv\u00e4nds f\u00f6r att ta bort objekt fr\u00e5n cacheminnet, grupperade efter funktionalitet.<\/p>\n<h5>1. Cache::forget()<\/h5>\n<p>Denna metod tar bort ett enda objekt fr\u00e5n cacheminnet med en angiven nyckelparameter:<\/p>\n<pre><code class=\"language-php\">Cache::forget('key');<\/code><\/pre>\n<h5>2. Cache::flush()<\/h5>\n<p>Denna metod rensar alla cachemotorer. Den tar bort alla objekt som lagrats n\u00e5gonstans i cacheminnet:<\/p>\n<pre><code class=\"language-php\">Cache::flush();<\/code><\/pre>\n<h4>\u00d6ka eller minska cachev\u00e4rdena<\/h4>\n<p>Du kan justera v\u00e4rdena f\u00f6r ett heltalsv\u00e4rde som lagrats i cachen med hj\u00e4lp av \u00f6knings- och minskningsmetoder, respektive:<\/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-cachningen har m\u00e5nga bra metoder som vi inte har diskuterat ovan, men ovanst\u00e5ende metoder \u00e4r popul\u00e4ra. Du kan f\u00e5 en \u00f6versikt \u00f6ver alla metoder i den officiella <a href=\"https:\/\/laravel.com\/docs\/8.x\/cache#cache-usage\">dokumentationen f\u00f6r Laravel-cachningen<\/a>.<\/p>\n<h3>F\u00f6rklaring \u00f6ver cachekommandon<\/h3>\n<p>Laravel tillhandah\u00e5ller kommandon f\u00f6r att g\u00f6ra det enkelt och snabbt att arbeta med Laravel-cachningen. Nedan \u00e4r listan \u00f6ver alla <a href=\"https:\/\/kinsta.com\/blog\/ssh-commands\/\">kommandon<\/a> och deras funktioner.<\/p>\n<h4>Rensa Laravel-cachningen<\/h4>\n<p>Detta kommando anv\u00e4nds f\u00f6r att rensa Laravel-cachningen innan den ens g\u00e5r ut med terminalen\/konsolen. Du kan till exempel k\u00f6ra f\u00f6ljande kommando:<\/p>\n<pre><code class=\"language-bash\">php artisan cache:clear<\/code><\/pre>\n<h4>Rensa route-cache<\/h4>\n<p>Det h\u00e4r kommandot anv\u00e4nds f\u00f6r att rensa route-cachen i din Laravel-applikation. K\u00f6r till exempel f\u00f6ljande kommando f\u00f6r att rensa route-cachen:<\/p>\n<pre><code class=\"language-bash\">php artisan config:cache<\/code><\/pre>\n<h4>Rensa kompilerade visningsfiler<\/h4>\n<p>Det h\u00e4r kommandot anv\u00e4nds f\u00f6r att rensa de kompilerade visningsfilerna i din Laravel-applikation. Du kan uppn\u00e5 det med f\u00f6ljande kommando:<\/p>\n<pre><code class=\"language-php\">php artisan view:clear<\/code><\/pre>\n<h4>Databastabell<\/h4>\n<p>N\u00e4r du anv\u00e4nder databasdrivern m\u00e5ste du skapa ett databasschema som heter <strong>cache<\/strong> f\u00f6r att lagra cachedata. Du kan ocks\u00e5 anv\u00e4nda Artisan-kommandot f\u00f6r att generera en migrering med r\u00e4tt schema:<\/p>\n<pre><code class=\"language-bash\">php artisan cache:table<\/code><\/pre>\n<h2>Laravel-cachningsstrategier<\/h2>\n<p>Beroende p\u00e5 din applikations anv\u00e4ndningsfall och datastruktur finns det troligtvis flera olika cachningsstrategier tillg\u00e4ngliga f\u00f6r dig. Du kan ocks\u00e5 skapa en anpassad strategi f\u00f6r att passa dina behov. Nedan g\u00e5r vi igenom listan \u00f6ver popul\u00e4ra cachningsstrategier som du kan implementera i ditt Laravel-projekt.<\/p>\n<aside role=\"note\" class=\"wp-block-kinsta-notice is-style-info\">\n            <h3>Info<\/h3>\n        <p>Kinsta l\u00e5ter dig k\u00f6ra Laravel f\u00f6r dina produkter, \u00e4ven om det officiellt inte st\u00f6ds av v\u00e5rt team.<\/p>\n<\/aside>\n\n<h3>writeThrough<\/h3>\n<p>I <strong>writeThrough<\/strong>-strategin sitter cacheservern mellan f\u00f6rfr\u00e5gningarna och databasservern, vilket tar varje <strong>write<\/strong>-operation igenom cacheservern innan den g\u00e5r till databasservern. S\u00e5ledes liknar cachningsstrategin <strong>writeThrough<\/strong> <strong>readThrough<\/strong>-strategin.<\/p>\n<p>Du kan implementera denna strategi med Laravel-cachning med f\u00f6ljande kod:<\/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>Denna strategi \u00e4r ett mer avancerat s\u00e4tt att genomf\u00f6ra <strong>writeThrough<\/strong>-strategin genom att l\u00e4gga till f\u00f6rseningar f\u00f6r skrivoperationer.<\/p>\n<p>Du kan ocks\u00e5 kalla detta <strong>writeBehind<\/strong>-strategin p\u00e5 grund av tidsf\u00f6rdr\u00f6jningen som till\u00e4mpas p\u00e5 cacheservern innan du skickar data till databasservern.<\/p>\n<p>Du kan implementera denna strategi med Laravel-cachningen med f\u00f6ljande kod:<\/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><strong>writeBack<\/strong>-metoden anropar <strong>writeThrough<\/strong>-metoden, som lagrar data p\u00e5 cacheservern och en tillf\u00e4llig array som senare ska skickas till databasservern med hj\u00e4lp av <strong>updateDatabaseServer<\/strong>-metoden. Du kan st\u00e4lla in ett <a href=\"https:\/\/masteringbackend.com\/posts\/laravel-cron-the-definitive-guide\">CronJob<\/a> till att uppdatera databasservern var femte minut.<\/p>\n<h3>writeAround<\/h3>\n<p>Denna strategi l\u00e5ter alla <strong>write-<\/strong>operationer g\u00e5 direkt till databasservern utan att uppdatera cacheservern \u2013 endast under <strong>read<\/strong>-operationer uppdateras cacheservern.<\/p>\n<p>Om en anv\u00e4ndare vill skapa en ny <strong>Article<\/strong>, lagras den direkt p\u00e5 databasservern. N\u00e4r anv\u00e4ndaren vill l\u00e4sa artikeln f\u00f6r f\u00f6rsta g\u00e5ngen h\u00e4mtas <strong>Article<\/strong> fr\u00e5n databasservern och uppdaterar cacheservern f\u00f6r efterf\u00f6ljande f\u00f6rfr\u00e5gningar.<\/p>\n<p>Du kan implementera denna strategi med Laravel-cachningen med f\u00f6ljande kod:<\/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 (latladdning)<\/h3>\n<p>Databasen sitter \u00e5t sidan i denna s.k. Aside-strategi, och programmet beg\u00e4r data fr\u00e5n cacheservern f\u00f6rst. Om det sedan finns en tr\u00e4ff (found) returneras data till klienten. Om det d\u00e4remot finns en miss (not found), beg\u00e4r databasservern dessa data och uppdaterar cacheservern f\u00f6r efterf\u00f6ljande f\u00f6rfr\u00e5gningar.<\/p>\n<p>Du kan implementera denna strategi med Laravel-cachningen med f\u00f6ljande kod:<\/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>Koden ovan visar implementeringen av Aside-strategin, vilket motsvarar implementeringen av <strong>Cache::remember<\/strong>-metoden.<\/p>\n<h3>Read Through<\/h3>\n<p>Denna strategi \u00e4r raka motsatsen till Cache Aside. I den h\u00e4r strategin sitter cacheservern mellan klientf\u00f6rfr\u00e5gan och databasservern.<\/p>\n<p>F\u00f6rfr\u00e5gan g\u00e5r direkt till cacheservern, och cacheservern ansvarar f\u00f6r att h\u00e4mta data fr\u00e5n <a href=\"https:\/\/kinsta.com\/se\/blog\/installerar-php\/\">databasservern<\/a> om de inte finns i cacheservern.<\/p>\n<p>Du kan implementera denna strategi med Laravel-cachningen med f\u00f6ljande kod:<\/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>D\u00e4r har du allt! Vi har nu diskuterat n\u00e5gra popul\u00e4ra cachningsstrategier f\u00f6r din n\u00e4sta Laravel-applikation. Kom ih\u00e5g att du ocks\u00e5 kan anv\u00e4nda en anpassad cachningsstrategi som b\u00e4ttre passar dina projektbehov.<\/p>\n<h2>Cachning av UI-delen av en Laravel-app<\/h2>\n<p>Cachning av UI-delen av v\u00e5r Laravel-app \u00e4r ett begrepp som kallas Full Page Cache (FPC). Termen handlar om processen att cacha HTML-svaret fr\u00e5n en applikation.<\/p>\n<p>Det \u00e4r utm\u00e4rkt f\u00f6r applikationer d\u00e4r dynamiska HTML-data inte \u00e4ndras ofta. Du kan cacha HTML-svaret f\u00f6r snabbare \u00f6vergripande svar och rendering av HTML.<\/p>\n<p>Vi kan implementera FPC med f\u00f6ljande rader kod:<\/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>Vid f\u00f6rsta anblicken kanske du har m\u00e4rkt att vi kontrollerar om <strong>articles_index<\/strong>-sidan redan finns i v\u00e5r cacheserver. Sedan returnerar vi sidan genom att rendera den med Laravels <strong>view()<\/strong> och <strong>render()<\/strong>-metoder.<\/p>\n<p>Annars renderar vi sidan och lagrar utmatningen i v\u00e5r cacheserver f\u00f6r efterf\u00f6ljande f\u00f6rfr\u00e5gningar innan den returnerar den renderade sidan till webbl\u00e4saren.<\/p>\n<h2>Bygg en Laravel-app<\/h2>\n<p>Nu ska vi till\u00e4mpa vad vi har l\u00e4rt oss hittills genom att skapa ett nytt Laravel-projekt och implementera Laravel-cachningen.<\/p>\n<p>Om du inte har anv\u00e4nt Laravel kan du l\u00e4sa igenom <a href=\"https:\/\/kinsta.com\/se\/blog\/vad-ar-laravel\/\">vad Laravel \u00e4r<\/a> och kika p\u00e5 v\u00e5r lista \u00f6ver <a href=\"https:\/\/kinsta.com\/se\/blog\/laravel-tutorial\/\">utm\u00e4rkta Laravel-guider<\/a> f\u00f6r att komma i g\u00e5ng.<\/p>\n<h3>Att installera Laravel<\/h3>\n<p>F\u00f6rst ska vi skapa en ny Laravel-instans med kommandot nedan. Du kan titta i den officiella dokumentationen f\u00f6r mer information.<\/p>\n<p>\u00d6ppna din konsol och navigera till den plats d\u00e4r du lagrar dina PHP-projekt innan du k\u00f6r kommandona nedan. Se till att ha <a href=\"https:\/\/getcomposer.org\/\">Composer<\/a> installerat och korrekt konfigurerat.<\/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>Konfigurera och seeda databasen<\/h3>\n<p>D\u00e4refter kommer vi att st\u00e4lla in v\u00e5r databas, skapa en ny <strong>Article<\/strong>-modell och seeda 500 falska datapunkter f\u00f6r testning.<\/p>\n<p>\u00d6ppna din <a href=\"https:\/\/kinsta.com\/se\/blog\/adminer\/\">databasklient<\/a> och skapa en ny databas. Vi g\u00f6r detsamma med namnet <strong>fast_blog_app_db<\/strong> och fyller sedan i v\u00e5r <strong>.env<\/strong>-fil med databasuppgifter:<\/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>D\u00e4refter k\u00f6r vi f\u00f6ljande kommando f\u00f6r att skapa migreringen och <strong>Article<\/strong>-modellen samtidigt:<\/p>\n<pre><code class=\"language-bash\">php artisan make:model Article -m<\/code><\/pre>\n<p>\u00d6ppna den nyskapade migreringen i <code>database\/migrations\/xxx-create-articles-xxx.php<\/code> och klistra in f\u00f6ljande kod:<\/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>K\u00f6r sedan kommandot nedan f\u00f6r att skapa en ny seeder:<\/p>\n<pre><code class=\"language-bash\">php artisan make:seeder ArticleSeeder<\/code><\/pre>\n<p>\u00d6ppna den nyskapade seeder-filen som finns i <code>database\/seeders\/ArticleSeeder.php<\/code> och klistra in f\u00f6ljande kod:<\/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>\u00d6ppna <strong>Databaseeder.php<\/strong>-filen i samma katalog och l\u00e4gg till f\u00f6ljande kod:<\/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>K\u00f6r sedan kommandot nedan f\u00f6r att skapa en ny fabrik:<\/p>\n<pre><code class=\"language-bash\">php artisan make:factory ArticleFactory<\/code><\/pre>\n<p>\u00d6ppna den nybyggda fabriksfilen i <code>database\/factories\/ArticleFactory.php<\/code> och klistra in f\u00f6ljande kod:<\/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>K\u00f6r nu kommandot nedan f\u00f6r att migrera v\u00e5rt nyskapade schema och ocks\u00e5 seeda v\u00e5ra falska data f\u00f6r testning:<\/p>\n<pre><code class=\"language-bash\">php artisan migrate --seed<\/code><\/pre>\n<h3>Skapa ArticlesController<\/h3>\n<p>D\u00e4refter kommer vi att skapa v\u00e5r controller och st\u00e4lla in v\u00e5ra router f\u00f6r att hantera v\u00e5r f\u00f6rfr\u00e5gan och h\u00e4mta data med hj\u00e4lp av ovanst\u00e5ende modell.<\/p>\n<p>K\u00f6r f\u00f6ljande kommando f\u00f6r att skapa en ny <strong>ArticlesController<\/strong> inuti <code>app\/Http\/Controllers<\/code>-mappen:<\/p>\n<pre><code class=\"language-bash\">php artisan make:controller ArticlesController --resource<\/code><\/pre>\n<p>\u00d6ppna filen och l\u00e4gg till f\u00f6ljande kod i klassen:<\/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>D\u00e4refter \u00f6ppnar du <strong>api.php<\/strong>-filen i <code>routes\/<\/code>-mappen och klistra in i f\u00f6ljande kod f\u00f6r att skapa en slutpunkt vi kan anropa f\u00f6r att h\u00e4mta v\u00e5ra data:<\/p>\n<pre><code class=\"language-php\">Route::get('\/articles', 'ArticlesController@index');\n\nRoute::get('\/articles\/withoutcache', 'ArticlesController@allWithoutcache');<\/code><\/pre>\n<h3>Testa prestandan<\/h3>\n<p>Slutligen kommer vi att <a href=\"https:\/\/kinsta.com\/se\/blog\/applikationsprestandaovervakning\/\">testa prestandan<\/a> av v\u00e5r apps svar med eller utan Laravel-cachningen.<\/p>\n<p>Denna sk\u00e4rmdump visar svarstiden f\u00f6r API:n med cache.<\/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=\"Laravel API svarstid med cache\" width=\"1024\" height=\"583\"><\/a><figcaption id=\"caption-attachment-99464\" class=\"wp-caption-text\">Laravel API svarstid med cache<\/figcaption><\/figure>\n<p>F\u00f6ljande sk\u00e4rmdump visar svarstiden f\u00f6r API:n utan cache. Observera att svarstiden har \u00f6kat f\u00f6r den cachade instansen med \u00f6ver <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=\"Laravel API svarstid utan cache\" width=\"1024\" height=\"584\"><\/a><figcaption id=\"caption-attachment-99465\" class=\"wp-caption-text\">Laravel API svarstid utan cache<\/figcaption><\/figure>\n\n<h2>Sammanfattning<\/h2>\n<p>Vi har utforskat olika strategier f\u00f6r att implementera och manipulera Laravel-cachning genom att bygga ett nytt projekt, testa dess svarstid och j\u00e4mf\u00f6ra resultaten.<\/p>\n<p>Du har ocks\u00e5 l\u00e4rt dig hur du anv\u00e4nder olika Laravel-cachedrivers och metoder. Dessutom implementerade vi olika cachningsstrategier f\u00f6r att hj\u00e4lpa dig att r\u00e4kna ut vilken som kan vara r\u00e4tt f\u00f6r dig.<\/p>\n<p>F\u00f6r mer Laravel, utforska v\u00e5rt urval av <a href=\"https:\/\/kinsta.com\/se\/blog\/laravel-tutorial\/\">de b\u00e4sta Laravel-guiderna<\/a>. Oavsett om du \u00e4r nyb\u00f6rjare eller en avancerad Laravel-utvecklare finns det n\u00e5got f\u00f6r alla d\u00e4r!<\/p>\n<p><em>Om du fortfarande har fr\u00e5gor om Laravel-cachning, h\u00f6r av dig i kommentarf\u00e4ltet.<\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Cachning \u00e4r viktigt f\u00f6r att uppn\u00e5 h\u00f6g prestanda och skalbarhet. Att implementera den korrekta cachningsstrategin direkt fr\u00e5n utvecklingsfasen \u00e4r avg\u00f6rande f\u00f6r att undvika tr\u00f6ga API:er och &#8230;<\/p>\n","protected":false},"author":193,"featured_media":40921,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_kinsta_gated_content":false,"_kinsta_gated_content_redirect":"","footnotes":""},"tags":[310,38],"topic":[802],"class_list":["post-40920","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","tag-laravel","tag-php","topic-php-ramverk"],"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>Allt du beh\u00f6ver veta om Laravel-cachning<\/title>\n<meta name=\"description\" content=\"L\u00e4r dig att \u00f6ka programvaruprestanda och skalbarhet genom att implementera och manipulera r\u00e4tt cachningsstrategi i 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\/se\/blog\/laravel-cachning\/\" \/>\n<meta property=\"og:locale\" content=\"sv_SE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Allt du beh\u00f6ver veta om Laravel-cachning\" \/>\n<meta property=\"og:description\" content=\"L\u00e4r dig att \u00f6ka programvaruprestanda och skalbarhet genom att implementera och manipulera r\u00e4tt cachningsstrategi i Laravel.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/kinsta.com\/se\/blog\/laravel-cachning\/\" \/>\n<meta property=\"og:site_name\" content=\"Kinsta\u00ae\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/kinstasweden\/\" \/>\n<meta property=\"article:published_time\" content=\"2021-10-04T10:51:30+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-09-21T09:22:20+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/kinsta.com\/se\/wp-content\/uploads\/sites\/9\/2021\/10\/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=\"L\u00e4r dig att \u00f6ka programvaruprestanda och skalbarhet genom att implementera och manipulera r\u00e4tt cachningsstrategi i Laravel.\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/kinsta.com\/se\/wp-content\/uploads\/sites\/9\/2021\/10\/laravel-caching.jpeg\" \/>\n<meta name=\"twitter:creator\" content=\"@kaperskyguru\" \/>\n<meta name=\"twitter:site\" content=\"@kinsta_se\" \/>\n<meta name=\"twitter:label1\" content=\"Skriven av\" \/>\n\t<meta name=\"twitter:data1\" content=\"Solomon Eseme\" \/>\n\t<meta name=\"twitter:label2\" content=\"Ber\u00e4knad l\u00e4stid\" \/>\n\t<meta name=\"twitter:data2\" content=\"14 minuter\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/kinsta.com\/se\/blog\/laravel-cachning\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/se\/blog\/laravel-cachning\/\"},\"author\":{\"name\":\"Solomon Eseme\",\"@id\":\"https:\/\/kinsta.com\/se\/#\/schema\/person\/51c9c77fa35cf1ef9a46308358441ab2\"},\"headline\":\"Allt du beh\u00f6ver veta om Laravel-cachning\",\"datePublished\":\"2021-10-04T10:51:30+00:00\",\"dateModified\":\"2023-09-21T09:22:20+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/kinsta.com\/se\/blog\/laravel-cachning\/\"},\"wordCount\":2879,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/se\/#organization\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/se\/blog\/laravel-cachning\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/se\/wp-content\/uploads\/sites\/9\/2021\/10\/laravel-caching.jpeg\",\"keywords\":[\"laravel\",\"php\"],\"articleSection\":[\"Webbutveckling\"],\"inLanguage\":\"sv-SE\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/kinsta.com\/se\/blog\/laravel-cachning\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/kinsta.com\/se\/blog\/laravel-cachning\/\",\"url\":\"https:\/\/kinsta.com\/se\/blog\/laravel-cachning\/\",\"name\":\"Allt du beh\u00f6ver veta om Laravel-cachning\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/se\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/kinsta.com\/se\/blog\/laravel-cachning\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/se\/blog\/laravel-cachning\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/se\/wp-content\/uploads\/sites\/9\/2021\/10\/laravel-caching.jpeg\",\"datePublished\":\"2021-10-04T10:51:30+00:00\",\"dateModified\":\"2023-09-21T09:22:20+00:00\",\"description\":\"L\u00e4r dig att \u00f6ka programvaruprestanda och skalbarhet genom att implementera och manipulera r\u00e4tt cachningsstrategi i Laravel.\",\"breadcrumb\":{\"@id\":\"https:\/\/kinsta.com\/se\/blog\/laravel-cachning\/#breadcrumb\"},\"inLanguage\":\"sv-SE\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/kinsta.com\/se\/blog\/laravel-cachning\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"sv-SE\",\"@id\":\"https:\/\/kinsta.com\/se\/blog\/laravel-cachning\/#primaryimage\",\"url\":\"https:\/\/kinsta.com\/se\/wp-content\/uploads\/sites\/9\/2021\/10\/laravel-caching.jpeg\",\"contentUrl\":\"https:\/\/kinsta.com\/se\/wp-content\/uploads\/sites\/9\/2021\/10\/laravel-caching.jpeg\",\"width\":1460,\"height\":730,\"caption\":\"Allt du beh\u00f6ver veta om Laravel-cachning\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/kinsta.com\/se\/blog\/laravel-cachning\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/kinsta.com\/se\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"PHP-ramverk\",\"item\":\"https:\/\/kinsta.com\/se\/topics\/php-ramverk\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Allt du beh\u00f6ver veta om Laravel-cachning\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/kinsta.com\/se\/#website\",\"url\":\"https:\/\/kinsta.com\/se\/\",\"name\":\"Kinsta\u00ae\",\"description\":\"Snabba, s\u00e4kra, premium hosting-l\u00f6sningar\",\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/se\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/kinsta.com\/se\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"sv-SE\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/kinsta.com\/se\/#organization\",\"name\":\"Kinsta\",\"url\":\"https:\/\/kinsta.com\/se\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"sv-SE\",\"@id\":\"https:\/\/kinsta.com\/se\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/kinsta.com\/se\/wp-content\/uploads\/sites\/9\/2023\/12\/kinsta-logo.jpeg\",\"contentUrl\":\"https:\/\/kinsta.com\/se\/wp-content\/uploads\/sites\/9\/2023\/12\/kinsta-logo.jpeg\",\"width\":500,\"height\":500,\"caption\":\"Kinsta\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/se\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/kinstasweden\/\",\"https:\/\/x.com\/kinsta_se\",\"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\/se\/#\/schema\/person\/51c9c77fa35cf1ef9a46308358441ab2\",\"name\":\"Solomon Eseme\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"sv-SE\",\"@id\":\"https:\/\/kinsta.com\/se\/#\/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\/se\/blog\/author\/solomoneseme\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Allt du beh\u00f6ver veta om Laravel-cachning","description":"L\u00e4r dig att \u00f6ka programvaruprestanda och skalbarhet genom att implementera och manipulera r\u00e4tt cachningsstrategi i 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\/se\/blog\/laravel-cachning\/","og_locale":"sv_SE","og_type":"article","og_title":"Allt du beh\u00f6ver veta om Laravel-cachning","og_description":"L\u00e4r dig att \u00f6ka programvaruprestanda och skalbarhet genom att implementera och manipulera r\u00e4tt cachningsstrategi i Laravel.","og_url":"https:\/\/kinsta.com\/se\/blog\/laravel-cachning\/","og_site_name":"Kinsta\u00ae","article_publisher":"https:\/\/www.facebook.com\/kinstasweden\/","article_published_time":"2021-10-04T10:51:30+00:00","article_modified_time":"2023-09-21T09:22:20+00:00","og_image":[{"width":1460,"height":730,"url":"https:\/\/kinsta.com\/se\/wp-content\/uploads\/sites\/9\/2021\/10\/laravel-caching.jpeg","type":"image\/jpeg"}],"author":"Solomon Eseme","twitter_card":"summary_large_image","twitter_description":"L\u00e4r dig att \u00f6ka programvaruprestanda och skalbarhet genom att implementera och manipulera r\u00e4tt cachningsstrategi i Laravel.","twitter_image":"https:\/\/kinsta.com\/se\/wp-content\/uploads\/sites\/9\/2021\/10\/laravel-caching.jpeg","twitter_creator":"@kaperskyguru","twitter_site":"@kinsta_se","twitter_misc":{"Skriven av":"Solomon Eseme","Ber\u00e4knad l\u00e4stid":"14 minuter"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/kinsta.com\/se\/blog\/laravel-cachning\/#article","isPartOf":{"@id":"https:\/\/kinsta.com\/se\/blog\/laravel-cachning\/"},"author":{"name":"Solomon Eseme","@id":"https:\/\/kinsta.com\/se\/#\/schema\/person\/51c9c77fa35cf1ef9a46308358441ab2"},"headline":"Allt du beh\u00f6ver veta om Laravel-cachning","datePublished":"2021-10-04T10:51:30+00:00","dateModified":"2023-09-21T09:22:20+00:00","mainEntityOfPage":{"@id":"https:\/\/kinsta.com\/se\/blog\/laravel-cachning\/"},"wordCount":2879,"commentCount":0,"publisher":{"@id":"https:\/\/kinsta.com\/se\/#organization"},"image":{"@id":"https:\/\/kinsta.com\/se\/blog\/laravel-cachning\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/se\/wp-content\/uploads\/sites\/9\/2021\/10\/laravel-caching.jpeg","keywords":["laravel","php"],"articleSection":["Webbutveckling"],"inLanguage":"sv-SE","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/kinsta.com\/se\/blog\/laravel-cachning\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/kinsta.com\/se\/blog\/laravel-cachning\/","url":"https:\/\/kinsta.com\/se\/blog\/laravel-cachning\/","name":"Allt du beh\u00f6ver veta om Laravel-cachning","isPartOf":{"@id":"https:\/\/kinsta.com\/se\/#website"},"primaryImageOfPage":{"@id":"https:\/\/kinsta.com\/se\/blog\/laravel-cachning\/#primaryimage"},"image":{"@id":"https:\/\/kinsta.com\/se\/blog\/laravel-cachning\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/se\/wp-content\/uploads\/sites\/9\/2021\/10\/laravel-caching.jpeg","datePublished":"2021-10-04T10:51:30+00:00","dateModified":"2023-09-21T09:22:20+00:00","description":"L\u00e4r dig att \u00f6ka programvaruprestanda och skalbarhet genom att implementera och manipulera r\u00e4tt cachningsstrategi i Laravel.","breadcrumb":{"@id":"https:\/\/kinsta.com\/se\/blog\/laravel-cachning\/#breadcrumb"},"inLanguage":"sv-SE","potentialAction":[{"@type":"ReadAction","target":["https:\/\/kinsta.com\/se\/blog\/laravel-cachning\/"]}]},{"@type":"ImageObject","inLanguage":"sv-SE","@id":"https:\/\/kinsta.com\/se\/blog\/laravel-cachning\/#primaryimage","url":"https:\/\/kinsta.com\/se\/wp-content\/uploads\/sites\/9\/2021\/10\/laravel-caching.jpeg","contentUrl":"https:\/\/kinsta.com\/se\/wp-content\/uploads\/sites\/9\/2021\/10\/laravel-caching.jpeg","width":1460,"height":730,"caption":"Allt du beh\u00f6ver veta om Laravel-cachning"},{"@type":"BreadcrumbList","@id":"https:\/\/kinsta.com\/se\/blog\/laravel-cachning\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/kinsta.com\/se\/"},{"@type":"ListItem","position":2,"name":"PHP-ramverk","item":"https:\/\/kinsta.com\/se\/topics\/php-ramverk\/"},{"@type":"ListItem","position":3,"name":"Allt du beh\u00f6ver veta om Laravel-cachning"}]},{"@type":"WebSite","@id":"https:\/\/kinsta.com\/se\/#website","url":"https:\/\/kinsta.com\/se\/","name":"Kinsta\u00ae","description":"Snabba, s\u00e4kra, premium hosting-l\u00f6sningar","publisher":{"@id":"https:\/\/kinsta.com\/se\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/kinsta.com\/se\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"sv-SE"},{"@type":"Organization","@id":"https:\/\/kinsta.com\/se\/#organization","name":"Kinsta","url":"https:\/\/kinsta.com\/se\/","logo":{"@type":"ImageObject","inLanguage":"sv-SE","@id":"https:\/\/kinsta.com\/se\/#\/schema\/logo\/image\/","url":"https:\/\/kinsta.com\/se\/wp-content\/uploads\/sites\/9\/2023\/12\/kinsta-logo.jpeg","contentUrl":"https:\/\/kinsta.com\/se\/wp-content\/uploads\/sites\/9\/2023\/12\/kinsta-logo.jpeg","width":500,"height":500,"caption":"Kinsta"},"image":{"@id":"https:\/\/kinsta.com\/se\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/kinstasweden\/","https:\/\/x.com\/kinsta_se","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\/se\/#\/schema\/person\/51c9c77fa35cf1ef9a46308358441ab2","name":"Solomon Eseme","image":{"@type":"ImageObject","inLanguage":"sv-SE","@id":"https:\/\/kinsta.com\/se\/#\/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\/se\/blog\/author\/solomoneseme\/"}]}},"acf":[],"_links":{"self":[{"href":"https:\/\/kinsta.com\/se\/wp-json\/wp\/v2\/posts\/40920","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kinsta.com\/se\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kinsta.com\/se\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kinsta.com\/se\/wp-json\/wp\/v2\/users\/193"}],"replies":[{"embeddable":true,"href":"https:\/\/kinsta.com\/se\/wp-json\/wp\/v2\/comments?post=40920"}],"version-history":[{"count":8,"href":"https:\/\/kinsta.com\/se\/wp-json\/wp\/v2\/posts\/40920\/revisions"}],"predecessor-version":[{"id":42956,"href":"https:\/\/kinsta.com\/se\/wp-json\/wp\/v2\/posts\/40920\/revisions\/42956"}],"alternate":[{"embeddable":true,"hreflang":"en","title":"English","href":"https:\/\/kinsta.com\/se\/wp-json\/kinsta\/v1\/posts\/40920\/translations\/en"},{"embeddable":true,"hreflang":"fr","title":"French","href":"https:\/\/kinsta.com\/se\/wp-json\/kinsta\/v1\/posts\/40920\/translations\/fr"},{"embeddable":true,"hreflang":"it","title":"Italian","href":"https:\/\/kinsta.com\/se\/wp-json\/kinsta\/v1\/posts\/40920\/translations\/it"},{"embeddable":true,"hreflang":"es","title":"Spanish","href":"https:\/\/kinsta.com\/se\/wp-json\/kinsta\/v1\/posts\/40920\/translations\/es"},{"embeddable":true,"hreflang":"pt","title":"Portuguese","href":"https:\/\/kinsta.com\/se\/wp-json\/kinsta\/v1\/posts\/40920\/translations\/pt"},{"embeddable":true,"hreflang":"de","title":"German","href":"https:\/\/kinsta.com\/se\/wp-json\/kinsta\/v1\/posts\/40920\/translations\/de"},{"embeddable":true,"hreflang":"nl","title":"Dutch","href":"https:\/\/kinsta.com\/se\/wp-json\/kinsta\/v1\/posts\/40920\/translations\/nl"},{"embeddable":true,"hreflang":"sv","title":"Swedish","href":"https:\/\/kinsta.com\/se\/wp-json\/kinsta\/v1\/posts\/40920\/translations\/se"},{"href":"https:\/\/kinsta.com\/se\/wp-json\/kinsta\/v1\/posts\/40920\/tree"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kinsta.com\/se\/wp-json\/wp\/v2\/media\/40921"}],"wp:attachment":[{"href":"https:\/\/kinsta.com\/se\/wp-json\/wp\/v2\/media?parent=40920"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kinsta.com\/se\/wp-json\/wp\/v2\/tags?post=40920"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/kinsta.com\/se\/wp-json\/wp\/v2\/topic?post=40920"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}