Home > Article > Operation and Maintenance > How Nginx merges request connections and accelerates website access
Little Knowledge
When we browse the web, there is an important factor that affects the browsing speed, which is the number of concurrent browsers. In simple terms, the number of concurrency refers to the number of simultaneous tasks when browsing a web page.
Of course, the browser's limit on the number of concurrent requests is for the same domain name. There is a certain limit on the number of requests under the same domain name at the same time. Requests that exceed the limit will be blocked.
First of all, let’s look at the number of concurrent connections of each browser:
Let’s list what considerations the browser may have in making this decision
Due to the limitations of the tcp protocol, there are only 65536 ports on the PC side that can be used to issue connections to the outside. The operating system also limits the number of half-open connections to protect the operating system's tcpip protocol stack resources from being quickly exhausted. Therefore, The browser is not good at issuing too many TCP connections. Instead, it adopts the method of reusing the TCP connection after using it or simply re-establishing the TCP connection.
If a blocking socket model is used to establish a connection, issuing multiple connections at the same time will cause the browser to have to open several more threads, and the threads have Time is not a lightweight resource. After all, the cost of a context switch is not small.
#This is the browser acting as a conscientious client to protect the server. Just like Ethernet's conflict detection mechanism, clients must decide on their own a waiting period when using public resources. When more than 2 clients want to use public resources, the strong evil client may cause the weak client to be completely unable to access the public resources. In the past, Xunlei was criticized because it was not a conscientious client. As an http protocol client, it did not consider the pressure on the server. As a bt client, it did not consider its obligation to repay the upload volume.
Taobao tengine
When we visit some websites, we will see that some js and css files in the code are passed Obtained in one request. From the above knowledge, we know that the number of concurrent browser requests is limited, but if multiple records are merged into one request, the response speed may be accelerated.
The tengine used by Taobao is a web server based on nginx, which has been open source since the end of 2011. The open source module nginx-http-concat can merge multiple files into one response message.
Installation
Initial installation of third-party module 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
Configuration, compilation and installation
./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --add-module=../nginx-http-concat-master make make install
If nginx has been installed, just configure the third-party plug-in. nginx -v, check the nginx version, if not, download the corresponding version.
Just execute the code.
./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --add-module=../nginx-http-concat-master make
After successful compilation
#复制之前请备份nginx执行文件 cp /objs/nginx /usr/local/nginx/sbin/nginx
Kill nginx and restart.
Configuration
Add the following configuration in the location section:
location /static/css/ { concat on; concat_max_files 20; concat_unique off; concat_types text/css application/javascript; }
Merge method
http://static.52itstyle.com/static/css/??index.css,common.css?v=20171111
The above is the detailed content of How Nginx merges request connections and accelerates website access. For more information, please follow other related articles on the PHP Chinese website!