日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

Apache,Nginx,Lighttpd分别使用X-sendfile功能提升文件下载性能

發布時間:2023/11/27 生活经验 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Apache,Nginx,Lighttpd分别使用X-sendfile功能提升文件下载性能 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?

關于mod_xsendfile

https://tn123.org/mod_xsendfile/

?

Lighttpd中的X-sendfile

RoR網站如何利用lighttpd的X-sendfile功能提升文件下載性能

使用X-sendfile方式,服務器端應用程序不需要讀取下載文件了,只需要設置response的header信息就足夠了,此外還要附加一個信息“X-LIGHTTPD-send-file”信息給lighttpd,告訴lighttpd,文件下載就不管了

?

Apache中的X-sendfile

讓PHP更快的提供文件下載

不經過PHP這層, 直接讓Webserver直接把文件發送,使用Apache的module mod_xsendfile, 讓Apache直接發送這個文件給用戶給用戶

<?php    $file = "/tmp/中文名.tar.gz";
$filename = basename($file);
header("Content-type: application/octet-stream");
//處理中文文件名    
$ua = $_SERVER["HTTP_USER_AGENT"];    
$encoded_filename = urlencode($filename);    
$encoded_filename = str_replace("+", "%20", $encoded_filename);    
if (preg_match("/MSIE/", $ua)) {     
header('Content-Disposition: attachment; filename="' . $encoded_filename . '"');    
} 
else if (preg_match("/Firefox/", $ua)) 
{     
header("Content-Disposition: attachment; filename*=\"utf8''" . $filename . '"');    
} 
else {     
header('Content-Disposition: attachment; filename="' . $filename . '"');    
}     
header('Content-Disposition: attachment; filename="' . basename($file) . '"');     
//讓Xsendfile發送文件    
header("X-Sendfile: $file");


?

?

Nginx中的X-Accel-Redirect

nginx配置xsendfile提升文件下載性能

發送靜態文件使用的是一個叫做X-sendfile的header特性.
nginx當然也有這個特性,但是實現的略微不同,在nginx中叫做X-Accel-Redirect.

有兩個特性需要闡述:
1.header 中必須包括URI
2.本地必須聲明為 internal,用于內部redirect和X-Accel-Redirect responses。

配置例子:
代碼
location /public/ {?
internal;?
root? /項目目錄;?
}

應用程序接口:
代碼
x_accel_redirect "/項目目錄/public", :filename => "iso.img"

這樣,nginx將發送/項目目錄/public/iso.img 文件。
其他例子:
引用
x_accel_redirect(‘/path/to/image.jpg’, :type => ‘image/jpeg’, :disposition=>’inline’)

rails x_accel_redirect 插件
http://github.com/goncalossilva/X-Accel-Redirect

header還支持如下屬性:
代碼
X-Accel-Limit-Rate: 1024?
X-Accel-Buffering: yes|no?
X-Accel-Charset: utf-8

?

總結

以上是生活随笔為你收集整理的Apache,Nginx,Lighttpd分别使用X-sendfile功能提升文件下载性能的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。