您当前的位置: 首页 > 建站技术

恩威信息网建站案例:DNS解析慢导致SEO掉排名,3天排查修复全记录

作者:建站技术 时间:2026-02-28 阅读数:人阅读

去年年底接了一个本地信息平台的改版需求——恩威信息网。老站点用的是某虚拟主机,PHP+MySQL,日均IP大概800,百度收录正常。但客户反映从10月开始,首页打开经常要5-6秒,后台编辑文章也卡,百度站长平台抓取诊断频繁报超时。这篇文章把整个排查和修复过程拆开来讲,希望同行少走弯路。

现状判断:响应慢、抓取失败、排名下滑

接手时先看数据。用Chrome DevTools的Network面板测首页加载,DOMContentLoaded在4.2s,完全加载要6.8s。百度资源平台的抓取诊断显示最近7天有3次抓取超时(错误码522),移动端首页排名从第5页掉到了第8页。

服务器配置:单核CPU、1G内存、50G SSD,跑了Nginx 1.18 + PHP 7.4。磁盘I/O正常,CPU空闲率70%以上,内存用了40%。初步判断不是硬件瓶颈。

排查方向:先看网络层,再看应用层。用dig命令检查DNS解析耗时:

dig enweixinxi.com | grep "Query time"
# 结果:Query time: 312 msec

正常DNS解析应该在50ms以内,这里312ms,明显偏慢。同时用curl -w "@curl-format.txt" -o /dev/null -s测全链路,发现连接建立时间(TTFB)占了总耗时60%以上。

方案选择:从DNS到Web服务逐层优化

锁定三个方向:DNS解析提速、Web服务器配置调优、数据库查询优化。

  • DNS方案:原域名用的是域名注册商自带的DNS,节点少。换成腾讯云DNSPod(免费版),解析节点覆盖全国,自带CNAME加速。
  • Web服务器:Nginx开启gzip压缩,配置fastcgi缓存,把PHP动态请求的静态副本缓存下来。
  • 数据库:给文章表(cms_article)的catid和status字段加联合索引,减少全表扫描。

没有选CDN,因为客户预算有限,且站点图片不多,主要是文本内容。DNS换解析商是成本最低的。

执行流程:改DNS、调Nginx、加索引

具体操作分三步走,每一步都做了前后对比。

1. DNS迁移

在DNSPod添加域名,把NS记录改为DNSPod提供的两个服务器地址。注意TTL值改小到300秒,这样迁移过程中旧缓存过期快。等待48小时全球生效后,重新测解析耗时:

dig enweixinxi.com | grep "Query time"
# 结果:Query time: 28 msec

降到了原来的十分之一。

2. Nginx配置优化

/etc/nginx/sites-available/enweixinxi.com中启用gzip和fastcgi缓存:

gzip on;
gzip_types text/plain text/css application/json application/javascript;

fastcgi_cache_path /tmp/nginx_cache levels=1:2 keys_zone=WORDPRESS:10m inactive=60m;
fastcgi_cache_key "$scheme$request_method$host$request_uri";
server {
    location ~ \.php$ {
        fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
        fastcgi_cache WORDPRESS;
        fastcgi_cache_valid 200 60m;
        add_header X-FastCGI-Cache $upstream_cache_status;
    }
}

重启Nginx后,首页第一次访问还是慢,但第二次开始返回X-FastCGI-Cache: HIT,加载时间降到1.2s。

3. 数据库索引

登录phpMyAdmin,执行:

ALTER TABLE cms_article ADD INDEX idx_catid_status (catid, status);

之前分类列表页查询耗时1.8s,加索引后降到0.3s。

风险提醒:DNS切换期和缓存陷阱

踩了两个坑。第一个是DNS切换后,部分省份用户反馈打不开,持续了大概6小时。原因是运营商DNS缓存没刷新,TTL设300秒但有些节点强行缓存24小时。解决办法是同时保留原DNS解析一周,等流量全部切过来再删除。

第二个坑是Nginx fastcgi缓存没清,导致文章更新后首页还是旧内容。加了个hook,在文章发布时自动删除对应的缓存文件:

function purge_cache_on_update($post_id) {
    $cache_path = "/tmp/nginx_cache";
    system("rm -rf $cache_path/*");
}
add_action('publish_post', 'purge_cache_on_update');

这样每次更新文章,首页缓存自动失效,下次访问重新生成。

优化方向:图片懒加载和AMP

目前响应时间稳定在1.5s以内,百度抓取诊断全部通过,一个月后排名回到了第3页。后续可以继续做两件事:

  • 给列表页图片加懒加载(用loading="lazy"属性),减少首屏请求数;
  • 生成AMP版本页面,适配移动端快速收录,百度对AMP有单独的抓取通道。

客户预算有限,这两项可以等流量再涨一些后逐步上线。优化不是一次性做完,而是跟着业务走。

FAQ:建站慢排查常见问题

问:怎么快速判断是DNS还是服务器问题?
答:用dig看DNS耗时,同时用curl -w测TTFB。如果TTFB小但页面加载慢,说明是后端渲染慢;如果TTFB大,优先看DNS和网络链路。

问:Nginx缓存对动态站安全吗?
答:只要合理设置缓存有效期,并且有缓存清理机制(如上面的hook),对动态站是安全的。建议只缓存GET请求,不缓存POST。

问:换DNS服务商会不会丢数据?
答:不会。DNS只做域名解析,不存数据。只要新旧NS记录都配置正确,等待TTL过期后切换即可。建议在低峰期操作。

声明:该信息由用户发布,真实性以及合法性由发布人负责,本站不会介入任何形式的担保!

标签: 建站技术