如何减少第一个字节的时间

Gnz*_*iet 2 javascript php mysql wordpress jquery

我正在使用 WordPress 框架并使用 name-cheap 的专用服务器工作,并且该服务器上只有一个站点正在运行。即使在那之后,我的瀑布时间也在 500 毫秒范围内,但我想使其在 100 毫秒左右。这是我的网站 ( http://ucbrowserdownload.net/ ) 和瀑布 从我的角度您可以看到一切都很完美,但仍然没有得到一些解决方案。也可以查看http://labnol.org/ 该网站也在 WordPress 中并使用相同的主题,即使我在索引页面上调用的图像或博客也非常少,即使我犯了一个巨大的瀑布。想知道如何解决所有这些问题,并想知道 WordPress 或主题或主机中的问题出在哪里。完全卡住了,过去几周没有解决方案。您的帮助将不胜感激。谢谢你。在此处输入图片说明

Dum*_*aaa 5

原始来源

Nginx的优化

本文介绍的最佳 Nginx 配置。再次简要介绍已知参数并添加一些直接影响 TTFB 的新参数。

化合物

首先我们需要定义“工人”Nginx 的数量。worker_processes Nginx 每个工作流都能够处理许多连接并链接到物理处理器内核。如果您确切知道服务器中有多少个核心,您可以自己指定数量,或者信任 Nginx:

worker_processes auto;
# Determination of the number of working processes
Run Code Online (Sandbox Code Playgroud)

此外,您必须指定连接数:

worker_connections 1024;
# Quantification of compounds by one working process, ranging from 1024 to 4096
Run Code Online (Sandbox Code Playgroud)

要求

为了让 Web 服务器可以处理最大数量的请求,有必要使用一个默认关闭的指令 multi_accept :

multi_accept on;
# Workflows will accept all connections
Run Code Online (Sandbox Code Playgroud)

值得注意的是,该功能只有在同时有大量请求时才有用。如果要求不是那么多,那么优化工作流程是有意义的,让他们没有白白工作:

accept_mutex on;
# Workflows will take turns Connection
Run Code Online (Sandbox Code Playgroud)

改善 TTFB 和服务器响应时间取决于指令 tcp_nodelay 和 tcp_nopush :

on tcp_nodelay; 
tcp_nopush on;
# Activate directives tcp_nodelay and tcp_nopush
Run Code Online (Sandbox Code Playgroud)

如果您不详细介绍,这两个功能允许您禁用 TCP 的某些功能,这些功能在 90 年代互联网刚刚获得发展势头时是相关的,但在现代世界中没有意义。第一个指令在数据可用时立即发送数据(绕过 Nagle 算法)。第二个允许您发送响应头(网页)和文件的开头,等待填充包(即,包括 TCP_CORK )。所以浏览器可以先开始显示网页。

乍一看,功能是矛盾的。因此,指令 tcp_nopush 应该与 sendfile 结合使用。在这种情况下,数据包在发货前被填充,因为指令比 read + the write 的方法更快和更优化。包满后,Nginx 自动禁用 tcp_nopush , tcp_nodelay 使套接字发送数据。启用sendfile很简单:

sendfile on;
# Enable more effective, compared to read + write, file sending method
Run Code Online (Sandbox Code Playgroud)

因此,所有三个指令的组合减少了网络负载并加快了文件的发送速度。

缓冲器

另一个重要的优化影响缓冲区的大小——如果它们太小,Nginx 会经常提到磁盘太大——会很快填满 RAM。Nginx 缓冲区为此,您需要设置四个指令。Client_body_buffer_size 和 client_header_buffer_size 分别设置正文的缓冲区大小并读取客户端请求头。client_max_body_size 设置客户端请求的最大大小, large_client_header_buffers 指定读取大请求头的最大缓冲区数和大小。

最佳缓冲区设置如下所示:

10K client_body_buffer_size; 
client_header_buffer_size 1k; 
of client_max_body_size 8m; 
large_client_header_buffers 2 1k;
# 10k buffer size on the body of the request, 1 KB per title, 8MB to the query buffer and 2 to read large headlines
Run Code Online (Sandbox Code Playgroud)

超时和保活

适当配置待机时间和保活也可以显着提高服务器响应能力。

指令 client_body_timeout 和 client_header_timeout 在 body 上设置时间延迟并读取请求头:

client_body_timeout 10; 
client_header_timeout 10;
# Set the waiting time in seconds
Run Code Online (Sandbox Code Playgroud)

在客户端使用 reset_timedout_connection 没有响应的情况下,您可以指定 Nginx 禁用此类化合物:

reset_timedout_connection on;
# Disable connections timed-out
Run Code Online (Sandbox Code Playgroud)

指令 keepalive_timeout 设置停止连接前的等待时间,keepalive_requests 限制来自同一客户端的 keepalive-requests 的数量:

keepalive_timeout 30; 
keepalive_requests 100;
# Set the timeout to 30 and limitations 100 on client requests
Run Code Online (Sandbox Code Playgroud)

那么send_timeout设置两个写操作之间传输响应中的等待时间:

send_timeout 2;
# Nginx will wait for an answer 2
Run Code Online (Sandbox Code Playgroud)

缓存

启用缓存可显着缩短服务器响应时间。Nginx 缓存方法在关于 Nginx 缓存的材料中有更详细的介绍,但在这种情况下包含重要的缓存控制。Nginx 能够向 redkoizmenyaemyh 缓存数据发送请求,这通常用于客户端。为此,您要在服务器部分添加一行:

. Location ~ * (jpg | jpeg | png | gif | ico | css | js) $ {expires 365d;}
Run Code Online (Sandbox Code Playgroud)

目标文件格式和持续时间缓存

缓存有关常用文件的信息也没有坏处:

open_file_cache max = 10000 = 20s the inactive; 
open_file_cache_valid 30s; 
open_file_cache_min_uses 2; 
open_file_cache_errors on;
# Enables the cache tags 10 000 files in 30 seconds
Run Code Online (Sandbox Code Playgroud)

open_file_cache 指定存储信息的最大文件数和存储时间。open_file_cache_valid 设置您需要检查信息相关性的时间,open_file_cache_min_uses 指定客户对文件的最小引用次数,open_file_cache_errors 包括缓存故障排除文件。

日志记录

这是另一个可以显着降低整个服务器性能的特性,并相应地降低响应时间和 TTFB。所以最好的解决方案是禁用基本日志并仅存储有关严重错误的信息:

off the access_log; 
the error_log /var/log/nginx/error.log crit;
# Turn off the main logging
Run Code Online (Sandbox Code Playgroud)

Gzip压缩

用处 Gzip 怎么强调都不为过。压缩可以显着减少流量并缓解信道。但他有一个缺点——需要压缩时间。因此,它必须关闭以改善 TTFB 和服务器响应时间。Gzip 在此阶段,我们不建议关闭 Gzip,因为压缩会改善 Time To Last Byte,即加载整个页面所需的时间。在大多数情况下,这是一个更重要的参数。在 TTFB 上和提高服务器响应时间极大地影响了 HTTP/2 的大规模实现,其中包含用于标头压缩和多路复用的内置方法。这样将来可能禁用 Gzip 就不会像现在这样突出。

PHP 优化:Nginx 中的 FastCGI

所有站点都使用现代服务器技术。例如 PHP,这对于优化 . 通常,PHP 打开一个文件,验证并编译代码,然后执行。可以设置此类文件和进程,因此 PHP 可以使用 OPcache 模块缓存 redkoizmenyaemyh 文件的结果。而Nginx,使用FastCGI 模块连接PHP 可以将PHP 脚本的结果存储在瞬间发送给用户。

最重要的

资源优化和 Web 服务器的正确设置 - 主要影响 TTFB 和服务器响应时间的因素。另外不要忘记稳定版本的定期软件更新,这是为了优化和提高性能。