如何减少 DNS 查找以加快 WordPress 网站速度

目录

作为消费者,我不喜欢等待。作为网站所有者,我知道高跳出率和随着网站加载时间变长而流量减少的痛苦。我花了大量精力来完善我的网站性能,以便人们会留在我的网站上并阅读我的内容。

因此,让我们解决有关 Web 性能的特定问题。

问题是太多的 DNS 查找会减慢页面的加载速度。

DNS 查找加载时间在各种规模的网站上都是一个问题。所以这关系到每个拥有网站的人!

我拥有几个自己的网站,今天,我想分享我优化网站的过程,特别是 DNS 查找。不要太技术化。

本文解释了这个问题、如何减少 WordPress 网站的 DNS 查找,以及优化网站 DNS 的一些实用技巧。

您可以按照我们的指南优化您的 WordPress 网站。

提示:我们使用了我们的 WP Rocket 插件!最后还有一些额外的提示和技巧。

但首先……


什么是 DNS 查找?

域名服务器 (DNS) 是万维网的基础。它们的工作方式类似于网站的电话簿,将它们链接到它们的 IP 地址。反过来,DNS 查找是为给定网站 URL 查找正确 IP 地址的过程。

如果您使用的是 PageSpeed Insight,则 DNS 查找与“减少初始服务器响应时间”相关联:

Reduce initial server response time

等待初始响应所花费的时间,也称为 Time To First Byte (TTFB) 从 HTTP 请求开始。

服务器接收请求所需的时间取决于执行 DNS 查找所需的时间、用户网络的速度、到服务器的距离以及连接中的任何中断。

由于 PageSpeed Insight 无法帮助我们确定导致 DNS 查找的原因,因此我们需要使用其他工具来帮助我们隔离和解决此问题。为了让我们知道如何修复它,让我们看看 DNS 查找是如何工作的。

DNS lookup lets you use a human-readable domain

DNS 查找允许您使用人类可读的域来获取网站。

DNS 查找如何工作?

当您访问网站时,您的浏览器会发现所有需要 DNS 查询的资源。之后,它会等待查找完成,然后再下载任何资源。

网站需要的查找次数越多,浏览器生成其页面所需的时间就越长。

这是一个简单的解释。

DNS 查找示例

如果我们把电话簿作为 DNS 查找的“优化”,你可以查看汽车维修并找到姓名和电话号码,然后给他们打电话。

一旦您给他们打电话,他们会回答“ACME car repair”,您找到了您要找的东西。DNS 查找也是如此。

另一个例子是打电话给你的手机提供商。也许您想与客户服务讨论账单差异。您打电话,自动助理会告诉您按 1 English 2 获取西班牙语。对于您的帐户信息,请按 2,然后事情会一直持续下去。

您只想与客户服务交谈,自动助手会试图弄清楚您需要什么并指导您到正确的部门。虽然我们很可能会停留一个小时与客户服务讨论我们的手机账单,但如果 DNS 查找时间很长,您的消费者不会等待您的网站加载!

如果你想要技术答案:

计算机最初检查输入的网站是否已经在其缓存或主机文件中。如果不是这种情况,它会联系负责的服务器。这是通过 DHCP 分配给它的,或者是永久配置的。

当客户端或 DNS 服务器要求 DNS 服务器解析域名时,查询可能是递归的或非递归的。

客户端(如 PC)通常执行递归查询,指示 DNS 服务器仅返回响应,而不返回引用。

推荐只是一种回应。如果它不知道答案,它将指向另一台服务器。

DNS 服务器执行非递归或迭代查询,这有效地指导另一个 DNS 服务器提供答案或可能具有答案的另一个 DNS 服务器的地址。

如果服务器可以应答请求,则会将响应发送给请求者。如果没有,它会联系另一个负责该域的服务器。浏览器可以使用提供的 IP 地址通过 IP 网络与 Web 服务器连接。

我希望这能帮助您了解 DNS 查找可以采用的多种途径才能正常工作,以及为什么快速的 DNS 响应时间至关重要。

什么是良好的 DNS 响应时间?

一个好的 DNS 查找响应时间大约是 40 毫秒,因此请以该时间或更好的时间为目标。

值得注意的是,每个网站都是独一无二的,因此这不是一个放之四海而皆准的时间表。

例如,对于具有完全本地和低流量的网站的网站来说,较高的 DNS 查找时间可能是可以接受的。但是,如果您有全球受众并希望您的网站接收大量流量,则您的 DNS 响应时间应小于 40 毫秒。


如何检查 DNS 查找响应时间

关键部分是确定导致问题的原因。让我们看看您可以使用三种工具(Pingdom、GTmetrix 和 WebPageTest,每种工具具有不同的功能和优势)来识别 DNS 查找响应时间以及每种工具如何提供这些数据。

注意:响应时间长可能有多种原因,包括服务器负载、网络可变性、JavaScript 中导致加载顺序更改的争用条件等。如果您的网站加载不一致,您应该尝试在启用网络限制的情况下,在开发人员工具的 performance(性能)选项卡中运行配置文件几次,看看会发生什么。

Pingdom DNS 查找

要使用 Pingdom 检查您的 DNS 查找,请转到他们的工具页面并输入您的网站 URL:

Pingdom tools

您可以在 “Improve page performance” 部分下查看您是否遇到了此问题(见下文):

DNS Lookup pindgom

您可以看到红色的 “Reduce DNS lookup” 和分数 F。这个站点没有任何缓存,没有性能插件,并且大量会导致问题。

向下滚动以更详细地了解导致 DNS 查找问题的原因。DNS 由粉红色条显示,以毫秒为单位。将鼠标悬停在每个文件请求上,以查看哪些文件导致了 DNS 查找以及加载需要多长时间。

Pingdom DNS Lookups
当您多次通过 Pingdom 运行您的网站时,它会缓存 DNS,因为它已经知道 IP 地址并且不需要再次进行查询。

这就是您的网站在多次 Pingdom 测试后看起来更快的原因之一。第二个测试在 CDN URL 上的 DNS 查找时间为 0 毫秒,如下面的屏幕截图所示。这是一个很多人都做错的领域。

Pingdom DNS Lookups empty

您可以看到,在使用 Pingdom 运行多个测试后,file request 部分没有显示任何请求。无论我怎么尝试,我都无法让它再次出现!

我会使用 Pingdom 工具快速确定您是否有 Reduce DNS 查找问题和高级问题,然后通过 GTmetrix 或 WebPageTest 工具进行更深入的挖掘。

与其他结果相比,通过查看 Pingdom 结果,更容易看出您的网站性能出了什么问题:

Pingdom DNS lookup test results

注意:如果您使用的是 CDN 或 WordPress 缓存插件,则 tools.pingdom.com 将显示缓存结果。您可以尝试停用 CDN 或 WordPress 插件或清除缓存,然后在 Pingdom 上再次检查。

GTmetrix DNS 查找

要检查导致 GTmetrix 上 DNS 查找时间更长的原因,请输入您的 URL:

gtmetrix-report-example

转到 Waterfall 选项卡,当您将鼠标悬停在特定文件请求上时,DNS 查找会标有绿色条,以毫秒为单位。

gtmetrix dns lookup result

您需要查看每个文件,查看哪个文件具有 DNS 查找,并查看它们的加载时间。请记住,40 毫秒或更高是我们想要的目标。

WebPagetest DNS 查找

虽然 Pingdom 和 GTmetrix 是很棒的工具,但 WebPagetest 似乎提供了更直接的读取数据。

转到他们的网站并输入您的 URL:

webpagetest test website

测试完成后,转到 “View” 并选择 “Details”:

webpage test detailed report

它们简要概述了您的请求信息,您可以通过单击“DNS 查找”列按最快的响应时间对其进行排列。

这是找到导致 DNS 查找速度缓慢的罪魁祸首的一种更简单的方法。

webpage test dns lookup result

如何减少 WordPress 的 DNS 查找

许多因素导致 DNS 查找缓慢。以下是减少您网站的 DNS 查找的几种方法以及最佳方法。

1. 使用快速 DNS 提供商或 CDN

How CDN helps optimize your server

CDN 从高度优化的服务器集群中缓存您的网站。

减少 DNS 查找响应时间的第一步是使用快速 DNS 服务或 CDN。与托管一样,可以使用多个 DNS 服务提供商,但所有提供商的工作方式都不相同。

如果您找到可靠的 DNS 提供商,您可以切换到他们以减少 DNS 查找。您还可以使用 DNSPerf、DNS Speed Benchmark 或 DNS Speed Test 检查提供商的速度。

如果您正在寻找可靠的 DNS 提供商,DNSPerf 提供了所有不同的提供商及其基准。因此,很容易看出您应该选择哪个 DNS 提供商。

DNSperf top 10 DNS provider
DNSPerf 排名前 10 位的 DNS 提供商

或者,如果您想查看当前 DNS 提供商的表现如何,您可以使用 DNS Speed Benchmark 来查看世界上哪个地区的服务最好。这样,您可以根据目标国家/地区与您的提供商合作。请参阅下文:

DNS speed benchmark that shows the area
DNS 速度基准显示世界不同地区的 DNS 查找

您还可以使用可靠的内容交付网络 (CDN),例如 Cloudflare,从而减少 DNS 查找。

CDN 是用作浏览器和网站之间中介的服务。它使用一组高性能服务器,而不仅仅是像典型托管计划中可用的服务器那样的服务器。

您可以使用它来缓存尽可能多的网站内容,以便您的网站可以利用优化的性能快速加载您的网站。

有关详细信息,请查看如何测试 DNS 服务器响应时间以排查站点速度问题。

2. 利用 DNS 缓存

缓存可用于最大限度地减少 DNS 查找,因为每个后续页面加载所需的查找次数更少。

DNS 缓存充当存储,将主机名保存一段时间。当浏览器请求元素时,缓存会提供主机名,而不是要求 DNS 查找。

更改 DNS 记录的生存时间 (TTL) 设置以启用 DNS 缓存。

DNS 缓存的长度由生存时间 (TTL) 决定。

并非所有 DNS 记录都应该缓存相同的时间。一些普遍接受的准则是:

  • CNAME 记录:24 小时
  • A 和 AAAA 记录:5 分钟到 1 小时
  • TXT 记录:12 小时
  • MX 记录:12 小时

您的 A 和 AAAA 记录必须设置为较小的数字。但是,CNAME、MX 和 TXT 记录通常可以设置为更高的值,例如 12 或 24 小时。

设置 DNS 缓存时,请记住 TTL 值通常以秒为单位显示。在定义您的值时,需要考虑到这一点。

3. 设置 DNS 预取

您可以通过将 DNS 查找设置为使用 DNS 预取在后台执行来减少延迟。预取使浏览器能够在后台执行 DNS 查找。当用户读取一个网页时,浏览器将请求预取元素。这主要用于您内容中的链接。

您可以为 Google Analytics、Font Awesome、Google Fonts 等资产设置此项。

要在 WordPress 网站上启用 DNS 预取,请将以下代码添加到页面文件的标头中:

<!-- DNS Prefetching -->
<link rel="dns-prefetch" href="//asset1.com">
<link rel="dns-prefetch" href="//asset2.com">

不要忘记将 “asset1.com” 和 “asset2.com” 替换为适当的 URL。您还可以根据需要重复最后一行。

4. 启用 Keep-Alive

减少 DNS 查找的另一种方法是启用 keep-alive。这意味着保持服务器和浏览器之间的连接始终处于活动状态,以便一次加载更多资源文件。

如果没有它,资源文件将全部作为单独的请求加载,即使单个域中包含多个资源也是如此。

例如,来自“website1.com”的 1 个资产和来自 “website2.com” 的 3 个资源总共是四个 DNS 请求。

启用 keep-alive 后,这些相同的资源将仅作为两个请求加载。

所有主流浏览器都支持 keep-alive,并且在大多数情况下默认启用。如果已禁用,您可以在 Apache 和 Nginx 服务器上重新启用它。

对于 Apache

在 Apache 服务器上,您应该通过 .htaccess 文件添加以下代码。

<ifModule mod_headers.c>
Header set Connection keep-alive
</ifModule>

对于 NGINX

要在 NGINX 服务器上启用 keep-alive,请找出 HTTP 核心模块 (ngx_http_core_module),搜索类似于 keep-disable 的行,并将其替换为以下行。

keepalive_disable none;

5. 减少主机名的数量

减少 DNS 查找的最简单方法是删除对不同主机名的请求。使用 Google PageSpeed Insights 等速度测试工具通过速度测试运行您的网站。结果将显示触发 DNS 请求的主机名和资产列表。

您可以审核此列表以减少请求数。例如,对每个社交图标按钮等图形的外部请求需要 DNS 查找。因此,在审核时,请注意这些资源是否对您的网站至关重要。

6. 本地托管第三方资源

如果您的主机名审计显示您仍有多个外部资源,请尝试在本地托管资源。本地托管还允许对这些资源的缓存和交付进行额外控制,并消除 DNS 搜索阶段。

从现在保存文件的位置下载您需要的文件,并将它们上传到您的 Web 服务器或 CDN 以托管资源。

但是,如果您收到对不断更新的脚本(如字体库)的请求,则在本地托管它们可能并不理想。由于这些资源经常更改,因此最好不要理会其脚本,并且可以采取其他措施来限制其 DNS 查找的影响。

以下是一些导致长时间 DNS 查找的常见第三方资源。

第三方字体:Google Fonts 或 Awesome Fonts

Third-Party fonts_ Google Fonts css dns lookup

像 Google Fonts 这样的外部托管字体也是加载最重的第三方资源之一。要从 Google Fonts 获取 CSS 文件,您必须向 fonts.googleapis.com 发出额外的 DNS 请求。然后,您可以向 fonts.gstatic.com 发送进一步的查询以获取字体文件。

当您在本地托管时,所有请求都来自同一个域或 CDN,您不需要另一个 CSS 文件,因为它将包含在您的 WordPress 主题的 CSS 文件中。这样做有优点也有缺点,但请参阅我们关于如何在本地托管字体的深入博文以获取更多信息。

我们偶尔会看到插件开发人员和主题在 WordPress 网站上整合 Font Awesome。但是,有时它们的添加方式是像 CDN enabler 这样的插件默认会错过并导致它增加您的加载时间。在这种情况下,我们建议联系开发人员以询问如何从您的 CDN 加载它。

另一种典型的 Font Awesome 情况是它偶尔从默认的 BootstrapCDN (MaxCDN) 加载。虽然这没有任何问题,但它添加了一个您不需要的 DNS 查询。在大多数情况下,最好从你自己的 CDN 加载 Font Awesome,以避免额外的查找。

本地托管 Google Analytics

Google 自己的脚本会发出缓存警告,但这是因为他们的 HTTP 缓存标头过期时间设置得太短了。当您自己托管它时,您自己的 CDN 或服务器的 HTTP 缓存标头将自动应用。换句话说,您可以完全控制脚本的缓存。

Google Analytics 不仅在 GTmetrix 中生成 DNS 搜索,而且还生成了“使用高效缓存策略提供静态资产”问题。

analytics tracking code dns lookup
reduce javascript execution time analytics.js

加载缓慢的视频

来自源的第三方请求由嵌入式视频(通常是 YouTube 或 Vimeo)生成。

您可以通过缓慢加载视频并将 iframe 替换为预览图片来显著缩短视频加载时间和 DNS 查找。

使用缓存插件(例如 WP Rocket)可以将 YouTube 缩略图作为预览图像,并允许您延迟加载图像和视频。

或者,您可以使用其他插件来帮助进行视频延迟加载:

7. 延迟加载 JavaScript

推迟 JavaScript 是最好的解决方案,而不会太技术化。它不一定会加快 DNS 查找速度,但会优化您的首屏内容。

因此,用户会注意到您的网站加载速度更快,从而提高了感知性能。此外,延迟 JavaScript 处理允许首先加载关键材料,然后加载非关键 JS。

您还可以使用 WP Rocket WordPress 插件,它允许您快速延迟和延迟 Javascript 加载。

但是,请务必注意,您必须浏览所有正在运行的 Java 脚本并确定您不想延迟的 JS 脚本。这是因为需要一些 javascript 来呈现首屏材料。

8. 避免使用以 DNS 查找而闻名的插件

Hotjar、Leadpages、实时聊天和其他具有跟踪脚本的插件。

这些最终会导致额外的 DNS 查找,并且通常是无法修复的。

这是一种妥协,就像 Google AdSense 或 Google Tag Manager 一样。

那么,您如何确定他们是否应该留在您的网站上呢?

好吧,问问自己,您是否更担心这些工具的使用方式或网站的加载速度有多快?

查看此常见缓慢插件列表,并在可行的情况下尽量避免使用它们。除了避免使用执行 DNS 查找的插件外,您还应该避免使用具有大型 JavaScript 或 CSS 文件的资源密集型插件(如 Elementor)。

页面构建器、终极插件、社交分享、统计、投资组合、滑块、备份、聊天、日历、联系表、相关帖子以及那些执行持续扫描 + 进程的插件是最缓慢的插件。WooCommerce 网站可能非常耗费资源。

如何找到最慢的插件和主题

一个典型的网站通常会安装 20-30 个插件。

一些插件会导致前端加载缓慢,而另一些插件会创建资源密集型后台进程,从而提高 CPU 使用率。当这些插件收集数据、创建备份或构建大型数据库表时。

Query Monitor 是一款出色的 WordPress 调试工具。它提供了大量数据,可以帮助用户确定导致速度和性能困难的原因。

安装后,转到 Query Monitor Settings>>Queries>>Queries by Component。在那里,您可以看到已安装的每个插件的加载时间。

Using Query Monitor plugin to identify heavy resour

其他工具(如 New Relic、GTmetrix 和 Chrome 开发人员工具)也可能有效,但我认为它比 Query Monitor 更复杂。

始终选择由具有良好声誉的专家创建的插件。这些插件将遵守 WordPress 代码标准,并且不会对您网站的速度和性能产生不利影响。

不要忘记主题以及它们如何导致您的网站加载缓慢。查看我们的文章,了解如何为您的网站选择最快的 WordPress 主题。

9. 使用 WordPress 插件减少 DNS 查找

我简要地讨论了减少您应该使用的插件数量。那么,为什么我要推荐插件呢?

我不是伪君子!如果您可以选择使用一体化解决方案来帮助您的整个 Core Web Vital 性能,我肯定会推荐它,而不是安装几个不同的插件来做相同的工作。但是,如果您正在寻找免费选项,Asset Clean 和 Autoptimize 等插件可以帮助减少 DNS 查找。

虽然建议使用手动方法来减少更有效的 DNS 查找,但也可以使用各种 WordPress 插件来帮助您更有效地减少 DNS 查找。说我这边很懒惰,我不想写一整套关于如何手动完成所有事情的技术文档!

但是,请注意,插件将无法涵盖 DNS 查找减少的所有元素,但它们可以使某些阶段更快、更自动化,例如 CDN 托管和浏览器缓存。


结论

你有它!减少 DNS 查找对于优化网站的性能非常重要。由于丰富的第三方服务,外部请求增加了很多,这增加了网站访问者的延迟。

按照本指南中的所有上述步骤,您可以更快地减少 WordPress 中的 DNS 查找。



评论

发表回复

必填项已用 * 标注