<-
Apache > HTTP 伺服器 > 文件 > 2.4 版

Apache HTTP 伺服器中的共享物件快取

可用語言:  en  |  fr 

共享物件快取提供一種方法,可以跨伺服器的所有執行緒共用簡單資料,而不論 執行緒和程序模型為何。它用於跨程序共用資料的優點大於跨程序通訊的效能開銷時。

top

共享物件快取供應器

共享物件快取本身是一種抽象。有五種不同的模組會實作它。如要使用快取,必須存在這些模組中的其中一個或多個,並且經過設定。

唯一需要的設定是選擇要使用哪個快取供應器。這是使用快取模組的責任,它們會使用指令啟用選擇,例如 CacheSocacheAuthnCacheSOCacheSSLSessionCacheSSLStaplingCache

目前可用的供應器為

"dbm" (mod_socache_dbm)
這會使用 DBM hash 檔。如果安裝的 APR 版本支援多個 DBM 實作,則可能能夠設定使用的基礎 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 指標會做為後續呼叫的第一個參數。
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)
透過迭代器回呼傾印所有快取的物件。

可用語言:  en  |  fr 

top

Comments

Notice
這不是 Q&A 區。請將這類意見回饋針對如何改善文件或伺服器提出,而我們的管理員可能會移除已實作或被視為無效/離題的意見回饋。關於如何管理 Apache HTTP Server 的疑問,請轉至我們的 IRC 頻道 #httpd(在 Libera.chat 上)或傳送給我們的 郵件列表