Web快取
測試環境說明
本文使用的Apache版本為 2.2.8,Apache2.2版本的官方文件中關於快取模組有mod_cache,mod_disk_cache和mod_mem_cache,而在Apache2.4版本的官方文件中卻有所變動,模組名稱變為mod_cache,mod_cache_disk和mod_cache_socache,雖然清除了mod_mem_cache,新增了mod_cache_socache,但是對於mod_disk_cache卻沒有多大影響,因此我們可以使用磁碟快取作為web伺服器快取,這樣即使更換了高版本的Apache,對於快取模組的配置來說也無需做太多調整。
配置Apache快取
- LoadModule cache_module modules/mod_cache.so
- LoadModule disk_cache_module modules/mod_disk_cache.so
- CacheRoot E:/tmp
- CacheEnable disk /
- CacheDirLevels 5
- CacheDirLength 3
LoadModule開啟相關模組,CacheRoot快取檔案存放目錄,CacheEnable啟用disk型別快取(也就是磁碟快取,2.2版本中還有mem記憶體快取),CacheDirLevels快取檔案目錄深度,5代表了一共巢狀5個資料夾,CacheDirLength快取資料夾名稱長度,3代表每個資料夾名稱的長度是3,此處僅對Apache快取做了簡單的配置,想要了解更詳細的配置資訊可以點選此處。
測試靜態檔案快取
配置完成後我們來測試下配置的Apache快取是否生效,我們輸入一個靜態頁面的url,然後到快取檔案存放目錄(CacheRoot中設定的值)中尋找,果然生成了很多資料夾,我們開啟其中一個,在最底層資料夾中我們終於找到了快取檔案,其中以.data結尾的檔案儲存著響應內容,以.header結尾的檔案儲存著頭資訊,有些童鞋可能就會有疑問了,為什麼要分開儲存?因為分開儲存是為快取過期檢查提供了方便,只需要檢查頭資訊的檔案即可。為什麼要進行過期檢查?難道你希望Apache永遠使用這份快取內容去響應使用者的請求嗎?所以我們需要對檔案進行過期檢查。
目錄分級的好處
相信不少童鞋在剛才開啟層級目錄的時候鬱悶了,怎麼這麼多資料夾,童鞋別忘了,這是你自己的設定的哦(CacheDirLevels和CacheDirLength)。你可能會問了,能不能設定的少一點,當然可以,因為決定權在你手裡,但是這裡小編有必要提醒你一下,如果設定的目錄層級很淺,導致大量的檔案堆積在一個資料夾中,會增加查詢開銷。為了更加形象的描述,小編舉個例子,相信大家都使用過瀏覽器的快取功能,一般情況下不會清除,如果你很久沒清理過瀏覽器的快取的話,那麼你可以嘗試著開啟瀏覽器的快取資料夾,以小編的google瀏覽器快取資料夾為例,快取檔案3575個,檔案大小364MB,開啟資料夾耗時5s。僅僅3000多個檔案,光開啟資料夾的時間就已經耗費了5s,如果在加上查詢,那耗時就更不可估計。我們使用快取的目的就是讓web伺服器更快的響應使用者的請求,如果耗時如此之久,還不如直接響應請求,不使用快取。因此,合理的目錄結構的設定十分必要,至於如何分級,可以視情況而定。
小結
1.Apache2.4中cache相關模組跟Apache2.2中有所不同,Apache2.4更改了disk模組的名稱,並去掉了mem模組,新增了socache模組,並增加一些Apache2.2中沒有的配置選項,如果使用Apache2.4可以根據官方文件自行配置。
2.目錄分級是一種設計思路,當程式設計的場景中可能會出現一個資料夾中生成大量檔案的時候(例如各種快取),我們就應該考慮對這樣的檔案儲存方式作出調整,使用目錄分級,儘可能讓這些檔案分攤到不同的目錄中去,這樣會減少同一目錄大量檔案的查詢開銷,節省伺服器資源。
相關文章
- Web快取 – HTTP協議快取Web快取HTTP協議
- Web 快取機制 與 快取策略Web快取
- web快取機制Web快取
- 淺談Web快取Web快取
- 快取和web快取分別是什麼?快取Web
- 從HTTP到WEB快取HTTPWeb快取
- 聊聊web快取那些事!Web快取
- 漫談Web快取架構Web快取架構
- Web 專案的快取策略Web快取
- Apache 設定web 快取(轉)ApacheWeb快取
- Web快取知多少(快取機制和資料儲存)Web快取
- Web快取基礎:術語、HTTP報頭和快取策略Web快取HTTP
- WEB 應用快取解析以及使用 Redis 實現分散式快取Web快取Redis分散式
- Web開發人員需知的Web快取知識Web快取
- Web 開發人員需知的 Web 快取知識Web快取
- Web應用的快取設計模式Web快取設計模式
- 用程式碼來實踐Web快取Web快取
- 一篇文章理解Web快取Web快取
- 快取穿透、快取擊穿、快取雪崩、快取預熱快取穿透
- 快取穿透、快取擊穿、快取雪崩快取穿透
- 快取穿透、快取雪崩、快取擊穿快取穿透
- Web 效能優化:理解及使用 JavaScript 快取Web優化JavaScript快取
- Web靜態資源快取及優化Web快取優化
- 從購買牛奶談到Web快取(譯)Web快取
- 利用超市買牛奶來解釋web快取Web快取
- Web應用中快取的七種武器Web快取
- Redis快取擊穿、快取穿透、快取雪崩Redis快取穿透
- HTTP快取——協商快取(快取驗證)HTTP快取
- [Redis]快取穿透/快取擊穿/快取雪崩Redis快取穿透
- 快取穿透 快取雪崩快取穿透
- 快取問題(一) 快取穿透、快取雪崩、快取併發 核心概念快取穿透
- 快取穿透、快取擊穿、快取雪崩區別快取穿透
- 【譯】Web 效能優化:理解及使用 JavaScript 快取Web優化JavaScript快取
- Web(Cache)Browser for Mac(Safari快取瀏覽工具)1.7WebMac快取
- [譯]谷歌Web效能優化系列:HTTP 快取(中英)谷歌Web優化HTTP快取
- 關於 Web 快取的那些風流事兒Web快取
- nginx的web快取服務環境部署記錄NginxWeb快取
- 【實踐】你真的認識 Web 快取體系?Web快取