caddyserver / cache-handler

Distributed HTTP caching module for Caddy
Apache License 2.0
238 stars 18 forks source link

Design/spec discussion #1

Open mholt opened 4 years ago

mholt commented 4 years ago

Currently, this handler works in the most basic sense, but it has a lot of potential and needs some TLC before being truly production-ready. Right now, it's a great foundation to build from.

Since this module was recently spliced out of Caddy's standard modules before the RC1 tag, previous discussions can be found here:

Plus the third-party v1 implementation of a cache middleware: https://github.com/nicolasazrak/caddy-cache

With the context from those previous discussions in mind, where should we take this project? Who will take the lead in developing it?

sillygod commented 4 years ago

Hi, recently, I hack and migrate https://github.com/nicolasazrak/caddy-cache to be consistent with caddy 2 architecture and make it supports in-memory backend.

Here is the repo: https://github.com/sillygod/cdp-cache. Actually, I am not familiar with the mechanism of cache-control (there are so many RFC about it) and not totally understand the structure of caddy2. I have just touched caddy2 and https://github.com/nicolasazrak/caddy-cache for one week and more. Therefore, the code of my repo may be a little messy and not use caddy2's APIs so precisely.

Just to clarify, I just want to share my result and I hope this repo can give other people some inspiration or someone can give me any advice to help the cache function more stable and production-ready.

Finally, thank for the awesome work of caddy2 and nicolasazrak's https://github.com/nicolasazrak/caddy-cache

mholt commented 4 years ago

Cool. It would probably be best if we have just one cache handler for v2 rather than multiple, unless they do very different things / have very different approaches that would benefit different users.

But I'm thinking it's quite possible to have just one and satisfy most use cases.

Any interest in combining the two? This cache handler is a distributed cache which is important for a lot of customers I've talked to: they have too much to cache to fit in memory on one machine, and they have a cluster of Caddy instances deployed, so the distributed cache is essential: it just needs some finishing.

sillygod commented 4 years ago

I agree with you on this point. I would like to combine these two repos. However, I am working on my repo to support my company's requirements so It will be changed frequently (ex. the architecture, features, and more). That means it not stable now.

The advantage to keep working on my repo is I can totally control it :) Maybe it's not a good timing to merge them. :(

mholt commented 4 years ago

@abiosoft If you're interested in working on this repo, consider checking @sillygod's implementation for ideas and real business requirements - might be helpful.

urlund commented 3 years ago

Hi, I'm new to Caddy, and I really love the idea of a cache module build in, and just wanted to give you guys some 👏 Hopefully someone will take lead, and get this project running 💪

francislavoie commented 3 years ago

@urlund just in case it wasn't clear, this module is functional, just not feature complete. You can use it right now! See link to an example in the README: https://github.com/caddyserver/cache-handler#example-configuration

urlund commented 3 years ago

@francislavoie I see, may I suggest that you prioritize a "purge" feature then? :)