Apache HTTP 伺服器 2.4 版
說明 | 將靜態檔案清單快取於記憶體中 |
---|---|
狀態 | 實驗 |
模組識別碼 | 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
模組的延伸,並大量參考其功能。
mod_file_cache
會在主伺服器組態中透過 MMapFile
或 CacheFile
指令快取靜態組態檔案清單。
並非所有平台都支援這兩個指令。如果您嘗試使用不支援的指令,您會在伺服器錯誤紀錄收到一條錯誤訊息。如果給出一個不支援的指令,伺服器將啟動但檔案不會被快取。在同時支援這兩個指令的平台上,您應該嘗試兩者以找出最適合您的方式。
指令屬於 MMapFile
mod_file_cache
,它會透過系統呼叫 mmap()
將一組靜態設定的檔案對映到記憶體中。這個系統呼叫在大部分現代 Unix 衍生系統上可用,但在某些系統上則不行。有時候系統會限制 mmap()
可用檔案的大小和數量,實驗可能是瞭解限制的最快方法。
這種 mmap()
只會在伺服器啟動或重新啟動時進行,僅此而已。因此,每當對應檔案之一在檔案系統上變更時,您一定要重新啟動伺服器(請參閱 停止和重新啟動 文件)。再次強調這一點:如果檔案在不重新啟動伺服器的情況下就地修改,您可能會提供完全錯誤的請求。您應該解除舊副本的連結並放置新的副本就地,來更新檔案。許多工具(例如 rdist
和 mv
)都有這個功能。這個模組沒有處理檔案變更的原因在於:檢查檔案變更每次都需要一個額外的 stat()
,這是一種浪費且與減少 I/O 的用意相違背。
指令屬於 CacheFile
mod_file_cache
,它會為組態指令中列出的檔案(或檔案)開啟一個活動的處理常式或檔案描述符,並在快取中放置這些開啟的檔案處理常式。當檔案被請求時,伺服器會從快取中取得處理常式並將它傳遞給 sendfile()
(或在 Windows 上傳遞給 TransmitFile()
)socket API。
這個檔案處理常式快取只會在伺服器啟動或重新啟動時進行,僅此而已。因此,每當快取檔案之一在檔案系統上變更時,您一定要重新啟動伺服器(請參閱 停止和重新啟動 文件)。再次強調這一點:如果檔案在不重新啟動伺服器的情況下就地修改,您可能會提供完全錯誤的請求。您應該解除舊副本的連結並放置新的副本就地,來更新檔案。許多工具(例如 rdist
和 mv
)都有這個功能。
別再詢問遞迴快取目錄中所有檔案的指令。請改為使用這個方法... 查看
指令,並考慮使用這個命令Include
find /www/htdocs -type f -print \
| sed -e 's/.*/mmapfile &/' > /www/conf/mmap.conf
說明 | 在啟動時快取一組檔案處理常式 |
---|---|
語法 | CacheFile 檔案路徑 [檔案路徑] ... |
環境 | 伺服器組態 |
狀態 | 實驗 |
模組 | mod_file_cache |
指令 CacheFile
開啟對一個或多個檔案 (指定為以空白分隔的引數) 的控點,並在伺服器啟動時將這些控點放到快取中。快取檔案的控點會在伺服器關機時自動關閉。若檔案已在檔案系統中變更,應重新啟動伺服器以重新快取檔案。
請小心處理 file-path 引數:這些引數必須確切符合 Apache 的 URL 轉檔為檔案名稱轉譯處理常式所建立的檔案系統路徑。由於對比 inode 或其他資料以比對路徑通過符號連結等其他方式可能會導致額外的 stat()
系統呼叫,而這並不可接受,因此我們無法這麼做。此模組不一定能搭配由 mod_alias
或 mod_rewrite
改寫的檔名一起作用。
CacheFile /usr/local/apache/htdocs/index.html
說明 | 在啟動時將檔案清單對映到記憶體中 |
---|---|
語法 | MMapFile file-path [file-path] ... |
環境 | 伺服器組態 |
狀態 | 實驗 |
模組 | mod_file_cache |
指令 MMapFile
在伺服器啟動時對映一個或多個檔案 (指定為以空白分隔的引數) 到記憶體中,並在伺服器關機時自動取消對映。當檔案在檔案系統中變更時,至少應傳送一個 HUP
或 USR1
訊號給伺服器以重新對映這些檔案。
請小心處理 file-path 引數:這些引數必須確切符合 Apache 的 URL 轉檔為檔案名稱轉譯處理常式所建立的檔案系統路徑。由於對比 inode 或其他資料以比對路徑通過符號連結等其他方式可能會導致額外的 stat()
系統呼叫,而這並不可接受,因此我們無法這麼做。此模組不一定能搭配由 mod_alias
或 mod_rewrite
改寫的檔名一起作用。
MMapFile /usr/local/apache/htdocs/index.html