浏览器使用缓存的JavaScript资产,尽管它们在Rails 3.1中被修改

时间:2011-08-31 17:16:55

标签: javascript ruby-on-rails ruby coffeescript

我刚刚将我的应用程序升级到Rails 3.1。我有一个相当复杂的JavaScript代码库,并选择将它连接成一个由Sprockets编译的.js.coffee文件。每隔一段时间,我就会对我的一个CoffeeScript文件进行更改,刷新页面,并注意我的更改没有反映出来。查看Chrome调试器,我注意到没有从服务器读取文件(“网络”选项卡显示相应文件上的“(来自缓存)”)。这似乎是随机发生的,这使得开发非常非常令人沮丧。我发现的唯一解决方案是清除浏览器缓存或重新启动浏览器。

有什么想法吗?我试过转:在我的javascript_include_tag调用中调试,但得到了相同的结果。事实上,当我有多个标签时,似乎唯一返回'(来自缓存)的资产就是我改变的那些!那里有点讽刺。

2 个答案:

答案 0 :(得分:1)

Chrome提供了一个在其开发人员工具中禁用缓存的选项。转到“设置”,然后在“网络”下,应该有一个禁用缓存的复选框。

答案 1 :(得分:0)

我无法复制。我刚刚创建了一个新的Rails 3.1项目,然后做了

rails generate controller welcome index

已删除index.html,未注释

root :to => 'welcome#index'

来自routes.rb,添加了一行

console.log 1

welcome.js.coffee,然后启动Chrome并加载http://0.0.0.0:3000/。我在控制台上得到了1。将号码更改为2,保存,刷新页面,然后获得2。等等。我是否点击Cmd + R或只是在地址中键入类型似乎无关紧要;无论哪种方式,我都会收到最新的welcome.js

你能为我“查看来源”吗?您的脚本是否包含

<script src="/assets/welcome.js?body=1" type="text/javascript"></script> 

还是不一样?