如何减少DNS查找次数,提高查询速度

温馨提示:注册会员付费购买资源可永久免费下载更新版本

你可以为WordPress做很多不同的优化,其中一些比另一些更重要。一个经常被忽视的因素是与DNS相关的查找时间,以及它对你的网站有多大影响。就像TTFB和网络延迟一样,这是计算总页面加载时间时的一个重要问题。

所以今天我们将探讨一些关于如何减少DNS查找并加快它们的建议,为什么我们应该这样做,以及它如何在WordPress网站的性能中发挥作用。

什么是DNS查找?

为了向您展示什么是DNS查找,您首先需要知道DNS是如何工作的。DNS(域名系统)本质上是互联网的主干。解释DNS如何工作的一个常见参考是将其视为万维网的电话簿。您访问的每个网站和域都映射到一个IP地址。

当您在地址栏中键入Google.com时,您的ISP将执行DNS查询来请求与该域相关联的名称服务器。然后服务器在后台完成到IP地址的映射,然后你就可以用域名访问了。没有域名系统,你将不得不输入类似216.58.217.206的东西来访问谷歌。那不是很有趣吗!

DNS的工作原理

当您浏览网站时,在下载任何内容之前,您必须对每个请求的域进行DNS查找。但是,没有必要在每个资源上执行DNS查找。例如,假设我们有以下HTTP请求:

https://wpdev.ink/https://js.stripe.com/v3/https://cdn.wpdev.ink/wp-content/themes/twentyseventeen/assets/images/header.jpghttps://cdn.wpdev.ink/wp-content/themes/twentyseventeen/assets/js/skip-link-focus-fix.jshttps://cdn.wpdev.ink/wp-content/themes/twentyseventeen/assets/js/global.jshttps://cdn.wpdev.ink/wp-content/themes/twentyseventeen/assets/js/jquery.scrollTo.jshttps://cdn.wpdev.ink/fonts/open-sans-v13-latin-regular.woff2https://cdn.wpdev.ink/fonts/open-sans-v13-latin-700.woff2

虽然上面有八个HTTP请求,但是总共只有三个唯一的域。这意味着有三次DNS查找。

https://wpdev.inkhttps://js.stripe.comhttps://cdn.wpdev.ink

DNS查找Pingdom

以下是上述请求在Pingdom网站速度测试工具中的显示方式。DNS以毫秒为单位表示为粉红色条。当您第一次通过Pingdom运行您的网站时,它将执行新的查找,并且必须查询每个域的DNS记录以获取IP信息。请注意,它不必在cdn.wpdev.ink域上多次查询DNS。这就是DNS的工作方式。它只需要查询一个域一次。所以下面总共有8个请求,但是只有3个DNS查找。

此DNS查找将导致额外的加载时间,因为在DNS查找完成之前无法加载任何内容。请注意,在CDN URL上进行DNS查找需要300毫秒以上。这不包括在wpdev.ink或js.stripe.com上的搜索。所以你可以看到这是如何随着时间的推移而增加的。

DNS查找Pingdom

当您通过Pingdom多次运行您的网站时,它会缓存DNS,因为它已经知道IP信息,不必再次执行查找。这也是你的网站在多次运行Pingdom后显示速度更快的原因之一。正如您在下面的屏幕中看到的,在第二个测试中,CDN URL上的DNS查找时间是0毫秒。这是很多人误解的一个领域。不过不用担心,下面我们会深入探讨DNS缓存。

DNS缓存Pingdom

GTmetrix中的DNS查找

每个网站速度测试工具的工作方式略有不同,但几乎所有工具都会为您计算DNS查找时间。以下是相同请求在GTmetrix中的显示方式。由DNS绿色条表示,以毫秒为单位。

GTmetrix中的DNS查找

WebPagetest中的DNS查找

这是一个使用WebPageTest的例子。它们实际上对您的请求细节有一个快速概览,您可以点击“DNS查找”栏,并按最高响应时间对它们进行排序。让我们以通过这个工具运行usatoday.com为例。仅DNS查找时间就需要6.5秒!

这是常见的,许多这些新闻网站不是高度优化,由于所有的外部要求。但是正如你所看到的,他们网站上的DNS查找时间可能比大多数人的整个网站都要长。这就是为什么DNS很重要。

DNS查找时间长(网页测试)

如何减少和加快DNS查找

现在你已经知道了更多关于DNS的工作原理,我们将向你展示一些关于如何减少DNS查找和加快在你的WordPress站点上查找的建议。在一些网站速度测试工具中,这有时被称为“最小化DNS查找”。

最小化Pingdom中的DNS查找

提示1-使用快速DNS提供商

重要的是要明白,就像主机,有越来越快的DNS提供商。这应该是你要解决的第一件事。

一般GoDaddy、Namecheap等域名注册商提供的免费DNS都很慢。DNS提供商通常像CDN一样工作,他们在世界各地有多个pop。大型DNS提供商,如Amazon、Cloudflare、Dyn和DNS Made Easy,都有专门为低延迟环境的DNS设计的大型基础架构。

我们进行了一些测试来比较一些流行的DNS提供商的速度。我们使用了KeyCDN的性能工具和SolveDNS的速度测试,取平均值。速度是从世界各地的多个位置测量的。如你所见,除了Cloudflare,免费的DNS提供商肯定更慢。这就是为什么如果你认真对待你的业务和网站,我们强烈建议你使用优质的DNS提供商。

DNS提供商速度

上述一些提供商在某些领域也比其他提供商更快,因此确定您需要快速DNS查找时间的领域(区域或全球)非常重要。DNSPerf是另一个较新的DNS速度比较工具,您可以在选择提供商时使用。你知道不使用Cloudflare的CDN功能也可以使用它的DNS吗?

技巧2–更改TTL值以利用DNS缓存

幸运的是,正如我们上面提到的,由于DNS缓存,您不必担心在加载时查找每个页面。这实际上是关于第一个要求。DNS缓存的工作方式与缓存WordPress站点类似。从DNS缓存提供,直到过期(这是刷新DNS缓存的方式)。DNS缓存的长度由其所谓的生存时间(TTL)值决定。TTL越高,浏览器执行另一次DNS查找的可能性就越小。

您可以通过您的域注册商或第三方DNS提供商更改TTL值,以改善您的DNS缓存时间。请注意,ISP也会缓存DNS。以下是一些常见的TTL值。

300秒= 5分钟

800秒= 30分钟

300秒= 1小时

3200秒= 12小时

8400秒= 24小时

Cloudflare TTL

30分钟到1小时通常是最常用的TTL值。然而,有些也将其TTL设置得很低,以允许快速更新。Cloudflare就是一个例子。如果使用自动TTL,默认为5分钟。查看不同类型的DNS记录并根据它们更改的频率相应地设置它们也是有用的。下面是一个例子:

a和AAAA记录:变化更频繁,通常从5分钟到1小时。

CNAME记录:几乎从不改变,更高的TTL(如24小时)通常是可能的。

NS记录:几乎从不改变,更高的TTL,比如24小时,通常是可能的。

MX记录:不经常变化,像12小时这样的高TTL通常是可以的。

TXT记录:不经常变化,通常12小时的高TTL就够了。

TTL真的没有对错之分。但它可以通过选择与您站点的更改频率一致的TTL来改进您的DNS查找时间。

技巧3-减少域名(主机名)的数量

减少站点上DNS查找的最简单方法就是简单地删除查询不同主机名的请求。请记住,DNS查找与请求的数量无关,而是与不同域的数量有关。通过Pingdom等工具运行你的WordPress网站,确定每个请求是否真的有必要。既然DNS是主机名到IP的映射,你可能会奇怪为什么人家不直接指向IP?这是因为IP地址可以经常更改,但主机名不能。

技巧4–使用DNS速度更快的替代服务

虽然简单地减少域名(主机名)的数量说起来容易做起来难,但我们建议您首先检查那些DNS查找时间较长的域名。比如我们下面测试的这个站点,我们很容易发现疯狂彩蛋追踪脚本的DNS查找时间要比其他站点长很多。这可能是因为他们的DNS提供商没有其他提供商快。

查找的DNS查找时间长

在这种情况下,您可以检查其他提供商,如Hotjar,它们提供相同的服务,但可能使用更快的DNS提供商。当向WordPress站点添加外部服务时,评估其性能是非常重要的。

5–在CDN上移动和托管资源

减少DNS查找的最简单方法之一是将尽可能多的资源转移给CDN提供商。如果通过Pingdom运行站点,可以按域查看请求总数。正如你在这个例子中看到的,93.8%的请求指向CDN URL。有一个对主机的请求和一个对谷歌分析的请求。通过将尽可能多的资源转移到CDN,这减少了所涉及的DNS查找次数,从而减少了加载时间。

按域请求

当然,现在也不一定能把所有东西都搬到你的CDN上。总会有一些外部资源或服务需要你从他们的服务器上加载。但是我们建议你浏览你的网站。很多时候,我们看到WordPress用户的很多资源并没有被正确的托管在他们的CDN上。通过这样做,您还可以更好地利用HTTP/2和并行性。以下是一些我们经常看到的可以改进的资源:

字体真棒

偶尔我们会在WordPress网站上看到包括字体牛逼在内的插件开发者和主题,但有时候也是这样排队的。默认情况下,像CDN enabler这样的插件将无法捕获它。在这种情况下,我们建议联系开发者,询问他们如何从CDN加载。

Font Awesome的另一个常见情况是,有时会从默认的BootstrapCDN (MaxCDN)加载。虽然这没有什么错,但是它增加了另一个您不需要的DNS查找。大多数情况下还是从自己的CDN加载Font Awesome比较好,这样就不会再有搜索了。

格拉瓦塔尔

如果你使用WordPress本地评论,你可能需要寻找额外的secure.gravatars.com来加载gravatar。一个简单的解决方案是使用延迟加载注释插件。虽然这不会减少DNS查找,但会延迟它,直到用户向下滚动页面。因此,从某种意义上说,当首页加载时,您正在减少DNS查找。请务必查看我们的博客文章,了解加快评论速度的其他方法。

谷歌字体

使用谷歌字体,你有一个额外的DNS请求来找到fonts.googleapis.com以获得CSS文件。然后,你可以发送其他请求到fonts.gstatic.com下载字体文件。当你在本地托管所有的请求时,所有的请求都来自同一个域或CDN,很可能你不需要另一个CSS文件,因为它会在你的WordPress主题的CSS文件中。这有利有弊,但请查看我们关于如何在本地托管字体的深入文章。

谷歌字体DNS查找

Font Awesome、Gravatars和Google Fonts只是通过确保从CDN加载来减少DNS查找的几个例子。您目前是否正在从CDN加载所有可能的内容?看一看总是好的。

6–使用DNS预取

另一种加速DNS的技术是使用DNS预取。这允许浏览器在后台对页面执行DNS查找。你可以通过在WordPress网站的标题中添加几行代码来做到这一点。请看下面的一些例子。

除了iOS Safari、Opera Mini和Android浏览器,各大浏览器也都支持DNS预取。

DNS预取浏览器支持

或者,如果你运行的是WordPress 4.6或更高版本,你可能需要使用资源提示。开发者可以使用wp_resource_hints过滤器为dns添加自定义域和URLs预取、预连接、预取或预呈现。

7–延迟JavaScript的加载

如果您延迟JavaScript的加载,这可能会阻止内容在文档完全加载之前被加载。这不会减少所需的DNS查找次数,但会阻止它们被立即调用,从而加快用户体验。关于如何延迟JavaScript,Varvy有一个很好的解释。他在自己的网站上使用的一个例子是他的谷歌分析脚本,因为它没有理由在第一个屏幕上加载。

在WordPress中,可以使用Async JavaScript等免费插件来延迟JavaScript的加载。但是,知道您很可能必须浏览并列出您希望从延迟应用程序中排除的任何脚本是很重要的。为什么?因为在第一个屏幕上渲染需要一些JavaScript。Async JavaScript也完全兼容Autooptimize插件。

在WordPress中推迟JavaScript

请务必查看我们关于如何消除阻碍渲染的JavaScript和CSS的深入文章。

技巧8-使用匿名记录和CNAME展平

还有来自DNS Made Easy和Cloudflare等提供商的额外记录,这有助于减少后端的请求数量。

使用DNS轻松记录姓名

“同名记录”为您提供了CNAME记录的功能,但是是在根级别。例如,假设您为www.domain.com配置了CNAME。Www必须首先解析到主机名,然后解析到IP地址。这需要两个请求。有了姓名记录,你可以跳过其中一个请求!如果设置正确,这些也可以与CDN结合使用。

CNAME

ANSWER SECTION:www.domain.com. 1799 IN CNAME domain.com.domain.com. 1799 IN A 192.168.1.2

阿纳姆

ANSWER SECTION:www.domain.com. 1799 IN A 192.168.1.2

然而,事实并非总是如此。如果主机名在同一个DNS区域中,则可以在同一个请求中检索A记录。

利用云耀斑进行CNAME拉平

与ANAME records类似,Cloudflare在该区域的顶点(或根)为其客户提供自动CNAME拉平。

总结

DNS通常是那些被忽略的性能因素之一,但是如果你不小心的话,它很容易占据整个加载时间的很大一部分。了解DNS是如何工作的,哪里有越来越快的提供商,如何减少查找来加快站点速度,这些都很重要。

声明:

1,本站分享的资源来源于用户上传或网络分享,如有侵权请联系站长。

2,本站软件分享目的仅供大家学习和交流,请不要用于商业用途,下载后请于24小时后删除。

3,如果你也有好的建站资源,可以投稿到本站。

4,本站提供的所有资源不包含技术服务请大家谅解!

5,如有链接无法下载,请联系站长!

6,特别声明:仅供参考学习,不提供技术支持,建议购买正版!如果发布资源侵犯了您的利益请留言告知!


创网站长资源网 » 如何减少DNS查找次数,提高查询速度