当前位置: 首页 > 编程日记 > 正文

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

相关文章:

[译] ASP.NET 生命周期 – ASP.NET 上下文对象(六)

使用 HttpApplication 对象 ASP.NET 框架中的许多类都提供了许多很方便的属性可以直接映射到 HttpContext 类中定义的属性。这种交叠有一个很好的例子就是 HttpApplication&#xff0c;它就是全局应用类的基类&#xff0c;在下表中&#xff0c;你可以看到 HttpApplication 类中…

变得非常不vb

数组-136. 只出现一次的数字题目描述题目样例Java方法&#xff1a;位运算算法思路代码复杂度题目描述 给定一个非空整数数组&#xff0c;除了某个元素只出现一次以外&#xff0c;其余每个元素均出现两次。找出那个只出现了一次的元素。 题目样例 示例1&#xff1a; 输入: […

分析PHP中单双引号的误区和双引号小隐患

2019独角兽企业重金招聘Python工程师标准>>> 1、一般情况下两者是通用的.但如果双引号内写的是变量就会执行解析操作,而单引号则不解析&#xff0c;这个怎么说&#xff1f;还是举个例子吧。 这下看明白了吧&#xff01; 2、执行效率不一样&#xff0c;单引号的执行速…

javascript(js)的小数点乘法除法问题

一、用js计算12.32 * 7 结果是多少&#xff1f;答案&#xff1a;86.24000000000001为什么会出现这种问题&#xff1f;怎么解决&#xff1f;js在处理小数的乘除法的时候有一个bug&#xff0c;解决的方法可以是&#xff1a;将小数变为整数来处理。以上的计算可以改为&#xff1a…

sDVD消防大队

数组-136. 只出现一次的数字题目描述题目样例Java方法&#xff1a;位运算算法思路代码复杂度题目描述 给定一个非空整数数组&#xff0c;除了某个元素只出现一次以外&#xff0c;其余每个元素均出现两次。找出那个只出现了一次的元素。 题目样例 示例1&#xff1a; 输入: […

WPF的二维绘图(二)——几何图形Geometry

在WPF的DrawingContext对象中&#xff0c;提供了基本的绘制椭圆和矩形的API&#xff1a;DrawEllipse和DrawRectangle。但是&#xff0c;这些是远远不够用的&#xff0c;我们在日常应用中&#xff0c;更多的是使用DrawGeometry函数&#xff0c;它可以绘制更多复杂的几何图形&…

定期删除各子文件下数据

最近遇到一个客户有这样一个需求&#xff0c;需要在每日自动删除各用户文件夹下的数据而不删除根文件夹和每个用户父文件夹 Register-ScheduledJob -Name Remove-InternetDataFiles -ScriptBlock {$root "E:\Internet-Data"$dirs Get-ChildItem $root -Directoryfo…

PHP使用BC Math 函数处理浮点运算问题

BC Math 函数 http://cn.php.net/manual/zh/ref.bc.php做小数的相加减问题是&#xff0c;出现了浮点运算不准的情况&#xff0c;看来都说解释型语言对于浮点运算都会有问题的说法是真的。首先看一段代码: <?php$a 0.1;$b 0.7;var_dump(($a $b) 0.8); 打印出来的值居然为…

【重建】从FJOI2016一试谈起

2016.2.21 我是湖建的sb蒟蒻OIer FOIWCFJOI2016 体验性的旅途&#xff0c;新生 其实是刚刚找回密码闲的没事干 前排膜FZSZ各位学长 ORZ 闫神 ORZ 吴大爷 ORZ 汪巨 ORZ 邵司机 ORZ 方老师ORZ dxy zkp zzy 湖建省选一试被虐。不知道明年这个时候会有什么改变 总而言之&#xff…

是否正常正常是

数组-136. 只出现一次的数字题目描述题目样例Java方法&#xff1a;位运算算法思路代码复杂度题目描述 给定一个非空整数数组&#xff0c;除了某个元素只出现一次以外&#xff0c;其余每个元素均出现两次。找出那个只出现了一次的元素。 题目样例 示例1&#xff1a; 输入: […

pkg mysql 在macOS 上的管理

为什么80%的码农都做不了架构师&#xff1f;>>> 使用pkg安装后&#xff0c;在设置中启停&#xff0c;通过ps -ef|grep mysql查看进程的命令行即可看到各配置位置。 转载于:https://my.oschina.net/fox99/blog/1931674

PHP autoload 函数

(1) autoload机制概述 在使用PHP的OO模式开发系统时&#xff0c;通常大家习惯上将每个类的实现都存放在一个单独的文件里&#xff0c;这样会很容易实现对类进行复用&#xff0c;同时将来维护时也很便利。这也是OO设计的基本思想之一。在PHP5之前&#xff0c;如果需要使用一个…

sql按条件进行批量查询或update的关键字in

2019独角兽企业重金招聘Python工程师标准>>> SELECT t1.field1,t1.field2,t1.field3 from t1 where t1.pid in (select fid from t2 where t2.ch%123456%) 再看这段代码&#xff0c; select t.* from mefinance.me_customer_info t where t.id in (3285,4241,4243,4…

为什么很努力进步却不明显

今天有个玩的不错的同事问了我一个问题&#xff1a;他说我今年在努力学习测试方法&#xff0c;自动化测试等等&#xff0c;也写了不少测试用例&#xff0c;但总体感觉好像没有什么进步啊&#xff1f;他想不明白这是什么原因。其实当我遇到这个问题的时候&#xff0c;我也想了一…

spl_autoload_register与autoload区别

spl_autoload_register(PHP 5 > 5.1.2)spl_autoload_register — 注册__autoload()函数说明bool spl_autoload_register ([ callback $autoload_function ] )将函数注册到SPL __autoload函数栈中。如果该栈中的函数尚未激活&#xff0c;则激活它们。如果在你的程序中已经实现…

宣传部vv从v

数组-136. 只出现一次的数字题目描述题目样例Java方法&#xff1a;位运算算法思路代码复杂度题目描述 给定一个非空整数数组&#xff0c;除了某个元素只出现一次以外&#xff0c;其余每个元素均出现两次。找出那个只出现了一次的元素。 题目样例 示例1&#xff1a; 输入: […

自动配置IPv4问题

对于 Windows &#xff0c; 配置 IP&#xff0c;如&#xff1a; 192.168.1.101&#xff0c; 如果这个 IP 已经在局域网内存在&#xff0c;那么将会提示局域网内已经存在该 IP。 而这个时候&#xff0c;Windows 7 将产生一个 “自动配置IPv4地址”&#xff0c;如&#xff1a;169…

营销自动化为什么能吸引企业的喜欢?它有何魅力?

在一次营销峰会上&#xff0c;我们听到这样一个令人惊讶的描述&#xff1a;“到2020年底&#xff0c;将会有85%的客户与企业的关系在没有人际互动的情况下进行管理。”虽然这听起来可能有点超前&#xff0c;但从营销的角度来看&#xff0c;“未来”已来。这个“未来”就是我们所…

php base64解码图片 base64加密图片还原

<?php//文件名:base64.php $data"/9j/4AAQSkZJRgABAQAAAQABAAD/2wCEABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2MBERISGBUYLxoaL2NCOEJjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY//AABEIADIA…

python mysql

2019独角兽企业重金招聘Python工程师标准>>> python实践3&#xff1a;cursor() — 数据库连接操作 (2012-05-07 11:00:40) 转载▼ 标签&#xff1a; itpython 操作数据库&#xff0c;要安装一个Python和数据库交互的包MySQL-python-1.2.2.win32-py2.5.exe&#xff0…

程序员效率低下的35个坏习惯

优秀程序员与平庸程序员的最终差别其实是习惯&#xff0c;避开那些让自己低效的坏习惯是程序员让自己变优秀的有效途径。 1.总是说“一会弄好”&#xff0c;但从来不兑现。&#xff08;缺乏任务管理和时间管理能力&#xff09;2坚持所谓的高效、优雅的“一行代码流”&#xff0…

PHP处理Oracle的CLOB

1. 写入数据在使用PDO的预处理方法时&#xff0c;如果使用bindParam()等而不指定字段的数据类型或使用execute()&#xff0c;PDO都会默认为string类型&#xff0c;并且限定一个默认长度 所以在存clob类型字段时必须使用bindParam()或bindValue()等&#xff0c;并指定字符…

c# 元组Tuple

Tuple类型像一个口袋&#xff0c;在出门前可以把所需的任何东西一股脑地放在里面。您可以将钥匙、驾驶证、便笺簿和钢笔放在口袋里&#xff0c;您的口袋是存放各种东西的收集箱。C# 4.0引入的一个新特性 Tuple类型与口袋类似&#xff0c;它可以存放不同类型的对象。CodeProject…

KVM之安装虚拟机

一、KVM安装&#xff1a;环境要求&#xff1a;1、如果是物理服务器&#xff0c;需要在BIOS中打开虚拟化VirtualizationTechnology一般的服务器默认是打开这个功能的。 2、如果是用VMware Workstation做实验&#xff0c;建立的虚拟机的CPU要勾选虚拟化功能&#xff0c;这样虚拟机…

使用 Strace 调试工具

strace是Linux环境下的一款程序调试工具&#xff0c;用来监察一个应用程序所使用的系统呼叫及它所接收的系统信息。 strace是一个有用的小工具&#xff0c;它可以通过跟踪系统调用来让你知道一个程序在后台所做的事情。Strace是一个基础的调试工具&#xff0c;在大多数Linux系 …

java——网络知识积累

1.获得局域网的所有主机ip地址 ping ip 等待每次回复的超时时间&#xff1a; -w 280 要发送的回显请求数&#xff1a;-n 1 Process processRuntime.getRuntime().exec("ping "); process.getInputStream()----InputStreamReader()----BufferReader in…

卸载v吧v字典序

数组-136. 只出现一次的数字题目描述题目样例Java方法&#xff1a;位运算算法思路代码复杂度题目描述 给定一个非空整数数组&#xff0c;除了某个元素只出现一次以外&#xff0c;其余每个元素均出现两次。找出那个只出现了一次的元素。 题目样例 示例1&#xff1a; 输入: […

《JavaScript高级程序设计(第3版)》教程大纲

词条 《JavaScript高级程序设计》是2006年人民邮电出版社出版的图书&#xff0c;作者是(美)(Nicholas C.Zakas)扎卡斯。本书适合有一定编程经验的开发人员阅读&#xff0c;也可作为高校相关专业课程的教材。 献给搬砖人士&#xff0c;求职人士很不错的基础扎实笔记 前四章 js诞…

鸡肋的PHP单例模式

单例模式的要点有三个&#xff1a;一是某个类只能有一个实例&#xff1b;二是它必须自行创建这个实例&#xff1b;三是它必须自行向整个系统提供这个实例。<?php /* 单例模式举例,其要点如下: * * 1. $_instance 必须声明为静态的私有变量 * 2. 构造函数和克隆函数必须声明…

彻底理解js中this

相关博文&#xff1a;http://blog.csdn.net/libin_1/article/details/49996815彻底理解js中this的指向&#xff0c;不必硬背。 首先必须要说的是&#xff0c;this的指向在函数定义的时候是确定不了的&#xff0c;只有函数执行的时候才能确定this到底指向谁&#xff0c;实际上t…