我在 Rails 中开始一个新项目,看起来 application.js list 文件正在对我引用的 javascript 做一些有趣的事情——它是否将这些文件缓存为 Assets 管道的一部分?
事情是这样的。我在 vendor/assets/javascripts 文件夹中添加了一个名为 jquery.autoresize.js 的 javascript 文件,然后在 application.js list 中引用该文件,如下所示:
//= require jquery.autoresize.js
然后我启动了 Rails 服务器。但是在我的应用程序中导航之后,我意识到我不小心添加了错误版本的 jquery.autoresize.js 文件。因此,我删除了该文件,然后将正确的版本添加到 vendor/assets/javascripts 文件夹中。但是,令我恐惧的是,当我重新加载页面时,它仍在加载旧的 javascript 文件。
我尝试清空浏览器缓存,然后退出并重新启动 Rails 服务器,但无济于事。我通过简单地重命名我的 javascript 文件并引用新名称来破解一个解决方案,效果很好。但是必须有更好的解决方案。
新 Assets 管道是否以某种方式缓存您引用的文件?如果是这样,我该如何清除该缓存?感谢您的帮助!
最佳答案
我假设我们正在谈论生产环境。
当您在生产环境中更改任何 javascript 或样式表时,您需要运行 rake assets:precompile
;此任务编译和压缩各种 .js 和 .css 文件,并创建由您的 View 加载的 application.js 和 application.css 文件。
如果您将 jquery.autoresize.js
替换为具有较旧时间戳 的版本,预编译步骤可能会跳过它,认为编译版本已更新 -迄今为止。您可以通过先运行 rake assets:clean
来避免这种情况,强制它从头开始重建 public/assets
目录中的所有内容。
关于javascript - 从 Rails Assets 管道中清除缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10004365/