在apache中是支持一個mod_cache模板的,只有打開mod_cache模塊之后我們才可以使用apache緩存,mod_cache開啟后可使用兩種緩存方式,一種是基于硬盤文件的緩存(mod_disk_cache ),另一種是基于內存的緩存(mod_mem_cache ),下面我來給大家介紹。
默認情況下,apache安裝完以后,是不允許被cache的。如果外接了cache或squid服務器要求進行web加速的話,就需要在htttpd.conf里進行設置,當然前提是在安裝apache的時候要激活mod_cache的模塊
以下簡單介紹一下安裝與配置的步驟:
1. apache版本:httpd-2.0.49.tar.gz
2. 安裝httpd-2.0.49.tar.gz:
- # tar –zxvf httpd-2.0.49.tar.gz
- # cd httpd-2.0.49
- #./configure --enable-cache --enable-disk-cache --enable-mem-cache
- #mke
- #make install
3. 檢驗是否安裝了cache模塊
- /usr/local/apache2/bin/apachectl –l
如果有mod_cache.c
- mod_disk_cache.c
- mod_mem_cache.c
這3個模塊,說明該apache可以支持cache了
4.更改httpd.conf的設置
- vi /usr/local/apache2/conf/httpd.conf
在末尾添加上:
- CacheForceCompletion 100
- CacheDefaultExpire 3600
- CacheMaxExpire 86400
- CacheLastModifiedFactor 0.1
5.設置虛擬目錄
然后保存退出。啟動apache
1、基于硬盤文件的緩存
基于硬盤文件存儲的緩存由 mod_disk_cache 模塊實現,先看個簡單的配置例子:
- <IfModule mod_cache.c>
- CacheDefaultExpire 86400
- <IfModule mod_disk_cache.c>
- CacheEnable disk /
- CacheRoot /tmp/apacheCache
- CacheDirLevels 5
- CacheDirLength 5
- CacheMaxFileSize 1048576
- CacheMinFileSize 10
- </IfModule>
- </IfModule>
把上面的配置加到 Apache 的 httpd.conf 文件中,如果緩存相關的模塊都已經編譯進了 Apache 的核心,則無需加載模塊,直接就能使用上面的指令。指令的詳細說明如下:
CacheDefaultExpire:設定緩存過期的時間(秒),默認是1小時,只有當緩存的文檔沒有設置過期時間或最后修改時間時這個指令才會生效
CacheEnable:啟用緩存,第1個參數是緩存類弄,這里當然是 disk了,第2個參數是緩存路徑,指的是 url 路徑,這里是緩存所有的東西,直接寫上“/”即可,如“/docs”則只緩存 /docs 下的所有文件
CacheRoot:緩存文件所在的目錄,運行 Apache 的用戶(如daemon 或 nobody)要能對其進行讀寫,如果不清楚的話可以直接設置成 777,請手動建立該目錄并設置好訪問權限
CacheDirLevels:緩存目錄的深度,默認是3,這里設置為5
CacheDirLength:緩存目錄名的字符長度,默認是4,這里設置為5
CacheMaxFileSize 和 CacheMaxFileSize:緩存文件的最大值和最小值(byte),當超過這個范圍時將不再緩存,這里設置為 1M 和 10bytes
基于硬盤文件存儲的文件基本上就這些內容,設置好后重啟 Apache 應該就能使用了。一切正常的話,可以在緩存目錄下看到 Apache 自動建立的一些目錄和緩存的數據文件。
2、基于內存的緩存
基于內存的緩存主要由 mod_mem_cache 模塊實現,還是看個簡單的配置吧,這樣比較直觀:-)
- <IfModule mod_cache.c>
- <IfModule mod_mem_cache.c>
- CacheEnable mem /
- MCacheMaxObjectCount 20000
- MCacheMaxObjectSize 1048576
- MCacheMaxStreamingBuffer 65536
- MCacheMinObjectSize 10
- MCacheRemovalAlgorithm GDSF
- MCacheSize 131072
- </IfModule>
- </IfModule>
簡單說一下上面一些指令的意思:
CacheEnable:啟用緩存,使用基于內存的方式存儲
MCacheMaxObjectCount:在內存中最多能存儲緩存對象的個數,默認是1009,這里設置為20000
MCacheMaxObjectSize:單個緩存對象最大為 1M,默認是10000bytes
MCacheMaxStreamingBuffer:在緩沖區最多能夠放置多少的將要被緩存對象的尺寸,這里設置為 65536,該值通常小于100000或 MCacheMaxObjectSize 設置的值
MCacheMinObjectSize:單個緩存對象最小為10bytes,默認為1bytes
MCacheRemovalAlgorithm:清除緩存所使用的算法,默認是 GDSF,還有一個是LRU,可以查一下 Apache 的官方文檔,上面有些介紹
MCacheSize:緩存數據最多能使用的內存,單位是 kb,默認是100kb,這里設置為128M
保存重啟 Apache 基于內存的緩存系統應該就能生效了,根據需要可以使基于內存的存儲或硬盤文件的存儲方式一起使用,只要指明不同的URL路徑即可。
新聞熱點
疑難解答