Serveur Apache HTTP Version 2.4

Apache > Serveur HTTP > Documentation > Version 2.4

# Le cache des objets partagés du serveur HTTP Apache

Le cache des objets partagés est un concept de partage de données de base entre tous les processus d'un serveur, sans se préoccuper du modèle de threads et de processus. On l'utilise lorsque les avantages apportés par le partage de données entre processus contrebalance la perte de performances consécutive à la communication interprocessus.

## Fournisseurs du cache d'objets partagés

Le cache d'objets partagés en tant que tel est une abstraction. Il est implémenté par quatre modules différents. Pour pouvoir utiliser le cache, un ou plusieurs de ces modules doivent être présents et configurés.

Le seul élément de configuration consiste à définir le fournisseur de cache à utiliser. Ceci est de la responsabilité des modules qui utilisent le cache, et pour cela, ils activent la sélection via des directives telles que `CacheSocache`, `AuthnCacheSOCache`, `SSLSessionCache`, et `SSLStaplingCache`.

Les fournisseurs actuellement disponibles sont :

"dbm" (`mod_socache_dbm`)
  Celui-ci utilise un fichier de hashage DBM. Le choix de la DBM sous-jacente peut être configurable si la version d'APR installée supporte de multiples implémentations de DBM.
"dc" (`mod_socache_dc`)
  Celui-ci utilise les bibliothèques de mise en cache de sessions distribuées distcache.
"memcache" (`mod_socache_memcache`)
  Celui-ci utilise le système à hautes performances de mise en cache d'objets de mémoire distribuée memcached.
"shmcb" (`mod_socache_shmcb`)
  Celui-ci utilise un tampon cyclique à hautes performances au sein d'un segment de mémoire partagée.

L'API fournit les fonctions suivantes :

const char *create(ap_socache_instance_t **instance, const char *arg, apr_pool_t *tmp, apr_pool_t *p);
  Cette fonction permet de créer un cache de session basé sur la chaîne de configuration spécifiée. Le pointeur d'instance renvoyé dans le paramètre instance sera passé comme premier argument des invocations subséquentes.
apr_status_t init(ap_socache_instance_t *instance, const char *cname, const struct ap_socache_hints *hints, server_rec *s, apr_pool_t *pool)
  Cette fonction permet d'initialiser le cache. L'argument cname doit avoir une longueur maximale de 16 caractères et permet d'identifier de manière unique l'utilisateur du cache au sein du serveur ; il est recommandé d'utiliser le nom du module, par exemple "mod_ssl-sess". Comme cette chaîne peut être utilisée au sein d'un système de fichiers, il est conseillé de n'utiliser que des caractères alphanumériques [a-z0-9_-]. Si l'argument hints n'est pas égal à NULL, il fournit un ensemble d'indications au fournisseur. La valeur retournée est le code d'erreur APR.
void destroy(ap_socache_instance_t *instance, server_rec *s)
  Cette fonction permet de détruire l'instance de cache spécifiée.
apr_status_t store(ap_socache_instance_t *instance, server_rec *s, const unsigned char *id, unsigned int idlen, apr_time_t expiry, unsigned char *data, unsigned int datalen, apr_pool_t *pool)
  Cette fonction permet de stocker un objet dans une instance de cache.
apr_status_t retrieve(ap_socache_instance_t *instance, server_rec *s, const unsigned char *id, unsigned int idlen, unsigned char *data, unsigned int *datalen, apr_pool_t *pool)
  Cette fonction permet d'extraire un objet du cache.
apr_status_t remove(ap_socache_instance_t *instance, server_rec *s, const unsigned char *id, unsigned int idlen, apr_pool_t *pool)
  Supprime un objet du cache.
void status(ap_socache_instance_t *instance, request_rec *r, int flags)
  Renvoie le statut d'une instance de cache à destination de mod_status.
apr_status_t iterate(ap_socache_instance_t *instance, server_rec *s, void *userctx, ap_socache_iterator_t *iterator, apr_pool_t *pool)
  Envoie tous les objets gardés en cache à une fonction pour traitement itératif.