通过将主机名放在主机文件中来加速 Apache 重定向

Posted

技术标签:

【中文标题】通过将主机名放在主机文件中来加速 Apache 重定向【英文标题】:Speed up Apache redirects by putting hostnames in hosts file 【发布时间】:2013-03-20 03:14:34 【问题描述】:

我正在使用 apache 并拥有一个域,例如:www.example.com。 我使用以下命令将 example.com 重定向到 www.example.com:

https://***.com/a/1100363/441907

我还有一个 www.example.com 的虚拟主机条目。

然后我遇到了性能问题,通过将 www.example.com 放入我的主机文件 127.0.0.1 解决了这些问题。

我的问题是:

将 example.com 也放入 hosts 文件中是否会提高性能,或者这是否没有意义,因为它只是解析为已经在 hosts 文件中的 www.example.com?

【问题讨论】:

DNS 查找的性能损失将小于 apache 重定向调用的性能损失。由于服务器必须告诉浏览器页面已移动,因此 apache 重定向会导致完整的旅行时间损失。然后浏览器发出另一个新页面的请求。 很抱歉,我没有得到您的答复 :) 我应该将 example.com 放入我的 hosts 文件中吗? (它会提高我的速度吗?) 你为什么要问(两次)而不是尝试呢?我不明白你的性能问题是什么,或者你是把你的解决方法放在客户端还是服务器上,但是如果你从 A 重定向到 B,你的客户端将解析两个域,而服务器将不会在下面解析正常配置。 【参考方案1】:

如果您想避免任何 DNS 查找,您应该将这两个条目都放在您的主机文件中:

127.0.0.1 www.example.com example.com

添加example.com 可加快向http://example.com 发出的第一个请求,而仅添加www.example.com 可加快重定向后的后续页面加载速度。

换句话说,删除example.com 仅在以下情况下很重要:a)您通过其非规范名称访问该网站,并且 b)您确实担心它会导致一次性延迟。

话虽如此,但应该提到的是,这仅在开发过程中有用:)

【讨论】:

你说它只在开发过程中有用,但是当主机文件中没有 www.example.com 时我遇到了严重的延迟问题(超过 2 秒的延迟)。还是您的意思是,将 example.com 放入 hosts 文件中只会在开发期间出于某种原因提高速度? @Nick 在您的主机文件中添加自定义条目仅在您在本地运行的站点上进行主动开发时才实用。访问您网站的其他人通常不会这样做 :) 不,我不是说我把它们放在我的主机文件中,我把它们放在解决严重问题的服务器的主机文件中(我在 *** 上找到了这个提示,我会看看线程) @nick 好吧,我的大部分回答仍然适用,但服务器不应该首先将许多 dns 查找作为其每个请求操作的一部分。 服务器是否为重定向(example.com)进行任何 dns 查找?还是仅在内部重定向到 www.example.com? (这就是我应该首先表达这个问题的方式......)【参考方案2】:

我认为,将 example.com 放入您的主机文件确实有点没有意义,因为 ServerName example.com 被永久重定向到 www.example.com/ em> 根据您链接的配置。而且您还可以详细编辑您的问题,以便其他人可能会遇到您的性能问题,如果我能猜到,我什至可以改进这个答案。其实可以自己测试一下,如果把example.com放到你的hosts文件里,性能会提高,我想通过比较他们在这种网站上的速度@987654321 @但我不确定。不过,我确信有一个用于测试性能的软件应用程序。

您仍然可以暂时删除 example.com 的重定向,并检查它是否有类似 www.example.com 的问题,如果有则尝试放置将其放入主机文件中。如果通过这样做来修复它,对我来说,即使我要将它重定向到其***域,我也会将该域放入 hosts 文件中。如果 example.com 之前曾出现过类似 www.example.com 的性能问题,那么该性能可能也会影响 URL 重定向的速度。

【讨论】:

以上是关于通过将主机名放在主机文件中来加速 Apache 重定向的主要内容,如果未能解决你的问题,请参考以下文章

XAMPP Apache 将我的虚拟主机重定向到 /dashboard

如果主机名不是,htaccess 重定向

Apache 从服务器主机名提供基于名称的虚拟主机(但不应该)

Apache2 错误:通过 SNI 和 HTTP 提供的主机名不匹配

Apache 2.4 将本地虚拟主机重定向到 https 而不是 http

如何使用 nginx 将数百个主机名重定向到其他主机名