我正在使用WordPress框架并从名称便宜的专用服务器上工作,并且该服务器上只运行一个站点。 即使在那之后,我的瀑布时间也在500毫秒之内,但我想让它在100毫秒左右。 这是我的网站(http://ucbrowserdownload.net/)和瀑布 你可以看到一切都是完美的,但仍然没有得到解决方案。 也可以查看http://labnol.org/ 这个网站也在WordPress中使用相同的主题,即使我在索引页面上调用的图像或博客也少,即使我错误也是一个巨大的瀑布。 想知道,如何解决所有这些问题,并了解WordPress或主题或主机中的问题所在。 完全陷入困境,过去几周没有解决方案。 我们将非常感谢您的帮助。 谢谢。
答案 0 :(得分:1)
优化Nginx
本文介绍的最佳Nginx配置。再来一次 简要介绍已知的参数并添加一些新参数 这直接影响到TTFB。
<强>化合物强>
首先我们需要定义&#34;工人的数量&#34; Nginx的。 worker_processes Nginx每个工作流都能够处理很多 连接并链接到物理处理器核心。如果你知道的话 确切地说,服务器中有多少个核心,您可以指定该数量 你自己,还是相信Nginx:
worker_processes auto; # Determination of the number of working processes
此外,您必须指定连接数:
worker_connections 1024; # Quantification of compounds by one working process, ranging from 1024 to 4096
<强>请求强>
对Web服务器可以处理最大数量的请求 默认情况下使用关闭指令multi_accept:
multi_accept on; # Workflows will accept all connections
值得注意的是,该功能仅在大型时才有用 请求数量同时。如果请求不是那么多,那就是 有意义的是优化工作流程,以便它们不起作用 徒然:
accept_mutex on; # Workflows will take turns Connection
改善TTFB和服务器响应时间取决于指令 tcp_nodelay和tcp_nopush:
on tcp_nodelay; tcp_nopush on; # Activate directives tcp_nodelay and tcp_nopush
如果你没有详细介绍,这两个功能允许你 禁用TCP的某些功能,这些功能在90年代是相关的, 当互联网刚刚获得动力,但没有意义 现代世界。第一个指令尽快发送数据 可用(绕过Nagle算法)。第二个允许你 发送标题响应(网页)和文件的开头, 等待填充包(即包括TCP_CORK)。所以 浏览器可以开始显示网页。
乍一看,功能是矛盾的。因此, 指令tcp_nopush应与sendfile一起使用。 在这种情况下,数据包在装运前作为指令填充 比read +的方法快得多,也更优 写。程序包已满后,Nginx会自动禁用 tcp_nopush和tcp_nodelay使套接字发送数据。 启用sendfile非常简单:sendfile on; # Enable more effective, compared to read + write, file sending method
因此,所有三个指令的组合减少了负载 网络并加快文件的发送速度。
<强>缓冲器强>
另一个重要的优化会影响缓冲区的大小 - 如果 它们太小了,Nginx经常会提到磁盘太大 - 将快速填满RAM。 Nginx Buffers要做到这一点,你需要 设置四个指令。 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
超时和保持活力
正常配置待机时间和keepalive也可以 显着提高服务器响应能力。
指令client_body_timeout和client_header_timeout设置时间延迟 在身体上并阅读请求标题:
client_body_timeout 10; client_header_timeout 10; # Set the waiting time in seconds
在客户使用时缺乏响应的情况下 reset_timedout_connection你可以指定Nginx禁用这样的 化合物:
reset_timedout_connection on; # Disable connections timed-out
指令keepalive_timeout设置停止前的等待时间 connection和keepalive_requests限制的数量 来自同一客户的keepalive-requests:
keepalive_timeout 30; keepalive_requests 100; # Set the timeout to 30 and limitations 100 on client requests
send_timeout设置传输响应中的等待时间 两次写操作之间:
send_timeout 2; # Nginx will wait for an answer 2
<强>缓存强>
启用缓存可显着改善服务器响应时间。 Nginx缓存 方法在有关缓存的材料中有更详细的介绍 Nginx,但在这种情况下包含重要的缓存控制。 Nginx能够向redkoizmenyaemyh缓存数据发送请求, 通常在客户端使用。为此,服务器 您要添加一行的部分:
. Location ~ * (jpg | jpeg | png | gif | ico | css | js) $ {expires 365d;}
目标文件格式和持续时间缓存
缓存有关常用文件的信息也没有什么坏处:
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
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
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和服务器响应时间因素。另外不要忘记稳定版本的常规软件更新 是为了优化和提高绩效。