共享托管服务器缓存文件引发Laravel项目更新后加载旧页面异常
共享托管主机Laravel项目缓存残留、偶发返回旧内容问题解决方案
服务端层级缓存排查(偶发加载正确内容的核心诱因)
- 托管商内置缓存:多数共享托管平台默认开启服务端页面缓存(如Nginx FastCGI缓存、LiteSpeed缓存、边缘节点CDN缓存),这类缓存独立于浏览器缓存、Laravel应用缓存,多节点部署时不同节点缓存过期时间不一致,会出现随机返回新旧内容的情况。
处理方案:- 登录主机控制面板,找到缓存管理模块,手动清空全站缓存,测试阶段可临时关闭所有服务端缓存功能
- 检查站点根目录下的
.htaccess(Apache/LiteSpeed环境)或Nginx配置文件,删除历史添加的缓存控制规则后重试
- PHP OPcache缓存:共享主机默认开启的OPcache会缓存PHP脚本编译后的字节码,源文件修改/删除后,OPcache未到刷新时间时仍会返回旧的执行结果。
处理方案:- 如有php.ini修改权限,调整配置如下,确认问题解决后可按需调整刷新频率:
opcache.validate_timestamps = 1 opcache.revalidate_freq = 2 - 无配置修改权限的情况下,在主机面板的PHP管理模块清空OPcache缓存,或重启PHP进程生效
- 如有php.ini修改权限,调整配置如下,确认问题解决后可按需调整刷新频率:
Laravel应用全缓存清除流程
执行完整的缓存清除命令,避免遗漏单一类型缓存:
php artisan optimize:clear php artisan view:clear php artisan route:clear php artisan config:clear php artisan cache:clear
如果部署时执行过php artisan optimize生成优化缓存,每次代码更新后必须重新执行上述清除命令,或重新生成优化缓存。
站点路径配置排查
- 确认站点根目录绑定到Laravel项目的
public子目录,而非项目根目录,绑定错误会导致根路径访问时展示目录列表,路由加载异常 - 检查站点根目录下是否存在残留的静态
index.html文件,Web服务器默认会优先加载静态html文件,若存在旧项目生成的静态首页缓存,会优先返回旧页面内容
内容的提问来源于stack exchange,提问作者Omar Alkattan
相关产品推荐
相关产品推荐

