傳統的 Web 伺服器在處理檔案下載的時候,總是先讀入檔案內容到應用程式記憶體,然後再把記憶體當中的內容傳送給客戶端瀏覽器。這種方式在應付當今大負
載網站會消耗更多的伺服器資源。 sendfile 是現代作業系統支援的一種高效能網路 IO 方式,作業系統核心的 sendfile 呼叫可以將檔案內容直接推
送到網路卡的 buffer 當中,從而避免了 Web 伺服器讀寫檔案的開銷,實現了 「零複製」 模式。

        Nginx 對 sendfile 有著良好的支援,Discuz! X2 也支援把附件透過 sendfile 發給客戶,對於資源下載類的論壇,能明顯減少 PHP 讀取附件的資源佔用。

         1,先在 Nginx 的配置檔案裡面檢查是否有 sendfile off 配置,如果有,那麼把 sendfile 改為 on

         2,開啟論壇的配置檔案 config/config_global.php ,找到 $_config['download']['xsendfile']['type'] =,把 0 改為 1
               找到 $_config['download']['xsendfile']['dir'] = '/down/';
               如果論壇放在根目錄,那麼把/down/改為/data/attachment/forum/
               如果論壇放在 bbs 目錄,那麼把/down/改為/bbs/data/attachment/forum/
               以此類推。

本教程基於使用者手冊的 Nginx 配置部分編寫,實際測試有效。