我的网站目前在执行某些 AJAX 调用时运行缓慢。如果我连续执行 ajax 操作,则一切正常。但如果我暂停几分钟然后触发 ajax 事件,则响应将需要很长时间。根据时间线,原因是 DNS 查找。
我目前正在使用 DNS 提供商,但这是否也可能是我的 Web 应用程序本身或 Apache 的问题?
我的应用程序在 LAMP 堆栈上运行。这个问题发生在不同的人身上。所以这可能不是我的本地机器或浏览器的问题。
请参阅所附的时间线示例图片。第一个发布请求花费了很长时间,但后续请求都少于 1 秒。
更多信息:
我最近使用条目中的 ServerAlias 更改了 apache 的 vhost 设置。之前 ServerAlias 有自己的条目作为 ServerName。
前:
NameVirtualHost *:80
<VirtualHost *:80>
DocumentRoot /home/staging/www
ServerName mydomain.com
</VirtualHost>
<VirtualHost *:80>
DocumentRoot /home/staging/www
ServerName www.mydomain.com
</VirtualHost>
<VirtualHost *:80>
DocumentRoot /home/staging/www
ServerName test.mydomain.com
</VirtualHost>
现在:
NameVirtualHost *:80
<VirtualHost *:80>
DocumentRoot /home/staging/www
ServerName mydomain.com
ServerAlias www.mydomain.com test.mydomain.com
</VirtualHost>
答案1
您可以检查远程 DNS 记录的 TTL,看看“它们”是否设置得过于“激进”,不符合您的例外/需求。
答案2
正如 user48838 的回答所暗示的那样,DNS TTL 绝对值得关注。但是,如果设置得当,您可能需要查看您的“DNS 提供商”。我的意思是,我可以在下克拉科夫斯基的 DSL 线路末端设置几个 DNS 服务器,并挂出一个 DNS 提供商的招牌,但这并不意味着它有什么用处。
总体而言,我对 DNS 提供商持怀疑态度;内部提供 DNS 服务并不困难,如果您自己管理 DNS 服务,则可以更好地控制 DNS 服务。毫无疑问,如果您需要全球、低延迟、高可用性的服务,那么优质的任播服务可以满足您的需求,但实际上它们价格昂贵,而且我并不觉得您是在为大型网站提供服务。
因此,我会非常仔细地检查您的“DNS 提供商”,除非您真的能说服自己他们不是问题的根源,否则要么换一个更好的,要么干脆把它带到公司内部,这样您至少可以管理服务质量并确保它满足某些最低标准。