javascript - 从 Rails Assets 管道中清除缓存

标签 javascript ruby-on-rails caching ruby-on-rails-3.1 asset-pipeline

我在 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/

相关文章:

javascript - Google map 错误不是 latlng 或 latlngliteral invalidvalueerror

ruby-on-rails - Simple_Form在不同输入字段旁边显示验证错误消息

ruby-on-rails - tiny_tds : Segmentation fault

ruby-on-rails - 计算两个日期列 Rails 具有相同差异的记录

java - 使用@Cacheable 注释的真实世界 DAO 的最佳实践

optimization - 将代码保存在 L1 缓存中

c# - NHibernate - Memcached 性能不佳

javascript - 匹配线性渐变及其字符串内容的正则表达式

javascript - 更改 div 边框图像

javascript - 使用 Javascript 在网页上禁用/启用 CSS