关于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功能提升文件下载性能相关推荐

  1. 大型网站用的什么服务器,大型网站在用什么web服务器?Apache, nginx, lighttpd

    Apache, nginx (发音 engine x), lighttpd ( 发音 lighty) 是主流的web server, 大型网站都在用哪些web 服务器? yaozer做了个简单的调查, ...

  2. Apache vs Lighttpd vs Nginx对比

    转载自: http://www.cnblogs.com/oubo/archive/2012/05/21/2511726.html 本次调研主要对目前主流的WEB服务器Apache/Lighttpd/N ...

  3. 三大web服务器对比(lighttpd,apache,nginx)

    这篇没有把IIS服务器列入其中,因为IIS只能在Windows上跑,而apache与lighttpd.nginx这三个WEB网站服务器可以在各种平台上跑. 下面看文章的分析 一.软件介绍(lightt ...

  4. 关于nginx/lighttpd epoll高并发以及apache为何不采用epoll的的疑惑 不指定

    关于nginx/lighttpd epoll高并发以及apache为何不采用epoll的的疑惑 - 向东博客 专注WEB应用 构架之美 --- 构架之美,在于尽态极妍 | 应用之美,在于药到病除 - ...

  5. squid,nginx,lighttpd反向代理的区别

    反向代理从传输上分可以分为2种: 1:同步模式(apache-mod_proxy和squid) 2:异步模式(lighttpd 和 nginx) 在nginx的文档说明中,提到了异步传输模式并提到它可 ...

  6. CentOS 6.3安装Nginx开启目录浏览、下载功能

    本次实验实现目的: 安装Nginx,Nginx开启目录浏览.下载功能,开机默认启动:咐件自带开机启动脚本.重启脚本: 1.关闭SELINUX 查看获取SELinux的状态: [root@localho ...

  7. apache,ngnix,lighttpd性能对比

    1. web服务器简介 1. lighttpd Lighttpd是一个德国人领导的开源软件,其根本的目的是提供一个专门针对高性能网站,安全.快速.兼容性好并且灵活的Web server环境 Light ...

  8. apache ajax 跨域访问,AJAX跨域访问(从Tomcat8到Apache/Nginx)

    1.在Tomcat的Root目录下放入如下的文件 apache-tomcat-8.0.12X64\webapps\ROOT clientaccesspolicy.xml文件 crossdomain.x ...

  9. org.apache.struts2.dispatcher.FilterDispatcher的四个功能

    org.apache.struts2.dispatcher.FilterDispatcher的四个功能 2008-05-24 11:16 1.org.apache.struts2.dispatcher ...

最新文章

  1. Kubernetes — 容器与镜像
  2. linux nexus bulid
  3. 一朵云、一张网、一体化 ——GRTN 打造最佳流媒体场景实践
  4. 前端学习(1147):ES6学习目标
  5. APP移动测试用例总结
  6. ubuntu16.04安装中文输入法
  7. logback整合Logstash
  8. 转载+收藏 数理化地生常用软件
  9. 快速入门丨篇四:如何进行运动控制器与触摸屏通讯?
  10. Unity 使用Socket 简单实现通讯
  11. 电脑连接上WIFI后,如何查看WIFI密码?
  12. 收藏的兼容各浏览器的日历控件(ie6-11\ff\google\safri)
  13. 徒步50公里,35岁的联想可以,你也可以
  14. 跨越OpenGL和D3D的鸿沟[转]
  15. android emmc测试软件,鉴别EMMC/UFS如此简单!小工具一键识别闪存
  16. Flink报错:exceeded checkpoint tolerable failure threshould
  17. 双目摄像头三种标定方式标定结果对比
  18. 顺丰丰桥接口开发-java(订单取消接口)
  19. 浅谈NB_LOT和LTE CAT M1
  20. 部署报错$notify

热门文章

  1. java 小对话框_创建Java对话框
  2. uart协议_UART协议简介
  3. 论计算机的创新性,论计算机专业教学创新探索
  4. android post请求添加公共参数_XHttp2 一个功能强悍的网络请求库
  5. MySQL面试题 | 附答案解析(五)
  6. PT100热电阻校准模块设计
  7. 优达学城《DeepLearning》2-4:自编码器(无监督学习算法)
  8. HDU - 2586 How far away LCA+tanjar离线算法
  9. Python 打印行列控制(API:pandas.set_option())
  10. mysql从当前月向前推12_JavaScript获取当前时间向前推三个月的方法示例