---
date: 2020-05-07T16:49:36+02:00
description: "Comment mettre en place du cache de contenu statique avec httpd & relayd, serveurs natifs sous OpenBSD"
draft: false
tags: ['relayd','Cache','httpd','HTTP','OpenBSD']
title: "Relayd : Mise en cache web pour httpd"
translationKey: "relayd-web-caching"
---
## Description
**OpenBSD** intègre par défaut dans le système de base, depuis 5.7 :
* un serveur web, nommé **httpd** - que j'ai présenté plus ou moins
succinctement {{< inside "web:httpd:httpd" ici >}}
* un serveur relay, nommé **relayd**
* Site web : https://bsd.plumbing/
* OpenBSD : **6.6, 6.7**
---
Le problème est que le serveur **httpd** n'est pas capable de gérer la
mise en cache de contenu statique.
Nous passons donc le relais au serveur **relayd** qui lui en est capable -
*par contre, il le fait de manière globale, {{< abbr çad "c'est-à-dire" >}}
non spécifique à un domaine en particulier* -
## Configuration
Les explications de configuration du serveur **httpd** ont été abordés
sur cet autre article : {{< inside2 a="httpd" l="web:httpd:relayd-headers-httpd" >}}
*(cf : {{< inside2 a="httpd-exemple" l="web:httpd:relayd-headers-httpd" t="l'exemple de configuration" >}})*
C'est exactement le même principe.
### relayd
* Le fichier de configuration est `/etc/relayd.conf`, par défaut.
Dans le contexte du protocole http, en lui donnant un nom - *le nom importe
peu, mais est réutilisé plus tard, dans le contexte des déclarations
de relais* :
* nous ciblons tous les fichiers contenant normalement du contenu statique,
en analysant les requêtes -
c'est généralement le cas pour les fichiers, tels que :
* les images (GIF, JPG, PNG, SVG)
* les fichiers CSS et JS,
* et les fichiers HTML, et XML (Atom, RSS, etc).
* nous leur appliquons une politique d'étiquetage, par l'usage de l'option `tag`.
*Là, encore le nom donné importe peu pourvu que vous réutilisiez le même
dans le cadre de l'entête `header` de réponse.*
* puis nous retournons une entête de réponse `Cache-Control` ciblant l'étiquette.
Puis nous appliquons le protocole http déclaré a un relay cible.
#### relayd : exemple
{{< code "web-httpd-relayd-cache-example" relayd >}}
## Documentations
### Manpages
* {{< man httpd 8 >}}, {{< man "httpd.conf" 5 >}}
### Autres documentations
* L'article de Xavier Cartron @prx : **"[Optimisation du cache et de la bande passante][1]"**
---
[1]: https://ybad.name/ah/doku.php/4-httpd/relayd#optimisation-du-cache-et-de-la-bande-passante