There are currently 9 packages available - have a look here.
CacheCow.Server
This is the server side component of CacheCow which works as a DelegatingHandler and looks at the request/response and implements server-side caching according to HTTP spec. This includes inspecting headers, generating ETag and adding headers, responding to conditional GET and PUT, etc. The idea is that you should only have to declare your caching strategy against the handler and it should take care of the rest.
Storing ETag and other important headers such as LatsModified (which I collectively call Cache Metadata) against the resources requires a persistent or in-memory storage. CacheCow.Server by default comes with an In-Memory implementation of the storage. However, these other storages are currently available:
- MongoDb
- RavenDB
- SQL Server
CacheCow.Client
As part of ASP.NET Web API, a new shiny HttpClient has been developed which uses the same HTTP pipeline model as the server. While you might be consuming Web API using JavaScript on the browser, I see that more often than not, this will be consumed by HttpClient on the server as more and more APIs move to Web API from WCF and classic (ASMX) web services.
As such, I believe the client side story of the caching is an important - and somehow neglected - one. So you will find a client-side CachingHandler in CacheCow.Client. Now on the client instead of storing Cache Metadata, we need to store actual responses. There are even more storage implementations available on the client:
- Redis
- File-based storage
- SQL Server
- Memcached
Future roadmap
There is a lot of work there to be done. [If you would like to contribute, please let me know]
Basically the plan is to implement below in the next 4-6 months:
- Turning all storage API to asynchronous. So IEntityTageStore and ICacheStore will turn completely async.
- Implementing total and per-domain storage quota for the CacheCow.Client. Part of this work has already been done but need to be consolidated.
- Implement all storages for both client and server:
- Server-side:
- Redis
- Memcached
- Client-side
- RavenDb
- MongoDB
- Implement resource organisation so declaring cache plan for a resource is easy (currently is not)
So watch this space. If you would like to contribute, please message me in twitter.
No comments:
Post a Comment
Note: only a member of this blog may post a comment.