Кэширование общих объектов в Apache HTTP Server
Кэширование общих объектов предоставляет способ обмена простыми данными между всеми рабочими процессами сервера, независимо от моделей потоков и процессов. Оно используется в тех случаях, когда преимущества обмена данными между процессами перевешивают накладные расходы межпроцессного взаимодействия.
Поставщики кэша общих объектов
Сам кэш общих объектов является абстракцией. Его реализуют пять различных модулей. Для использования кэша необходимо наличие и конфигурация одного или нескольких из этих модулей.
Единственная необходимая конфигурация — выбор поставщика кэша. Это ответственность модулей, использующих кэш, и они позволяют выбрать поставщика с помощью директив, таких как CacheSocache, AuthnCacheSOCache, SSLSessionCache, и SSLStaplingCache.
В настоящее время доступны следующие поставщики:
- "dbm" (
mod_socache_dbm) - Использует файл хешей DBM. Выбор используемой подсистемы DBM может быть настраиваемым, если установленная версия APR поддерживает несколько реализаций DBM.
- "dc" (
mod_socache_dc) - Использует библиотеки распределённого кэширования сессий distcache.
- "memcache" (
mod_socache_memcache) - Использует высокопроизводительную, распределённую систему кэширования объектов памяти memcached.
- "redis" (
mod_socache_redis) - Использует высокопроизводительную, распределённую систему кэширования объектов памяти Redis.
- "shmcb" (
mod_socache_shmcb) - Использует высокопроизводительную циклическую буферную память в сегменте общей памяти.
API предоставляет следующие функции:
- const char *create(ap_socache_instance_t **instance, const char *arg, apr_pool_t *tmp, apr_pool_t *p);
- Создаёт кэш сессий на основе заданной строки конфигурации. Указатель instance, возвращаемый в параметре instance, будет передаваться в качестве первого аргумента последующим вызовам.
- 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)
- Инициализирует кэш. cname должен иметь максимальную длину 16 символов и уникально определяет потребителя кэша на сервере; рекомендуется использовать имя модуля, например "mod_ssl-sess". Эта строка может использоваться в пути к файловой системе, поэтому рекомендуется использовать только символы [a-z0-9_-].
- void destroy(ap_socache_instance_t *instance, server_rec *s)
- Уничтожает заданный объект экземпляра кэша.
- 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)
- Сохраняет объект в экземпляре кэша.
- 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)
- Извлекает кэшированный объект.
- apr_status_t remove(ap_socache_instance_t *instance, server_rec *s, const unsigned char *id, unsigned int idlen, apr_pool_t *pool)
- Удаляет объект из кэша.
- void status(ap_socache_instance_t *instance, request_rec *r, int flags)
- Выводит состояние экземпляра кэша для 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)
- Выводит все кэшированные объекты через обратный вызов итератора.
© 2018 The Apache Software Foundation
Licensed under the Apache License, Version 2.0.
https://httpd.apache.org/docs/2.4/en/socache.html