nginx静态资源优化配置
从三个属性进行配置
- sendfile on;2、tcp_nopush on;3、tcp_nodelay on
- sendfile用来开启高效的文件传输模式
语法sendfile on|off 默认sendfile off
请求静态资源的过程:客户端通过网络接口向服务端发送请求,操作系统将这些客户端的请求传递给服务端应用系统,服务端应用处理这些请求后,操作系统将处理结果通过网络适配器传回去。
客户端请求welcome.html后发送请求到服务端,应用程序发送read命令给操作系统,然后操作系统先把磁盘的信息拷贝到内核缓冲区,在copy到应用程序缓冲区,然后应用程序在发送write命令给操作系统,把应用程序缓冲区的内容copy到socjet缓冲区,在copy到网卡,最后发送给客户。其中多次copy和进程切换,性能较低。
客户端请求welcome.html后发送请求到服务端,应用程序发送sendfile命令给操作系统,然后操作系统先把磁盘的信息拷贝到内核缓冲区,并指定传给哪个socket,直接传递给socket,在copy到网卡,最后发送给客户。
2、tcp_nopush :必须在sendfile打开下才会生效,主要提升网络包的传输效率。
语法:tcp_nopush on|off 默认:tcp_nopush off 。创建一个缓存区,当缓存数量达到一定量时在统一发送,效率高,实时性差。
3、tcp_nodelay:必须在keep-alive连接开启时才生效,提高网络包传输的实时性
语法:tcp_nolay on|off 默认:tcp_nolay on 。有数据就发生,不管数据量的大小,实时性好,效率低。
这样看,tcp_nopush 和 tcp_nolay看起来是互斥的,但俩个值都要打开,因为在Linux2.5.9以后版本中这俩个指令可以兼容。三个指令都开的好处:sendfile开启高效的文件传输模式,tcp_nopush开启可以确保在发送到客户端之前数据包已经充分填满,大大减少了网络开销,并加快了文件传输的速度。但,当最后一个数据没有填满数据包而暂停时,nginx会忽视tcp_nopush参数,tcp_nodelay强制套接字发送数据。
在配置文件中配置打开。
原文地址:https://blog.csdn.net/hguhbh/article/details/144026179
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!