亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 網站 > Nginx > 正文

在Nginx中使用X-Sendfile頭提升PHP文件下載的性能(針對大文件下載

2024-08-30 12:27:00
字體:
來源:轉載
供稿:網友

很多時候用戶需要從網站下載文件,如果文件是可以通過一個固定鏈接公開獲取的,那么我們只需將文件存放到 webroot下的目錄里就好。但大多數情況下,我們需要做權限控制,例如下載 PDF 賬單,又例如下載網盤里的檔案。這時,我們通常借助于腳本代碼來實現,而這無疑會增加服務器的負擔。

例如下面的代碼:

<?php  // 用戶身份認證,若驗證失敗跳轉  authenticate();  // 獲取需要下載的文件,若文件不存在跳轉  $file = determine_file();  // 讀取文件內容  $content=file_get_contents($file);  // 發送合適的 HTTP 頭  header("Content-type: application/octet-stream");  header('Content-Disposition: attachment; filename="' . basename($file) . '"');  header("Content-Length: ". filesize($file));  echo $content; // 或者 readfile($file);?>

一、這樣做有什么問題?

這樣做意味著我們的程序需要將文件內容從磁盤經過一個固定的 buffer 去循環讀取到內存,再發送給前端 web 服務器,最后才到達用戶。當需要下載的文件很大的時候,這種方式將消耗大量內存,甚至引發 php 進程超時或崩潰。Cache 也很頭疼,更不用說中斷重連的情況了。
一個理想的解決方式應該是,由 php 程序進行權限檢查等邏輯判斷,一切通過后,讓前臺的 web 服務器直接將文件發送給用戶——像 Nginx 這樣的前臺更善于處理靜態文件。這樣一來 php 腳本就不會被 I/O 阻塞了。

二、什么是 X-Sendfile?

X-Sendfile 是一種將文件下載請求由后端應用轉交給前端 web 服務器處理的機制,它可以消除后端程序既要讀文件又要處理發送的壓力,從而顯著提高服務器效率,特別是處理大文件下載的情形下。

X-Sendfile 通過一個特定的 HTTP header 來實現:在 X-Sendfile 頭中指定一個文件的地址來通告前端 web 服務器。當 web 服務器檢測到后端發送的這個 header 后,它將忽略后端的其他輸出,而使用自身的組件(包括 緩存頭 和 斷點重連 等優化)機制將文件發送給用戶。

不過,在使用 X-Sendfile 之前,我們必須明白這并不是一個標準特性,在默認情況下它是被大多數 web 服務器禁用的。而不同的 web 服務器的實現也不一樣,包括規定了不同的 X-Sendfile 頭格式。如果配置失當,用戶可能下載到 0 字節的文件。

使用 X-Sendfile 將允許下載非 web 目錄中的文件(例如/root/),即使文件在 .htaccess 保護下禁止訪問,也會被下載。

不同的 web 服務器實現了不同的 HTTP 頭

SENDFILE 頭 使用的 WEB 器
X-Sendfile Apache, Lighttpd v1.5, Cherokee
X-LIGHTTPD-send-file Lighttpd v1.4
X-Accel-Redirect Nginx, Cherokee
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久九九全国免费精品观看| 亚洲欧美精品在线| 8090成年在线看片午夜| 国产精品尤物福利片在线观看| 这里只有视频精品| 91精品久久久久久久久| 亚洲淫片在线视频| 成人黄色免费片| 成人免费在线网址| 97视频在线观看免费高清完整版在线观看| 欧美成人精品一区| 日韩在线视频中文字幕| 美日韩精品免费观看视频| 久久久久久久久久婷婷| 夜夜嗨av色综合久久久综合网| 欧美大片免费观看| www.国产精品一二区| 日韩av在线播放资源| 国产精品视频免费观看www| 欧美在线视频免费观看| 久久视频国产精品免费视频在线| 中文字幕精品av| 欧美久久久精品| 欧美日韩成人网| 亚洲人成伊人成综合网久久久| 精品亚洲va在线va天堂资源站| 综合网日日天干夜夜久久| 日韩激情第一页| 18性欧美xxxⅹ性满足| 久久香蕉国产线看观看av| 亚洲在线第一页| 久久男人的天堂| 一道本无吗dⅴd在线播放一区| 国产免费成人av| 蜜月aⅴ免费一区二区三区| 亚洲区免费影片| 亚洲精品网址在线观看| 26uuu久久噜噜噜噜| 日韩美女免费观看| 日韩av免费看| 欧美成人亚洲成人| 亚洲人午夜精品| 狠狠综合久久av一区二区小说| 国产香蕉97碰碰久久人人| 国产主播在线一区| 亚洲精品mp4| 精品久久久久久久大神国产| 久久精品91久久久久久再现| 5278欧美一区二区三区| 日韩电视剧在线观看免费网站| 欧美一乱一性一交一视频| 欧美一区二粉嫩精品国产一线天| 日韩在线观看电影| 欧美重口另类videos人妖| 欧美精品www在线观看| 国产日韩欧美另类| 国产一区二区三区在线观看网站| 国产精品视频久久| 久久久伊人欧美| 亚洲精品天天看| 国产三级精品网站| 亚洲欧洲国产精品| 日韩成人高清在线| 欧美日韩激情网| 一本色道久久综合亚洲精品小说| 日韩欧美一区二区在线| 在线观看日韩www视频免费| 中文字幕亚洲情99在线| 狠狠爱在线视频一区| 国产精品第一视频| 国产精品白嫩初高中害羞小美女| 日韩男女性生活视频| 91麻豆桃色免费看| 久久久女女女女999久久| 精品国产欧美成人夜夜嗨| 日韩视频在线一区| 91av在线播放| 成人激情电影一区二区| 爽爽爽爽爽爽爽成人免费观看| 中文字幕日韩欧美| 欧美日韩国产va另类| 欧美一区二区色| 91伊人影院在线播放| 国产成人拍精品视频午夜网站| 亚洲人av在线影院| 欧美日韩福利视频| 国产精品一区二区三区久久| 国产91在线高潮白浆在线观看| 亚洲福利视频网| 国产精品国产三级国产专播精品人| 国产一区玩具在线观看| 国产99久久精品一区二区 夜夜躁日日躁| 久久精品国产v日韩v亚洲| 精品视频在线播放色网色视频| 性日韩欧美在线视频| 影音先锋日韩有码| 国产精品白嫩美女在线观看| 亚洲精品综合久久中文字幕| 国产视频欧美视频| 97精品伊人久久久大香线蕉| 日本乱人伦a精品| 国产成人精品av| 欧美电影第一页| 欧美一乱一性一交一视频| 国产一区二区精品丝袜| 97视频免费看| 91九色视频在线| 78m国产成人精品视频| 久久久久久高潮国产精品视| 国产精品香蕉av| 欧美日本精品在线| 久久精品视频播放| 青青a在线精品免费观看| 国产精品成人播放| 日韩av网站大全| 欧美视频一区二区三区…| 国产不卡av在线免费观看| 国产成人精品一区二区在线| 国产日韩欧美电影在线观看| 久久夜精品va视频免费观看| 欧美日韩精品在线视频| 欧美激情奇米色| 亚洲天堂免费在线| 欧美精品一本久久男人的天堂| 亚洲男人的天堂在线播放| 日韩亚洲精品视频| 欧美黑人又粗大| 97精品国产97久久久久久免费| 在线日韩精品视频| 精品色蜜蜜精品视频在线观看| 久久久久久久久中文字幕| 欧美电影在线观看高清| 超碰91人人草人人干| 亚洲精品98久久久久久中文字幕| 亚洲视频免费一区| 久久久久久久久久久91| 亚洲电影免费观看高清完整版在线| 久久精品影视伊人网| 九九热精品视频| 久久久91精品国产| 欧美理论电影在线播放| 欧美亚洲另类激情另类| 日韩精品在线看| 爽爽爽爽爽爽爽成人免费观看| 久久久久久久999精品视频| 欧美中文字幕在线观看| 亚洲精品一区久久久久久| 亚洲视频在线视频| 国产精品美女在线观看| 欧美日韩在线视频观看| 亚洲qvod图片区电影| 26uuu另类亚洲欧美日本老年| 97国产真实伦对白精彩视频8| 亚洲国产成人精品女人久久久| 91精品成人久久| 久久伊人精品视频| 性欧美视频videos6一9| 国产精品v片在线观看不卡| 成人欧美一区二区三区黑人| 亚洲综合色激情五月| 亚洲国产成人久久综合一区| 欧美日韩在线视频一区二区| 成人精品视频久久久久| 欧美成人一区在线|