<-
Apache > HTTP 伺服器 > 文件 > 2.4 版 > 模組

Apache 模組 mod_file_cache

可用語言:  en  |  fr  |  ko 

說明將靜態檔案清單快取於記憶體中
狀態實驗
模組識別碼file_cache_module
原始檔mod_file_cache.c

摘要

小心使用此模組。使用 mod_file_cache 可能導致網站無法正常運作,因此請仔細閱讀本文件。

快取 使用頻率較高但變動不大的檔案是一種降低伺服器負載的技術。 mod_file_cache 提供兩種快取使用頻率較高的靜態檔案的技術。您可以透過組態指令指示 mod_file_cache 開啟檔案並使用 mmap() 處理檔案,或預先開啟檔案並儲存檔案的開放檔案控制代碼。這兩種技術會在伺服器啟動時執行部分工作 (特別是檔案 I/O) 以提供檔案服務,而不需在每次要求時執行工作,進而減輕處理這些檔案要求的伺服器負載。

注意:您無法使用此模組來加速 CGI 程式或由特殊內容處理程式提供的其他檔案的速度。它只能用於一般檔案,而一般檔案通常由 Apache 核心內容處理程式提供服務。

此模組為 Apache 1.3 中的 mod_mmap_static 模組的延伸,並大量參考其功能。

Support Apache!

主題

指令

錯報告查核清單

另請參閱

top

使用 mod_file_cache

mod_file_cache 會在主伺服器組態中透過 MMapFileCacheFile 指令快取靜態組態檔案清單。

並非所有平台都支援這兩個指令。如果您嘗試使用不支援的指令,您會在伺服器錯誤紀錄收到一條錯誤訊息。如果給出一個不支援的指令,伺服器將啟動但檔案不會被快取。在同時支援這兩個指令的平台上,您應該嘗試兩者以找出最適合您的方式。

MMapFile 指令

MMapFile 指令屬於 mod_file_cache,它會透過系統呼叫 mmap() 將一組靜態設定的檔案對映到記憶體中。這個系統呼叫在大部分現代 Unix 衍生系統上可用,但在某些系統上則不行。有時候系統會限制 mmap() 可用檔案的大小和數量,實驗可能是瞭解限制的最快方法。

這種 mmap() 只會在伺服器啟動或重新啟動時進行,僅此而已。因此,每當對應檔案之一在檔案系統上變更時,您一定要重新啟動伺服器(請參閱 停止和重新啟動 文件)。再次強調這一點:如果檔案在不重新啟動伺服器的情況下就地修改,您可能會提供完全錯誤的請求。您應該解除舊副本的連結並放置新的副本就地,來更新檔案。許多工具(例如 rdistmv)都有這個功能。這個模組沒有處理檔案變更的原因在於:檢查檔案變更每次都需要一個額外的 stat(),這是一種浪費且與減少 I/O 的用意相違背。

CacheFile 指令

CacheFile 指令屬於 mod_file_cache,它會為組態指令中列出的檔案(或檔案)開啟一個活動的處理常式檔案描述符,並在快取中放置這些開啟的檔案處理常式。當檔案被請求時,伺服器會從快取中取得處理常式並將它傳遞給 sendfile()(或在 Windows 上傳遞給 TransmitFile())socket API。

這個檔案處理常式快取只會在伺服器啟動或重新啟動時進行,僅此而已。因此,每當快取檔案之一在檔案系統上變更時,您一定要重新啟動伺服器(請參閱 停止和重新啟動 文件)。再次強調這一點:如果檔案在不重新啟動伺服器的情況下就地修改,您可能會提供完全錯誤的請求。您應該解除舊副本的連結並放置新的副本就地,來更新檔案。許多工具(例如 rdistmv)都有這個功能。

注意

別再詢問遞迴快取目錄中所有檔案的指令。請改為使用這個方法... 查看 Include 指令,並考慮使用這個命令

find /www/htdocs -type f -print \
| sed -e 's/.*/mmapfile &/' > /www/conf/mmap.conf

top

CacheFile 指令

說明在啟動時快取一組檔案處理常式
語法CacheFile 檔案路徑 [檔案路徑] ...
環境伺服器組態
狀態實驗
模組mod_file_cache

指令 CacheFile 開啟對一個或多個檔案 (指定為以空白分隔的引數) 的控點,並在伺服器啟動時將這些控點放到快取中。快取檔案的控點會在伺服器關機時自動關閉。若檔案已在檔案系統中變更,應重新啟動伺服器以重新快取檔案。

請小心處理 file-path 引數:這些引數必須確切符合 Apache 的 URL 轉檔為檔案名稱轉譯處理常式所建立的檔案系統路徑。由於對比 inode 或其他資料以比對路徑通過符號連結等其他方式可能會導致額外的 stat() 系統呼叫,而這並不可接受,因此我們無法這麼做。此模組不一定能搭配由 mod_aliasmod_rewrite 改寫的檔名一起作用。

範例

CacheFile /usr/local/apache/htdocs/index.html
top

MMapFile 指令

說明在啟動時將檔案清單對映到記憶體中
語法MMapFile file-path [file-path] ...
環境伺服器組態
狀態實驗
模組mod_file_cache

指令 MMapFile 在伺服器啟動時對映一個或多個檔案 (指定為以空白分隔的引數) 到記憶體中,並在伺服器關機時自動取消對映。當檔案在檔案系統中變更時,至少應傳送一個 HUPUSR1 訊號給伺服器以重新對映這些檔案。

請小心處理 file-path 引數:這些引數必須確切符合 Apache 的 URL 轉檔為檔案名稱轉譯處理常式所建立的檔案系統路徑。由於對比 inode 或其他資料以比對路徑通過符號連結等其他方式可能會導致額外的 stat() 系統呼叫,而這並不可接受,因此我們無法這麼做。此模組不一定能搭配由 mod_aliasmod_rewrite 改寫的檔名一起作用。

範例

MMapFile /usr/local/apache/htdocs/index.html

可用語言:  en  |  fr  |  ko 

top

留言

注意事項
這裡並非問答區。留於此處的評論應指向改善文件或伺服器的建議,若這些評論已實作或被視為無效/離題,我們的管理員可能會予以移除。有關如何管理 Apache HTTP 伺服器的问题應轉向我們在 Libera.chat 上的 IRC 頻道 #httpd,或傳送至我們的 郵件清單