victorspringer / http-cache

High performance Golang HTTP middleware for server-side application layer caching, ideal for REST APIs
https://godoc.org/github.com/victorspringer/http-cache
MIT License
339 stars 63 forks source link

Additional functionality to Client #23

Open henhouse opened 5 days ago

henhouse commented 5 days ago

This PR contains two additional member functions for the cache client I made for my own purposes. Figured perhaps others may find them useful.

In some cases, you may want the cache client to propagate through the system to your handlers, or other business logic. In some cases such as PUTs, or DELETEs to your system on an object, you may want the option to tell the adapter to drop the cache for the requested endpoint so clients do not get served old data (unless they used an Expires header). The Drop function allows for this by not having to worry about the way in which the key is generated.

Secondly, you may want to apply a client option at a later time, or change it, which isn't currently possible to do. In my use case, I have a middleware for my router which will apply different TTLs for different endpoints, as well as optionally set the Expires header for them. I deference the client pointer, and apply a change to its options for the lifecycle of that request via the AddOptions func.