運用 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
arrow
arrow
    全站熱搜

    nicaliu 發表在 痞客邦 留言(4) 人氣()