傳統的 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 配置部分編寫,實際測試有效。