You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel部署后JS文件未更新问题求助

问题解决:修改JS后网站仍加载旧版本的排查方案

1. 检查服务器静态资源缓存配置

如果使用Nginx等Web服务器,可能因配置了过长的缓存有效期,导致浏览器或代理直接读取缓存而非请求新文件。查看服务器配置中的expires指令,例如:

location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
    expires 30d; # 过长的缓存有效期会阻止资源更新
    add_header Cache-Control "public, max-age=2592000";
}

解决方法:临时将缓存有效期调短,或给目标JS文件添加Cache-Control: no-cache响应头强制刷新;长期建议给静态资源添加版本标识,避免手动重命名。

2. 启用Laravel Mix版本控制(推荐方案)

手动重命名文件效率低下,Laravel Mix自带的版本号功能可自动给资源文件名添加哈希后缀,实现资源自动更新:

  • 修改webpack.mix.js,在编译链末尾添加.version():
mix.js('resources/js/app.js', 'public/js')
   .version();
  • 执行生产环境编译命令:npm run prod
  • 在Blade模板中使用mix()函数引用资源:
<script src="{{ mix('/js/app.js') }}"></script>

每次编译后哈希值会随文件内容变化,浏览器会自动加载新资源,无需手动修改文件名。

3. 排查CDN或反向代理缓存

若网站使用了CDN或反向代理服务,这些节点可能缓存了旧版本的JS文件,即使服务器端文件已更新,用户仍会获取缓存内容。
解决方法:登录CDN/代理后台,手动刷新目标JS文件的缓存;或配置缓存规则,让服务基于文件修改时间、哈希值自动触发缓存更新。

4. 临时强制刷新方案

若需快速验证新内容,可在JS引用路径后添加查询参数:

<script src="/js/app.js?v={{ time() }}"></script>

此方法仅适合临时测试,长期使用会增加维护成本,不推荐作为常规方案。


内容的提问来源于stack exchange,提问作者Sergei

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 19:34:58