Кэш общих объектов в Apache HTTP Server
Кэш общих объектов позволяет совместно использовать простые данные всеми рабочими процессами сервера независимо от моделей потоков и процессов. Он используется в случаях, когда преимущества совместного использования данных между процессами перевешивают накладные расходы на межпроцессное взаимодействие.
Поставщики кэша общих объектов
Сам по себе кэш общих объектов представляет собой абстракцию. Его реализуют пять различных модулей. Для использования кэша должен быть установлен и настроен один или несколько таких модулей.
Необходимо лишь выбрать поставщика кэша. Это задача модулей, использующих кэш; они позволяют выбрать поставщика с помощью таких директив, как CacheSocache, AuthnCacheSOCache, SSLSessionCache и SSLStaplingCache.
В настоящее время доступны следующие поставщики:
- "dbm" (
mod_socache_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, будет передаваться первым аргументом при последующих вызовах.
- 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_-]. Если hints не равен NULL, он задаёт набор подсказок для поставщика. Возвращает код ошибки APR.
- 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