Apache 內(nèi)容動態(tài)緩沖模塊 mod_cache應(yīng)用
mod_cache是apache中基于URI鍵的內(nèi)容動態(tài)緩沖(內(nèi)存或磁盤)
從Apache2.2起,mod_cache和mod_file_cache將不再是試驗?zāi)K,它們已經(jīng)足夠穩(wěn)定,可以用于實際生產(chǎn)中了。這些緩沖體系提供了一個強有力的途徑來加速原始web服務(wù)器(origin webserver)和代理服務(wù)器(proxy)的HTTP處理速度。
mod_cache以及它的支持模塊mod_mem_cache和mod_disk_cache提供了智能的HTTP緩沖。內(nèi)容(content)本身被存儲在緩沖區(qū)中,mod_cache的目的在于管理控制內(nèi)容緩沖能力的各種HTTP頭和選項。它可以同時處理本地的內(nèi)容和代理的內(nèi)容。mod_cache被設(shè)計為同時針對簡單的和復(fù)雜的緩沖配置,以用于處理代理的內(nèi)容、動態(tài)的本地內(nèi)容、必須加速訪問的隨時間而改變本地文件。
另一方面,mod_file_cache實現(xiàn)了一個更基本的、但是在某些情況下更有效的緩沖形式,它避免了主動確保URL緩沖能力所需的維護復(fù)雜性,mod_file_cache通過提供文件句柄(file-handle)和內(nèi)存映射(memory-mapping)的技巧來維持一個自Apache最后一次啟動以來的文件緩沖區(qū)。同樣地,mod_file_cache的目標是改善不常修改的本地靜態(tài)文件的訪問時間。
由于mod_file_cache提供了一個相對簡單的緩沖實現(xiàn),除了CacheFile和MMapStatic文檔的特定段落之外,這篇指南的說明覆蓋了mod_cache的緩存體系結(jié)構(gòu)。
安裝編譯
為了能夠在apache使用cache ,需要在安裝編譯時加上如下參數(shù)。
--enable-cache --enable-disk-cache --enable-mem-cache --enable-file-cache
復(fù)制代碼 代碼如下:
[root@localhost httpd-2.4.1]# ./configure --prefix=/usr/local/apache2worker --enable-so --enable-cache --enable-disk-cache --enable-mem-cache --enable-file-cache
[root@localhost httpd-2.4.1]# make
[root@localhost httpd-2.4.1]# make install
兩種緩存模式:
1、mod_disk_cache
一個基于磁盤的存儲管理模塊。
2、mod_mem_cache
一個基于內(nèi)存的存儲管理模塊。mod_mem_cache可以被配置為兩種不同的操作模式:①緩存打開的文件描述符;②在堆(heap)上緩存對象。mod_mem_cache既可以用于緩存本地生成的內(nèi)容,也可以用于為反向代理模式下的mod_proxy緩存后端服務(wù)器輸出的內(nèi)容。
基于硬盤文件的緩存
基于硬盤文件存儲的緩存由mod_disk_cache 模塊實現(xiàn):
復(fù)制代碼 代碼如下:
CacheDefaultExpire 3600
CacheMaxExpire 86400
CacheLastModifiedFactor 0.1
CacheRoot /usr/local/apache/cache
CacheEnable disk /
CacheDirLevels 5
CacheDirLength 3
CacheMaxFileSize 10000000
CacheMinFileSize 1
拷貝上面內(nèi)容到apache 的 httpd.con文件中:在httpd.conf文件中搜索
#LoadModule cache_module modules/mod_cache.so // 去掉前面的# 號
使用磁盤文件緩存:
#LoadModule disk_cache_module modules/mod_disk_cache.so // 去掉前面的# 號
參數(shù)詳細含義如下:
CacheDefaultExpire:
設(shè)定緩存過期的時間(秒),默認是1小時,只有當緩存的文檔沒有設(shè)置過期時間或最后修改時間時這個指令才會生效
CacheMaxExpire:
失效周期的最大值,緩存實體的默認失效周期是一個小時(3600秒) ,這個默認值僅僅用在產(chǎn)生內(nèi)容的原始資源沒有明確指定失效時間或最后修改時間的情況下。
CacheLastModifiedFactor:
在事件的文件中不提供到期時間,指令指定的一個因素是用于生成截止日期。例如,如果該文件的最后修改10小時前, 系數(shù)為0.1,那么到期期間將設(shè)置為10 * 0.1 = 1小時,如果當前時間是下午3:00,然后計算到期時間為3:00+1小時,也就是下午4:00 ,如果到期時間大于CacheMaxExpire 的時間,那么后者優(yōu)先級高。
CacheRoot:
緩存文件所在的目錄,運行 Apache 的用戶(如daemon 或 nobody)要能對其進行讀寫,如果不清楚的話可以直接設(shè)置成 777,請手動建立該目錄并設(shè)置好訪問權(quán)限
CacheEnable:
啟用緩存,第1個參數(shù)是緩存類弄,這里當然是 disk了,第2個參數(shù)是緩存路徑,指的是 url 路徑,這里是緩存所有的東西,直接寫上"/"即可,如"/docs"則只緩存 /docs 下的所有文件
CacheDirLevels:
緩存目錄的深度,默認是3,這里設(shè)置為5
CacheDirLength:
緩存目錄名的字符長度,默認是4,這里設(shè)置為5
CacheMaxFileSize 和 CacheMaxFileSize:
緩存文件的最大值和最小值(byte),當超過這個范圍時將不再緩存,這里設(shè)置為 1M 和 10bytes
基于硬盤文件存儲的文件基本上就這些內(nèi)容,設(shè)置好后重啟 Apache 應(yīng)該就能使用了。一切正常的話,可以在緩存目錄下看到 Apache 自動建立的一些目錄和緩存的數(shù)據(jù)文件。
基于內(nèi)存的緩存
基于內(nèi)存的緩存主要由 mod_mem_cache 模塊實現(xiàn):
復(fù)制代碼 代碼如下:
CacheEnable mem /
MCacheSize 4096
MCacheMaxObjectCount 2000
MCacheMinObjectSize 1
MCacheMaxObjectSize 2048
安裝完成之后,需要搜索
LoadModule cache_module modules/mod_cache.so // 去掉前面的# 號
使用內(nèi)存文件緩存:
#LoadModule mem_cache_module modules/mod_mem_cache.so // 去掉前面的# 號
參數(shù)詳細含義如下:
CacheEnable:
啟用緩存,使用基于內(nèi)存的方式存儲
MCacheSize:
緩存數(shù)據(jù)最多能使用的內(nèi)存,單位是 kb,默認是100kb,這里設(shè)置為128M
MCacheMaxObjectCount:
在內(nèi)存中最多能存儲緩存對象的個數(shù),默認是1009,這里設(shè)置為20000
MCacheMinObjectSize:
單個緩存對象最小為10bytes,默認為1bytes
MCacheMaxObjectSize:
單個緩存對象最大為 1M,默認是10000bytes
保存重啟 Apache 基于內(nèi)存的緩存系統(tǒng)應(yīng)該就能生效了,根據(jù)需要可以使基于內(nèi)存的存儲或硬盤文件的存儲方式一起使用,只要指明不同的URL路徑即可。
版權(quán)聲明:
本站所有文章和圖片均來自用戶分享和網(wǎng)絡(luò)收集,文章和圖片版權(quán)歸原作者及原出處所有,僅供學(xué)習(xí)與參考,請勿用于商業(yè)用途,如果損害了您的權(quán)利,請聯(lián)系網(wǎng)站客服處理。