URL: https://linuxfr.org/news/kisscache-un-service-de-mise-en-cache-kiss Title: KissCache un service de mise en cache KISS Authors: Rémi Duraffort palm123, Davy Defaud, Nils Ratusznik, Pierre Jarillon, patrick_g et Ysabeau Date: 2020-03-17T17:33:31+01:00 License: CC by-sa Tags: validation, cache, service et logiciel_libre Score: 20 [KissCache](https://git.lavasoftware.org/ivoire/kisscache/) est un serveur de cache sous licence MIT pensé suivant le principe KISS : _**K**eep **I**t **S**imple **S**tupid_. Contrairement à un serveur mandataire (_proxy_) transparent comme [Squid](https://www.squid-cache.org), pour utiliser KissCache, il faut (et suffit) de préfixer l’adresse URL voulue par celle de l’instance locale de KissCache. KissCache va alors télécharger en arrière‑plan le fichier demandé et le transmettre au client. Si plusieurs clients demandent le même fichier au même moment, celui‑ci ne sera téléchargé qu’une seule fois. KissCache n’étant pas transparent, il peut tout à fait mettre en cache des fichiers disponibles via HTTPS. ---- [Page du projet](https://git.lavasoftware.org/ivoire/kisscache/) [Instance de demo](https://cache.lavasoftware.org/) ---- Cas d’usage =========== Chez [Linaro](https://linaro.org), nous utilisons KissCache dans notre infrastructure de validation. En effet, les différents tests de validation vont tous utiliser les mêmes ressources (noyaux Linux, système de fichiers racine, dtb…) au même moment. Grâce à KissCache notre infrastructure de validation ne téléchargera chaque ressource qu’une seule fois, réduisant drastiquement la charge réseau. Nous avons longtemps utilisé squid, mais nous n’avons jamais réussi à le configurer pour : * télécharger une seule fois chaque fichier, même en cas de demande parallèle ; * mettre en cache les ressources disponibles via HTTPS. Utilisation =========== Pour installer une instance locale : ```shell git clone https://git.lavasoftware.org/ivoire/KissCache cd KissCache docker-compose build docker-compose up ``` L’instance sera disponible à l’adresse `http://localhost:8001`. Il suffit maintenant de préfixer les adresses URL par celle de notre instance KissCache : ```shell curl "http://localhost:8001/api/v1/fetch/?url=https://linuxfr.org" ``` KissCache va alors télécharger la page pour vous et vous la transmettre. Configuration ============= TTL --- Par défaut, KissCache va garder chaque fichier pendant dix jours. Cette valeur par défaut peut être changée par l’administrateur ou via le paramètre `ttl` dans l’adresse URL. ```shell curl "http://localhost:8001/api/v1/fetch/?ttl=1d&url=https://linuxfr.org" ``` Quota ----- Par défaut, KissCache n’utilisera que 2 Gio d’espace disque et retournera un code d’erreur 507 (_Insufficient Storage_) pour toute requête supplémentaire. Il est, évidemment, possible de changer cette valeur ou même de supprimer tout quota. Accès ----- L’accès à l’instance KissCache peut être restreint par adresse IP pour, par exemple, n’autoriser que les machines de validation. L’interface Web sera toujours accessible à tous, mais seules les adresses IP autorisées auront le droit d’utiliser le système de cache. Technique ========= KissCache est une application [Django](https://fr.wikipedia.org/wiki/Django_(framework)) qui utilise [Celery](http://www.celeryproject.org/) pour la récupération des ressources en arrière‑plan.