設為首頁

收藏本站

導覽首頁 | 新登場    ◇聯盟溫泉 | 民宿 | 人力銀行 | 女性 |

類型:Apache

Apache 緩存系統的簡單介紹
Apache 從2.0開始就已經可以使用緩存模塊了,不過在2.0的時候還是實驗性的,到了2.2已經完全可以放心的使用。Apache 的緩存實現主要依靠 mod_cache、mod_disk_cache、mod_file_cache 及 mod_mem_cache。只需在配置編譯的時候加上參數:--enable-cache、 --enable-disk-cache、--enable-file-cache、 --enable-mem-cache 即可。

關於 Apache 的編譯安裝本文就不再說了,可以參考以前的文章。這裏主要介紹一下如何配置使用 Apache 的緩存功能。

具體來說,Apache 的緩存方式有兩種,一種是基於硬盤文件的緩存,由 mod_disk_cache 實現,另一種是使用內存緩存,由 mod_mem_cache 實現,不過它們都是依賴 mod_cache 模塊的,mod_cache 模塊提供了一些緩存配置的指令供它們使用,而 mod_file_cache 模塊是搭配 mod_mem_cache 模塊使用的,下面分別進行介紹。

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 mod_disk_cache.c>
</IfModule mod_cache.c>
把上面的配置加到 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 mod_disk_cache.c>
</IfModule mod_cache.c>
簡單說一下上面一些指令的意思:
 
◦CacheEnable:啓用緩存,使用基於內存的方式存儲
◦MCacheMaxObjectCount:在內存中最多能存儲緩存對象的個數,默認是1009,這裏設置爲20000
◦MCacheMaxObjectSize:單個緩存對象最大爲 1M,默認是10000bytes
◦MCacheMaxStreamingBuffer:在緩衝區最多能夠放置多少的將要被緩存對象的尺寸,這裏設置爲 65536,該值通常小於100000或 MCacheMaxObjectSize 設置的值
◦MCacheMinObjectSize:單個緩存對象最小爲10bytes,默認爲1bytes
◦MCacheRemovalAlgorithm:清除緩存所使用的算法,默認是 GDSF,還有一個是LRU,可以查一下 Apache 的官方文檔,上面有些介紹
◦MCacheSize:緩存數據最多能使用的內存,單位是 kb,默認是100kb,這裏設置爲128M
保存重啓 Apache 基於內存的緩存系統應該就能生效了,根據需要可以使基於內存的存儲或硬盤文件的存儲方式一起使用,只要指明不同的URL路徑即可。
3、注意事項
使用緩存需要注意如下事項:
 
◦要使用緩存,必須使用指令 CacheEnable 啓用它,目前可用的緩存類型爲 disk 或 mem,禁止緩存可以使用 CacheDisable,如 CacheDisable /private
◦待緩存的 URL 返回的狀態值必須爲: 200、203、300、301 或 410
◦URL 的請求方式必須是 GET 方式
◦發送請求時,頭部中包含 “Authorization: ”的字符串時,返回的內容將不會被緩存
◦URL 包含查詢字符串,如問號?後的那些東西,除非返回的內容包含“Expires:”,否則不會被緩存
◦如果返回的狀態值是 200,則返回的頭部信息必須包含以下的一種纔會被緩存:Etag、Last-Modified、Expires,除非設置了指令 CacheIgnoreNoLastMod On
◦如果返回內容的頭部信息“Cache-Control:”中包含“private”,除非設置了指令 CacheStorePrivate On,否則不會被緩存
◦如果返回內容的頭部信息“Cache-Control:”中包含“no-sotre”,除非設置了指令 CacheStoreNoStore On,否則不會被緩存
◦如果返回內容的頭部信息“Vary:”中包含了“*”,不會被緩存
4、其它一些指令的介紹
如果你的網站有幾個文件的訪問非常頻繁而又不經常變動,則可以在 Apache 啓動的時候就把它們的內容緩存到內存中(當然要啓用內存緩存系統),使用的是 mod_file_cache 模塊,具體如下:
有多個文件可以用空格格開
MMapFile /var/www/html/index.html /var/www/html/articles/index.html
上面是緩存文件的內容到內存中,除此之外,還可以只緩存文件的打開句柄到內存中,當有請求進來的時候,Apache 直接從內存中獲取文件的句柄,返回內容,和 MMapFile 指令很像,具體如下:
CacheFile /var/www/html/index.html /var/www/html/articles/index.html
上面兩個指令所緩存的文件如果有修改的話,必須重啓 Apache 或使用 graceful 之類的方式強制使 Apache 更新緩存數據,否則當用戶訪問的時候獲取的不是最新的數據。

有時候需要根據某些特殊的頭部信息來決定是否進行緩存,則可以使用如下指令:
當頭部信息中包含 Set-Cookie 時則跳過不進行緩存操作
CacheIgnoreHeaders Set-Cookie
有時候需要緩存的時候跳過 URL 中的查詢字符串?使用如下指令:
CacheIgnoreQueryString On
更多指令請參考:http://www.itlearner.com/code/apache2.2/caching.html

104休閒信箱 2.3.0 © 104mm.com 2001 - 2019. 您尚未登錄
Page generated in 0.00734901 seconds with 3 Queries