Din IP-adress: Okänd · Din status: SkyddadOskyddadOkänd

Hoppa till huvudinnehåll

Vad är cache och hur fungerar det?

Cacheminnet är ett väsentligt verktyg för att förbättra prestandan inom många olika system. Utan en cache i webbläsaren hade man behövt slösa värdefulla resurser på att ladda om innehåll man redan hämtat. Även om ett cacheminne generellt sett förbättrar surfupplevelsen så kan det finnas tillfällen då man vill tömma det, t.ex. på en iPhone för att garantera bästa prestanda. I följande artikel kommer vi att ge en övergripande bild av vad ett cacheminne är och hur det används. Vi kommer även kort gå igenom hur man rensar det.

Vad är cache och hur fungerar det?

Vad är cache?

En cache är en inbyggd hårdvaru- eller mjukvarukomponent som temporärt lagrar data som används frekvent. En cache används i många olika typer av system. Du hittar olika former av cacheminnen i bland annat webbläsare, hårddiskar och processorer. Oavsett sammanhang är grundprincipen densamma – caching är ett knep för att öka systemets effektivitet genom att temporärt lagra ofta hämtad data på en plats där hämtning är mindre kostsam.

En webbläsare lagrar till exempel nyligen besökta hemsidor i sin cache, vilket innebär att laddning går snabbare vid nästa besök. För att åstadkomma detta laddas sidan ner och sparas i primär- eller sekundärminnet. Som en följd av detta behöver inte tid och bandbredd slösas på att genomföra samma nedladdning två gånger. Vanligtvis lagras datan i applikationens minne, men det finns även andra lösningar. Man kan till exempel använda en cacheserver eller cacheproxy, vilket är en server som specifikt konfigurerats för att hantera cachelagring.

I dagsläget är många hemsidor fyllda med multimedia (bilder, videor, etc) av olika slag, vilket gör cachelagring på nätet viktigare än någonsin. När du navigerar NordVPN:s webbplats behöver du till exempel inte ladda ned loggan vid varje sidbyte – det hade varit ganska ineffektivt. För att spara på resurser lagras den istället i cacheminnet vid ditt första besök, vilket gör att du fritt kan surfa utan att behöva utföra onödiga nedladdningar. Det kanske inte låter som ett stort problem, men det räcker med att du utför ett dussin sidbyten för att det ska bli en märkbar mängd data som går åt trots att resursen i sig – logotypen i detta fallet – inte är speciellt stor.

Hur fungerar ett cacheminne?

Det första steget ett program eller enhet tar när det försöker komma åt data är att kontrollera cacheminnet. Om datan finns får man en träff, en så kallad cache hit. Här siktar man på att ha så hög ratio av träffar som möjligt, känt som cache hit rate. Ju fler träffar man får, desto mindre behöver man utföra dyrabara hämtningar av data från ursprungskällan.

I webbsammanhang betyder detta att man vid en cache hit inte behöver hämta om sidan. Om man däremot inte har rätt data i cacheminnet får man en cache miss, vilket, beroende på protokoll och vad det är för data, initierar hämtning från platsen datan först kom från och även kopierar den till cacheminnet för framtida användning. Exakt hur detta går till varierar, men detta illustrerar hur en cache fungerar rent generellt.

Vad exakt gör cachen? Majoriteten av webbläsare, till exempel Chrome, Firefox och Safari, använder cachelagring för att förbättra prestandan på webbsidor som har många besökare. Det är ett koncept som även sträcker sig till mobila enheter, som t.ex. iPhones. När en användare besöker en webbsida lagras relevanta filer i webbläsarens cacheminne. När saker och ting ligger i cacheminnet behöver man sedan inte kontakta webbservern, vilket leder till betydligt snabbare och mer resurseffektivt surfande.

Fördelar med cachelagring

Den huvudsakliga fördelen med att använda cachelagring är den ökade hastigheten. Genom att använda cacheminnet kan hårdvara, operativsystemet och program snabbare hämta data. Vad gäller webbläsaren sparar du inte bara tid, utan också resurser. Det är inte alltid man har oändligt med surfdata och med cachelagring slipper man slöseri. Cachelagring är en metod som säkerställer att du inte behöver ladda ner samma information fler än en gång. Om relevanta data redan finns på din enhet finns det ju ingen anledning att hämta dem igen.

När man tänker på det är det en ganska uppenbar optimering. Låt oss säga att du går till en annan artikel här på NordVPN:s hemsida. Då kommer du bara behöva ladda ned vad som är unikt för just den artikeln, det vill säga bilder och text (vilket också cachelagras om lämpligt). Sidans struktur, funktionalitet och logotyp är exempel på saker som du inte behöver ladda ned igen tack vare cachelagring.

Nackdelar med cachelagring

Trots att syftet med cachelagring är att se till så att saker och ting går snabbare så kan det också ha negativa effekter. Den självklaraste är att det tar upp lagringsutrymme på enheten, men det finns även vissa andra saker att tänka på.

Användning av gamla data

Cachelagring använder gamla data och kan därigenom hindra ett program eller webbplats från att använda en nyare version. Om hemsidan till exempel uppdaterat en bild så kan cachelagring hindra denna från att laddas ner. Självklart finns det metoder för att motverka detta, men det förekommer ändå tillräckligt ofta för att utgöra ett problem.

Integritet och säkerhet

En cache har som uppgift att automatiskt lagra data relaterade till de webbplatser du besöker. Det är en bakgrundsprocess som inte alla användare är medvetna om. Insamlingen av data sker därför i många fall utan användarens samtycke, vilket är ett stort problem för den personliga integriteten. Dessutom kan skadlig programvara gömma sig i cacheminnet och kan, trots att cachelagring är temporär, befinna sig där under en längre period. En hacker kan använda cachen för att på detta och andra sätt få åtkomst till konton och känslig personlig information, så det är viktigt att rensa den hyfsat regelbundet.

Typer av cache

Som vi nämnt tidigare kan en cache användas i en rad olika syften. Naturligtvis innebär detta att det genom åren utvecklats olika tekniker för att få optimal prestanda i diverse sammanhang. Nedan går vi igenom några av de vanligaste.

RAM-cache

RAM-cache, även känt som memory cache, är ett segment av RAM-minnet som åsidosatts i för att agera som cache. Begreppet syftar oftast på processorns användning av RAM-minne som cache, men det kan även syfta på cachingtekniker rent generellt. En RAM-baserad cache är betydligt mer effektiv än en hårddiskbaserad eftersom RAM-minnet är betydligt snabbare.

När ett program försöker hämta data, till exempel från en databas, kontrollerar det först om den eftersökta informationen redan finns i cacheminnet. Om så är fallet hämtar programmet data från cacheminnet och undviker därigenom en långsammare åtkomst till databasen. Om de önskade uppgifterna inte finns i cacheminnet hämtar programmet dem från originalkällan. Den fungerar alltså som vilken annan cache som helst.

Eftersom en RAM-cache har begränsad kapacitet krävs det strategier för att välja när, var och hur data ska ersättas när cachen är full. Här använder man olika policies, vilket vi går igenom utförligare nedan. Cachens prestanda kommer till stor del avgöras av den specifika implementationen, så det är viktigt att känna till grunderna.

Diskcache

Diskcachen gör det lättare för hårddisken att snabbt hämta information. Den lagrar inte bara data som nyligen lästs, utan försöker även förutsäga vilken intilliggande data som sannolikt kommer att läsas inom en snar framtid. Man kan till exempel utföra denna sannolikhetskalkyl genom att avläsa användningsfrekvens av specifika block av data – det vill säga data som ofta används tillsammans. Det konkreta resultatet av detta är att läs- och skrivhuvudet på hårddisken inte behöver färdas lika långt. Disken behöver heller inte nå samma höga hastighet. Kort sagt, det går snabbare!

Webbläsarcache

Webbläsarcache, även känt som web cache eller browser cache, avser en tillfällig lagringsplats antingen i minnet eller på hårddisken som innehåller nyligen hämtade hemsidor. När du surfar på nätet kan du på detta sätt besöka samma hemsidor igen utan att behöva ladda ner dem på nytt. För att säkerställa att innehållet är aktuellt jämför webbläsaren den cachade sidans associerade tidsstämpel mot den aktuella webbsidan. Om sidan är oförändrad visas den cachade versionen direkt utan behov av ytterligare nedladdning, men om ändringar har gjorts hämtas den uppdaterade sidan. Denna sida lagras därefter i cachen för framtida användning.

Man kan även ha en server som automatiskt laddar ner cachade varianter av en hemsida. Detta är en bra lösning om man har ett större nätverk där många måste komma åt samma webbresurs.

App-cache

Applikationer på datorn och i mobilen innehåller sparad data av olika slag. Här är det viktigt att särskilja på de olika typerna av data – allt lagras nämligen inte i cachen. Allt fler tjänster lagrar numera väsentlig information i databaser och inte lokalt i mobilen via en cache. Appen kanske cachelagrar saker som sökhistorik, men annan information är oftast kopplade till ett användarkonto. Det är inte alltid lätt att veta och det varierar från app till app. Du kan dock vara ganska säker på att kritisk information som användarpreferenser och inloggningsuppgifter lagras i en separat databas. Det hade varit alldeles för osäkert att ha den informationen lokalt.

Ersättningspolicy

För den något mer tekniskt intresserade beskriver vi här kort några vanliga cachepolicies som används inom utvecklingen av cachesystem. Om du vill ha en mer ingående beskrivning finns det mycket information om detta på nätet som är betydligt utförligare. Men låt oss börja med ersättningspolicies, vilket beskriver hur cachen hanterar data om den är full.

Least frequently used (LFU)

Least Frequently Used, oftast förkortat till LFU, är en cachepolicy som kontrollerar hur ofta ett minnesblock hämtas. När cachen är full måste man på något sätt avgöra vad som ska tas bort (för att göra plats för nya minnesblock) och med LFU tar man helt enkelt bort det blocket av minne som används minst (eller som har minst antal referenser till sig). Det kanske är svårt att tänka sig en mer effektiv metod, men vad som lämpar sig beror på vilket sammanhang cachen används i.

Least recently used (LRU)

Least Recently Used, ofta förkortat till LRU, är en ersättningspolicy där det första objektet som användes också är det som först tas bort. För att man ska kunna implementera detta effektivt måste man utföra kontinuerlig mätning av tid, vilket potentiellt kan vara resurskrävande. För att lösa tidshanteringen använder man speciella bits som håller koll på tiderna.

Most recently used (MRU)

Till skillnad från LRU prioriterar MRU, det vill säga Most Recently Used eliminering av de objekt som användes senast. När man jämför olika cachers prestanda mot varandra är det viktigaste måttet antalet cache hits och cache misses. Ju oftare data man letar efter finns i cacheminnet, desto bättre. MRU presterar faktiskt bättre än LRU i de fall då åtkomst av objekt ökar med tiden. Det kanske inte är intuitivt, men LRU är faktiskt inte alltid den bästa metoden.

Skrivpolicy

När man dessutom använder en cache för att skriva data, måste denna data till slut skrivas tillbaka till en lagringsplats utanför cachen. Hur detta sker styrs av skrivpolicyn som används. Här går vi igenom några av de mest grundläggande.

Write-back

Denna policy innebär att data först enbart skrivs till cacheminnet. Man skjuter upp skrivandet från cachen till ursprungsplatsen tills det att det modifierade innehållet håller på att ersättas av ett nytt datablock.

Write-through

Med en write-through policy uppdateras data samtidigt i både cache- och huvudminnet. Denna metod är simpel och mer pålitlig än write-back. Den är särskilt lämpad för situationer där frekventa skrivningar till cacheminnet är ovanliga. Detta tillvägagångssätt ger fördelar när det gäller att återställa förlorad data. Om man till exempel vet att man ofta råkar ut för strömavbrott är det bättre att använda denna metod.

Vad händer om man rensar cachedata?

Vad innebär det att rensa en cache? Att rensa cacheminnet innebär att du raderar alla data som för tillfället är lagrade där. Om programmet du använder börjar krascha eller beter sig oväntat på andra sätt kan det vara en bra idé att rensa cacheminnet. Som tumregel är det en bra idé att göra en rensning ungefär en gång i månaden. Man vill inte göra det för ofta heller – då kommer programmet helt plötsligt att bli mycket långsammare.

Hur man rensar sin cache

Exakt hur du går tillväga för att rensa cacheminnet varierar beroende på program och typ av cacheminne. Som vi nämnt finns det många olika typer av cacheminnen som har vitt skilda funktioner. Om du vill ha en heltäckande guide för hur du gör för att rensa en cache i webbläsaren kan du läsa mer här på vår hemsida. Vi går igenom exakt hur processen ser ut för varje webbläsare. Det är viktigt att förstå skillnaden mellan cache och cookies, men de är ungefär lika lätta att rensa. Läs mer i vår guide här: hur tar man bort cookies?