My Authors
Read all threads
Caching is one of those techniques that can completely change how your application (website) feels when used.

💼 As a developer, you want to understand caching and incorporate it into your projects whenever possible.

This is a thread 🧵about caching.

⬇️
📘 In short: caching is fast storage.

You want to keep often-used data in a place where you can access it much faster than its source.

For example, instead of downloading data from the server over and over again, you can store it in memory and access it from there.

👇
To keep the cache from growing indefinitely, you want to maintain the most relevant entries cached and evict everything else.

There are multiple strategies to accomplish this. Each one makes a different decision about which items to remove and which to keep.

👇
Here are 8 popular caching strategies:

▫️First-in, first-out (FIFO): Evicts the oldest entry

▫️Last-in, first-out (LIFO): Evicts the newest entry

▫️Least Recently Used (LRU): Evicts the least recently used entry

👇
▫️Most Recently Used (MRU): Evicts the most recently used entry

▫️Random replacement (RR): Evicts a random entry

▫️Least-frequently used (LFU): Evicts the entry that has been used the least

👇
▫️Least frequent recently used (LFRU): Combines LRU with LFU

▫️Time aware least recently used (TLRU): Combines LRU with expiration for each entry

👇
💼 Deciding when to invalidate entries in your cache is a hard problem to solve.

For example: if you are going to expire entries after a certain time, how much time is adequate? What happens if the content is updated before?

A lot of creativity needed here!

👇
There’s a famous saying:

There are only two hard things in Computer Science: cache invalidation and naming things. — Phil Karlton

So yeah, getting caching right is not easy.

But it’s well worth it!

👇
Finally, for the Python 🐍 developers out there, here are some resources about caching that you should check out:

* functors.lru_cache decorator
* cachetools library
* Beaker library

JavaScript developers, what libraries do you use to cache stuff?
Missing some Tweet in this thread? You can try to force a refresh.

Keep Current with Santiago ☉

Profile picture

Stay in touch and get notified when new unrolls are available from this author!

Read all threads

This Thread may be Removed Anytime!

Twitter may remove this content at anytime, convert it as a PDF, save and print for later use!

Try unrolling a thread yourself!

how to unroll video

1) Follow Thread Reader App on Twitter so you can easily mention us!

2) Go to a Twitter thread (series of Tweets by the same owner) and mention us with a keyword "unroll" @threadreaderapp unroll

You can practice here first or read more on our help page!

Follow Us on Twitter!

Did Thread Reader help you today?

Support us! We are indie developers!


This site is made by just two indie developers on a laptop doing marketing, support and development! Read more about the story.

Become a Premium Member ($3.00/month or $30.00/year) and get exclusive features!

Become Premium

Too expensive? Make a small donation by buying us coffee ($5) or help with server cost ($10)

Donate via Paypal Become our Patreon

Thank you for your support!