Apache 模塊 mod_cache應用


 

mod_cacheapache基於URI鍵的內容動態緩沖(內存或磁盤)

 

 

  Apache2.2起,mod_cache和mod_file_cache將不再是試驗模塊,它們已經足夠穩定,可以用於實際生產中了。這些緩沖體系提供了一個強有力的途徑來加速原始web服務器(origin webserver)和代理服務器(proxy)HTTP處理速度。

  mod_cache以及它的支持模塊mod_mem_cache和mod_disk_cache提供了智能的HTTP緩沖。內容(content)本身被存儲在緩沖區中,mod_cache的目的在於管理控制內容緩沖能力的各種HTTP頭和選項。它可以同時處理本地的內容和代理的內容。mod_cache被設計為同時針對簡單的和復雜的緩沖配置,以用於處理代理的內容、動態的本地內容、必須加速訪問的隨時間而改變本地文件。

  另一方面,mod_file_cache實現了一個更基本的、但是在某些情況下更有效的緩沖形式,它避免了主動確保URL緩沖能力所需的維護復雜性,mod_file_cache通過提供文件句柄(file-handle)和內存映射(memory-mapping)的技巧來維持一個自Apache最后一次啟動以來的文件緩沖區。同樣地,mod_file_cache的目標是改善不常修改的本地靜態文件的訪問時間。

  由於mod_file_cache提供了一個相對簡單的緩沖實現,除了CacheFile和MMapStatic文檔的特定段落之外,這篇指南的說明覆蓋了mod_cache的緩存體系結構。

 

 

安裝編譯                                                                       

 

為了能夠在apache使用cache ,需要在安裝編譯時加上如下參數。

--enable-cache  --enable-disk-cache --enable-mem-cache  --enable-file-cache

[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

兩種緩存模式:

mod_disk_cache

  一個基於磁盤的存儲管理模塊。

mod_mem_cache

  一個基於內存的存儲管理模塊。mod_mem_cache可以被配置為兩種不同的操作模式:緩存打開的文件描述符;在堆(heap)上緩存對象。mod_mem_cache既可以用於緩存本地生成的內容,也可以用於為反向代理模式下的mod_proxy緩存后端服務器輸出的內容。

 

 

基於硬盤文件的緩存                                                                                             

 

基於硬盤文件存儲的緩存由mod_disk_cache 模塊實現:

<IfModule mod_cache.c>
CacheDefaultExpire 3600 CacheMaxExpire 86400 CacheLastModifiedFactor 0.1
<IfModule mod_disk_cache.c> CacheRoot /usr/local/apache/cache CacheEnable disk / CacheDirLevels 5 CacheDirLength 3 CacheMaxFileSize 10000000 CacheMinFileSize 1 </IfModule>
</IfModule>

 

拷貝上面內容到apache 的 httpd.con文件中:

httpd.conf文件中搜索

#LoadModule cache_module modules/mod_cache.so  // 去掉前面的

使用磁盤文件緩存:

#LoadModule disk_cache_module modules/mod_disk_cache.so  // 去掉前面的

參數詳細含義如下

CacheDefaultExpire:

  設定緩存過期的時間(秒),默認是1小時,只有當緩存的文檔沒有設置過期時間或最后修改時間時這個指令才會生效

CacheMaxExpire:

  失效周期的最大值,緩存實體的默認失效周期是一個小時(3600) ,這個默認值僅僅用在產生內容的原始資源沒有明確指定失效時間或最后修改時間的情況下。 

CacheLastModifiedFactor:

  在事件的文件中不提供到期時間,指令指定的一個因素是用於生成截止日期。例如,如果該文件的最后修改10小時前, 系數為0.1,那么到期期間將設置為10 * 0.1 = 1小時,如果當前時間是下午3:00,然后計算到期時間為3:00+1小時,也就是下午4:00  ,如果到期時間大於CacheMaxExpire 的時間,那么后者優先級高。

-----------------------------------------

CacheRoot:

  緩存文件所在的目錄,運行 Apache 的用戶(如daemon 或 nobody)要能對其進行讀寫,如果不清楚的話可以直接設置成 777,請手動建立該目錄並設置好訪問權限

CacheEnable:

  啟用緩存,第1個參數是緩存類弄,這里當然是 disk了,第2個參數是緩存路徑,指的是 url 路徑,這里是緩存所有的東西,直接寫上“/”即可,如“/docs”則只緩存 /docs 下的所有文件

CacheDirLevels:

  緩存目錄的深度,默認是3,這里設置為5

CacheDirLength:

  緩存目錄名的字符長度,默認是4,這里設置為5

CacheMaxFileSize 和 CacheMaxFileSize:

  緩存文件的最大值和最小值(byte),當超過這個范圍時將不再緩存,這里設置為 1M 和 10bytes

基於硬盤文件存儲的文件基本上就這些內容,設置好后重啟 Apache 應該就能使用了。一切正常的話,可以在緩存目錄下看到 Apache 自動建立的一些目錄和緩存的數據文件。

 

 

基於內存的緩存                                                                                              

 

基於內存的緩存主要由 mod_mem_cache 模塊實現

<IfModule mod_cache.c>

<IfModule mod_mem_cache.c> CacheEnable mem / MCacheSize 4096 MCacheMaxObjectCount 2000 MCacheMinObjectSize 1 MCacheMaxObjectSize 2048 </IfModule>
</IfModule>

 

 

安裝完成之后,需要搜索

LoadModule cache_module modules/mod_cache.so  // 去掉前面的

使用內存文件緩存:

#LoadModule mem_cache_module modules/mod_mem_cache.so  // 去掉前面的

 

參數詳細含義如下:

CacheEnable:

  啟用緩存,使用基於內存的方式存儲

MCacheSize:

  緩存數據最多能使用的內存,單位是 kb,默認是100kb,這里設置為128M

MCacheMaxObjectCount:

  在內存中最多能存儲緩存對象的個數,默認是1009,這里設置為20000

MCacheMinObjectSize:

  單個緩存對象最小為10bytes,默認為1bytes

MCacheMaxObjectSize:

  單個緩存對象最大為 1M,默認是10000bytes

 

保存重啟 Apache 基於內存的緩存系統應該就能生效了,根據需要可以使基於內存的存儲或硬盤文件的存儲方式一起使用,只要指明不同的URL路徑即可。

 

-----------------------------------

           學到這里,apache的內容就先告一段落了,后續學會習tomcat應用服務。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM