ASP Core Output Cache with Memory Cache and Redis Cache support
The project contains three types of caching attributes which allow you to add cache to your web core application in a super easy way.
- ResponseEtagCache //cache only on client side
- MemoryEtagCache //cache in memory and if you choose also on client side
- RedisEtagCache //cache in a distributed cache and on client side, the sample web application contain an example with Redis
To use one of cachers, you just have to add an atriibute to a controller method [MemoryEtagCache(ClientSideDuration = 90, ServerSideDuration = 900)]
All cachers and middleware support ETags -in other words, the server will return status code 304 instead of data each time when the client and server ETags match. If you are wondering right now how ETag works... When you request some data from a server for the first time the server return data with generated ETag, when you request the same data in the future, your browser will send previously received ETag. Based on this server "knows" when the client needs new data and when the status 304 is enough. Here you can find some further information what is an eTag https://en.wikipedia.org/wiki/HTTP_ETag
To use caching attribute it's required to add caching middleware. The purpose of CacheETagMiddleware is to intercept request, and provide custom stream to which further middlewares could write (and read). app.UseMiddleware();
I plan to add installation by bower and better documentation in the next few days. If you have any questions/suggestions don't hesitate to text me.
If this project help you reduce time to develop, you can give me a cup of coffee :)