DigitalOcean更换项目后域名仍显示旧内容的问题排查与解决
问题原因及解决办法
可能的原因
- 浏览器缓存残留:React项目通常会设置强缓存策略,浏览器可能缓存了旧的HTML、JS、CSS资源,即使服务器已替换为PHP项目,仍优先读取本地缓存内容。另外,React项目可能在浏览器本地存储/会话存储中留存了登录状态等数据,导致页面自动跳转到
/login,看起来像是旧站点。 - 服务器端缓存未清理:Web服务器(Nginx/Apache)可能开启了静态资源缓存,或者PHP的OPcache、第三方缓存工具(如Redis)未重置,导致返回旧内容。
- DNS缓存(若涉及IP变更):虽然已过去三天,但部分ISP或本地DNS服务器的TTL设置较长,缓存未完全更新;不过如果是同一Droplet替换项目,IP未变的话,DNS缓存大概率不是主因。
- Web服务器配置未更新:可能仍保留了旧React项目的根目录指向或重定向规则(比如强制跳转
/login的配置),导致部分请求仍指向旧站点。
解决办法
处理浏览器缓存
- 强制刷新页面:使用
Ctrl + Shift + R(Windows/Linux)或Cmd + Shift + R(macOS),强制绕过缓存加载最新内容。 - 清除浏览器缓存:在浏览器设置中清除所有缓存(或覆盖部署后时间段的缓存),同时进入开发者工具(F12)的Application标签,删除
example.com相关的Local Storage和Session Storage数据。
清理服务器端缓存
- Web服务器:若用Nginx,检查配置中是否有缓存规则,执行
sudo systemctl restart nginx重启服务,如有缓存目录则手动清空;若用Apache,重启服务(sudo systemctl restart apache2)并禁用或清理对应缓存模块的缓存。 - PHP缓存:执行
sudo systemctl restart php-fpm(替换为你的PHP版本,如php8.2-fpm)重置OPcache;若使用Redis等缓存工具,执行缓存清空命令(如redis-cli FLUSHALL)。
验证并修正服务器配置
- 确认Web服务器根目录指向:检查Nginx的
root指令或Apache的DocumentRoot,确保路径是新PHP项目的目录,而非旧React项目。 - 清理旧重定向规则:删除之前配置的强制跳转到
/login的规则(比如Nginx的rewrite或return指令),确保请求正常指向PHP项目的入口文件(如index.php)。
排查DNS问题(若IP有变更)
- 刷新本地DNS缓存:Windows执行
ipconfig /flushdns;macOS执行sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder;Linux执行sudo systemd-resolve --flush-caches。 - 验证解析:用
nslookup example.com或dig example.com检查返回的IP是否与当前Droplet一致,确认DNS记录的TTL已生效。
内容的提问来源于stack exchange,提问作者Little Star
相关产品推荐
相关产品推荐

