Nginx学习之合并请求连接加速网站访问

作为这个世界上最好的web服务器之一,Nginx的优势不明而喻。下面来讲讲,Nginx是如何合并请求连接的。

小知识

当我们在浏览网页的时候,对浏览速度有一个重要的影响因素,就是浏览器的并发数量。并发数量简单通俗的讲就是,当浏览器网页的时候同时工作的进行数量。

当然浏览器的并发请求数目限制是针对同一域名的,同一时间针对同一域名下的请求有一定数量限制,超过限制数目的请求会被阻塞。

首先我们看下各个浏览器的并发连接数:

罗列一下浏览器这么决定可能有什么考虑

  • 由于TCP 协议的限制,PC 端只有65536个端口可用以向外部发出连接,而操作系统对半开连接数也有限制以保护操作系统的 TCP\IP 协议栈资源不被迅速耗尽,因此浏览器不好发出太多的 TCP 连接,而是采取用完了之后再重复利用 TCP 连接或者干脆重新建立 TCP 连接的方法。
  • 如果采用阻塞的套接字模型来建立连接,同时发出多个连接会导致浏览器不得不多开几个线程,而线程有时候算不得是轻量级资源,毕竟做一次上下文切换开销不小。
  • 这是浏览器作为一个有良知的客户端在保护服务器。就像以太网的冲突检测机制,客户端在使用公共资源的时候必须要自行决定一个等待期。当超过2个客户端要使用公共资源时,强势的那个邪恶的客户端可能会导致弱势的客户端完全无法访问公共资源。从前迅雷被喷就是因为它不是一个有良知的客户端,它作为 HTTP 协议客户端没有考虑到服务器的压力,作为 BT 客户端没有考虑到自己回馈上传量的义务。

淘宝tengine

我们在访问有些网站的时候,会看到代码中的部分js和css文件是通过一次请求获取的,上面的小知识知道浏览器请求的并发数量是有限制的,但是如果把多条记录合并一次请求就可能会加快响应速度。

淘宝使用的tengine是基于nginx的web服务器,从11年底开源。开源模块nginx-http-concat,可以合并多个文件在一个响应报文中。

安装

初次安装第三方模块nginx-http-concat

wget http://tengine.taobao.org/download/tengine-2.2.0.tar.gz
wget https://github.com/alibaba/nginx-http-concat/archive/master.zip -O nginx-http-concat-master.zip
unzip nginx-http-concat-master.zip
tar -xzvf tengine-2.2.0.tar.gz
cd  tengine-2.2.0

配置编译安装

 ./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --add-module=../nginx-http-concat-master
 make
 make install

如果已经安装过Nginx,只是配置第三方插件。Nginx -V,检查一下Nginx的版本,如果没有,下载对应的版本。

执行一下代码即可。

./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --add-module=../nginx-http-concat-master
make

编译成功以后

#复制之前请备份nginx执行文件
cp /objs/nginx  /usr/local/nginx/sbin/nginx

杀掉Nginx,重启即可。

配置

在location段增加如下配置:

location /static/css/ {
   concat on;
   concat_max_files 20;
   concat_unique off;
   concat_types text/css application/javascript;
}

合并方式

http://static.52itstyle.com/static/css/??index.css,common.css?v=20171111
时间: 2024-08-29 01:35:51

Nginx学习之合并请求连接加速网站访问的相关文章

PHP Yii开源框架入门学习(二)修改Yii网站访问路径

默认网站访问路径如下所示: http://127.0.0.1:8080/zuizen/index.php?r=admin/UserInfo/admin 这种路径对搜索引擎不友好,需要改成如下形式: http://127.0.0.1:8080/zuizen/admin/UserInfo/admin.html 以下步骤实现以上要求: 1) 修改Apache配置,使其支持重写: 打开Apache配置文件httpd.conf:开启apache的mod_rewrite模块: 去掉LoadModule re

远程桌面不能连接,网站访问正常,ftp也能连上

问题描述 前几天还好好的,这几天就不能连接了,其他都正常,是什么原因? 解决方案 解决方案二:检查服务器远程服务开了没有解决方案三:可能是上次连了没注销解决方案四:我记得有个很简单的方法解决没注销的问题,只在客户端执行就行了,不过现在忘了,有人知道吗?解决方案五:不可以的吧,建议你不要用远程桌面了,现在好用的远程工具太多了,我一直用remoteadmin解决方案六:任务管理器里,用户选项,右键单击用户,注销!就好了

wordpress实现图片用二级域名加速网站访问

前一阵子有个小伙伴在群里聊到使用二级域名来加载wordpress网站图片,本来在很早以前就有很多这样的教程,小V也没必要再重复的发一遍,不过自从wordpress3.5之后后台设置上传路径的选项就没了,所以小V这里就再来水一篇wordpress教程.先将以下代码加入到主题的functions.php文件: if(get_option('upload_path')=='wp-content/uploads' || get_option('upload_path')==null) { update_

Nginx学习总结(1):Nginx简介

(最近,部门组织了好几个技术兴趣小组,对当前的热门技术进行研究.我加入了Nginx学习小组,与几个同事一道围绕Nginx来进行研究和学习.从今天起,我会陆陆续续发一系列有关Nginx的学习总结.本文是系列之一:Nginx简介.) 一.Nginx概况 1.Nginx是Igor Sysoev为俄罗斯访问量第二的Rambler.ru站点开发的,第一个公开版本0.1.0发布于2004年10月4日.目前最新的版本是nginx-1.9.0(2015年4月28日发布). 2.Nginx是一款高性能的HTTP和

asp如何加速网站打开的速度

技巧之一:提高使用Request集合的效率 访问一个ASP集合来提取一个值是费时的.占用计算资源的过程.因为这个操作包含了一系列对相关集合的搜索,这比访问 一个局部变量要慢得多.因此,如果打算在页面中多次使用Request集合中的一个值,应该考虑将其存贮为一个局部变量. 例如将代码写成下面的形式以加快脚本引擎处理速度:   strTitle=Request.Form("Title")    strFirstName=Request.Form("FirstName")

Nginx学习笔记六Nginx的模块开发

1.Nginx配置文件主要组成:main(全局配置)这部分的指令将影响其他所有部分.server(虚拟主机配置)这部分指令主要用于指定虚拟主机域名,IP和端口.upstream(主要为反向代理,负载均衡相关配置)这部分指令用于设置反向代理及后端服务 器的负载均衡.location(目录匹配配置)这部分指令用于匹配网页位置(例如,根目录"/","/images",等 等). location部分会继承server部分的指令,而server部分会继承main部分的指令.

Nginx学习笔记(二) Nginx--connection&request

在Nginx中,主要包括了连接与处理两部分. connection 在src/core文件夹下包含有connection的源文件,Ngx_connection.h/Ngx_connection.c中可以找到SOCK_STREAM,也就是说Nginx是基于TCP连接的. 连接过程 对于应用程序,首先第一步肯定是加载并解析配置文件,Nginx同样如此,这样可以获得需要监听的端口和IP地址.之后,Nginx就要创建master进程,并建立socket,这样就可以创建多个worker进程来,每个work

Nginx学习笔记之事件驱动框架处理流程_nginx

ngx_event_core_module模块的ngx_event_process_init方法对事件模块做了一些初始化.其中包括将"请求连接"这样一个读事件对应的处理方法(handler)设置为ngx_event_accept函数,并将此事件添加到epoll模块中.当有新连接事件发生时,ngx_event_accept就会被调用.大致流程是这样: worker进程在ngx_worker_process_cycle方法中不断循环调用ngx_process_events_and_time

学习如何超越你的竞争对手网站

怎样赶超你的竞争对手?最快的赶超竞争对手的网站方法就是学习.研究.把对方好的都拿过来,再加上你自己本身的优势,你就可以超越对手了. 当你不知道该怎么做的时候,模仿一定是个不错的方法,跟进策略不能使你领先行业水平,一定可以让你以最小的成本取得成功.就像腾讯的模仿和搜狐的跟进策略.踩在别人的肩膀或尸体(先驱者)可以减少不必要的风险和成本. 拿网站来说.对于搜索引擎网站优化.如果你不是同行第一线的网站.首先你要做的不是如何创新,你首先要学习对方网站.兵书说知己知彼,方能百战百胜.在学习别人优点的基础上