https://github.com/cyrix126/mnemosyne
Mnemosyne is a http request caching in memory proxy API.
https://github.com/cyrix126/mnemosyne
api-rest caching-proxy http-caching openapi rust server
Last synced: 3 months ago
JSON representation
Mnemosyne is a http request caching in memory proxy API.
- Host: GitHub
- URL: https://github.com/cyrix126/mnemosyne
- Owner: Cyrix126
- License: gpl-3.0
- Created: 2024-06-11T13:21:08.000Z (12 months ago)
- Default Branch: main
- Last Pushed: 2024-07-12T07:16:18.000Z (11 months ago)
- Last Synced: 2024-07-12T16:55:49.810Z (11 months ago)
- Topics: api-rest, caching-proxy, http-caching, openapi, rust, server
- Language: Rust
- Homepage:
- Size: 67.4 KB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Mnemosyne
Mnemosyne is a http request caching in memory proxy API.
## Status of development
All features are present, but the software is very new and not tested for production.
### TODO
- [x] allows to limit cache by size
- [x] organize code in modules
- [x] tracing
- [x] tests
- [x] documentation
- [ ] benchmarks/optimizations
## Description
Mnemosyne is placed between your load balancer (ex: nginx) and your server applications that needs their requests to be cached. It will optimize the resources by caching responses and adding caching headers that will ask clients to re-use the cache locally. The cache will be expired based on activity and from manual invalidation.
## Objectives
This software is meant to add caching capability to your backend service without adding any code and be agnostic about them.
It must give a very good performance for common usages of websites, but will sacrifice small performance for modularity and easier maintenance if needed.
## Features
- configuration file
- multiple backend service possible, based on HOST header to decide where to redirect.
- well thought expiration of cache (thanks [moka](https://github.com/moka-rs/moka))
- add etag header
- return non modified status when client has a valid etag
- takes into account Vary header from server (will save different cache object for every variation of the specified header)
- let backend service decide his own caching controls.
- admin API
- update rules of redirection without restart or loosing current cache.
- cache invalidation
- update fallback
- get raw cache content
- get stats of cache
## Usage
Configure your reverse proxy to redirect requests you want to cache on Mnemosyne.
**Warning**: make sure your reverse proxy does not apply unwanted modification on HOST header of your requests.
Configure at start the HOST value that will trigger a redirection to a backend service or use the administrator API of Mnemosyne to configure it at runtime.