運用 kernel 裡的 sendfile (功能)支援,傳送檔案予客戶端。
預設值為 On,可用於 server config, virtual host, directory, .htaccess。
當 Apache 處理的 request 無須存取檔案裡的資料時 - 例如靜態式檔案,就會使用 sendfile 傳送檔案內容,無須作讀檔的動作。不過前提必須是作業系統支援 sendfile (功能)。
sendfile 機制可避免將讀取與傳送操作分開,亦可緩衝配置。但在下列平台或檔案系統不適合這麼作:
.有些平台的 sendfile 支援是有問題的,它可能是在 A 主機上編譯建立二進制檔,然後放在 B 主機上跑,而 B 主機提供的 sendfile 支援可能有問題。
.特定網路卡使用 IPv6 時,在 Linux 下使用 sendfile 觸發 TCP-checksum offloading bug。
.itanium 機器上的 Linux,sendfile 可能無法處理超過 2GB 的檔。
.DocumentRoot 的目錄是網路掛載的情況下, kernel 可能無法透過自有 cache 對網路檔案提供服務。
若你的系統有上述特定,就應該設定為 EnableSendfile Off,或針對 NFS 或 SMB 掛載的檔案指定之:
<Directory "/path-to-nfs-files">
EnableSendfile Off
</Directory>
詳見:http://httpd.apache.org/docs/2.2/mod/core.html#enablesendfile
最重要的事…
.2009 年開始,移居 http://nicaliu.info/
- Oct 11 Sun 2009 13:29
Apache - SendFile
close
全站熱搜
留言列表