奇怪的 js 被缓存的问题

realghost 2013-07-07 04:42:48
开发中遇到一个非常奇怪的问题:
一个.js 文件,通过 FTP 上传到服务器,但是浏览器中获取的还是老的 .js 文件内容,换了浏览器还是一样,甚至开了虚拟机,在虚拟机里面获取那个 .js 文件,仍然是老的内容,没有更新
把这个 .js 文件换个名字,例如把 a.js 更名为 a1.js,通过浏览器就可以获取新的内容了
但是不通过浏览器,通过 ftp 下载,这个 .js 文件,又是正常的。真是奇怪了,换了很多办法都没有解决这个问题。
不知道各位有没有遇到这样的奇怪问题,究竟是怎么一回事,怎样才能更新浏览器中 的 .js 文件?
...全文
281 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
街头小贩 2013-07-07
  • 打赏
  • 举报
回复
引用 4 楼 realghost 的回复:
我从ftp上面下载下来的是更新的文件 通过浏览器下载的就是那个没有更新的文件
哪还是你本地的缓存文件
街头小贩 2013-07-07
  • 打赏
  • 举报
回复
当html加载的外部文件返回304状态码时,会使用本地的缓存文件,如果你的js文件真的有改动并ftp成功后,它不会返回304,而是200
泡泡鱼_ 2013-07-07
  • 打赏
  • 举报
回复
引用 2 楼 realghost 的回复:
[quote=引用 1 楼 xiaofanku 的回复:] 清一下浏览器的缓存或给js加一个附加参数,像:xx.js?version=1
谢谢你的答复,给js附加参数可以让这个js更新,但是其他调用这个js的页面还是不能更新 清理缓存没有作用,换一个浏览器都是一样的,甚至换一台电脑,下载下来的还是那个没有更新的js文件,虽然加一个参数可以暂时解决问题,但是这个js不能更新,难道要把所有调用这个js的页面后面都加上一个参数?[/quote] 是的,可能是服务器针对js文件类型做了类似于GZIP的压缩和缓存了。你需要所有调用当前js的路径后都做处理,才能唯被实时更新 当然,如果你一开始就预想到这个问题,那处理时并不困难 比如。后台定义一个全局的变量ver。然后所有需要调用js时,xxx.js?ver=<%=getJsver()%> 又比如针对不同的版本放置于不同的文件夹下,当然也是和上面一样,后台定义一个全局变量保存最新的js文件夹名称 /base_1.001/xxx.js /base_1.002/xxx.js 这两种方法原理相同,应用时效果相同,本人仅在需要保留历次版本时使用第二种方法
街头小贩 2013-07-07
  • 打赏
  • 举报
回复
引用 4 楼 realghost 的回复:
我从ftp上面下载下来的是更新的文件 通过浏览器下载的就是那个没有更新的文件
哪说证明ftp失败了,你在js文件尾加个空格试试
realghost 2013-07-07
  • 打赏
  • 举报
回复
我从ftp上面下载下来的是更新的文件 通过浏览器下载的就是那个没有更新的文件
街头小贩 2013-07-07
  • 打赏
  • 举报
回复
下载下来的还是那个没有更新的js文件, re: 你在说你ftp失败了是吧
realghost 2013-07-07
  • 打赏
  • 举报
回复
引用 1 楼 xiaofanku 的回复:
清一下浏览器的缓存或给js加一个附加参数,像:xx.js?version=1
谢谢你的答复,给js附加参数可以让这个js更新,但是其他调用这个js的页面还是不能更新 清理缓存没有作用,换一个浏览器都是一样的,甚至换一台电脑,下载下来的还是那个没有更新的js文件,虽然加一个参数可以暂时解决问题,但是这个js不能更新,难道要把所有调用这个js的页面后面都加上一个参数?
街头小贩 2013-07-07
  • 打赏
  • 举报
回复
清一下浏览器的缓存或给js加一个附加参数,像:xx.js?version=1

87,991

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧