Considerations about Server-side Caching for .NET Applications

Implementing a good caching strategy is fundamental to achieve good performance. Besides that, it is not a trivial task.

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

Although I agree with Mr. Karlton, I firmly believe that life would be more comfortable if the only thing we need to take care when implementing some server-side caching were cached data invalidation.

There is no silver bullet

Unfortunately, there is no “one size fits all” strategy for server-side caching. Elton Stoneman recommends guideline criteria that can make the decision easier. Following his recommendations, we should consider:

  1. Cost – how computationally expensive or time-consuming is fetching the data from the owner.
  2. Breadth – how reusable is the cached data throughout the solution
  3. Longevity – how frequently the data needs to be invalidated
  4. Size – what is the size of the cached object

There are numerous options for implementing caching. For example:

  • In-Process and In-Memory caching
  • Out-of-Process caching
  • Caching using a Remote Store

Each option has good parts and bad parts. For instance, I have a client who was experiencing high CPU utilization rates because of the Garbage Collector. After a short investigation, we discovered that the cause was a naïve In-Process and In-Memory caching strategy.

Practical recommendations

Here are some reasonable suggestions for you when designing server-side caching:

  1. Define what you should and what you should not to cache.
  2. Assume that you will probably need more than one cache implementation for your application
  3. Consider the garbage collector impact before adopting an In-Process and In-Memory cache (it is easy to use, but potentially dangerous)
  4. Consider the network impact before caching bigger objects in remote stores
  5.  Measure, measure, measure

Compartilhe este insight:

Uma resposta

  1. what are the possible problems that would happen with the GC and what should we do to mitigate those problems when we implement in memomry cache?

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Elemar Júnior

Sou fundador e CEO da EximiaCo e atuo como tech trusted advisor ajudando diversas empresas a gerar mais resultados através da tecnologia.

Elemar Júnior

Sou fundador e CEO da EximiaCo e atuo como tech trusted advisor ajudando diversas empresas a gerar mais resultados através da tecnologia.

Mais insights para o seu negócio

Veja mais alguns estudos e reflexões que podem gerar alguns insights para o seu negócio:

I wrote this post in 2016. Unfortunately, I lost it when I “rebooted” my blog. Anyway, I have a good...
The following works as expected when building in Debug – the execution is done after three seconds. But, for some...
Não são raros os casos onde a distância entre um “desejo” e a “realização” é a “tentativa”. Ou seja, partindo...
Nesse ano, palestrei na APIX sobre microsserviços. Abaixo, registro em vídeo feito pela organização do evento. Comentários? Feedback?
In the previous post, I asked which function, in the following code, would fill the array with 1’s faster and...
Há alguns anos, cheguei, por acaso, a uma palestra do Simon Sinek no TED. Na época, ele ainda era um...
× Precisa de ajuda?