使用缓存JavaScript资产的浏览器,尽管它们在Rails 3.1中被修改
我刚刚将我的应用程序升级到Rails 3.1。我有一个相当复杂的JavaScript代码库,并选择将其连接到单个.js.coffee文件中,由链轮编译。每隔一段时间,我就会对我的一个CoffeeScript文件进行更改,刷新页面,并注意到我的更改没有反映出来。查看Chrome调试器,我注意到没有从服务器读取文件(“网络”选项卡在相应的文件上显示“(来自缓存)”。这似乎是随机发生的,这使得它的发展非常非常令人沮丧。我找到的唯一解决方案是清除浏览器缓存或重新启动浏览器使用缓存JavaScript资产的浏览器,尽管它们在Rails 3.1中被修改,javascript,ruby-on-rails,ruby,coffeescript,Javascript,Ruby On Rails,Ruby,Coffeescript,我刚刚将我的应用程序升级到Rails 3.1。我有一个相当复杂的JavaScript代码库,并选择将其连接到单个.js.coffee文件中,由链轮编译。每隔一段时间,我就会对我的一个CoffeeScript文件进行更改,刷新页面,并注意到我的更改没有反映出来。查看Chrome调试器,我注意到没有从服务器读取文件(“网络”选项卡在相应的文件上显示“(来自缓存)”。这似乎是随机发生的,这使得它的发展非常非常令人沮丧。我找到的唯一解决方案是清除浏览器缓存或重新启动浏览器 有什么想法吗?我尝试在java
有什么想法吗?我尝试在javascript_include_标记调用中打开:debug,但得到了相同的结果。事实上,当我有多个标记时,似乎唯一返回(从缓存)的资产就是我更改的那些!这是一个讽刺。Chrome提供了一个选项,可以在其开发人员工具中禁用缓存。转到“设置”,在“网络”下,应该有一个复选框来禁用缓存。我无法复制。我刚刚创建了一个新的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>
还是不一样?你有没有试着按住shift键并点击reload?我认为这应该在不命中缓存的情况下重新加载页面。Chrome 19和Rails 3.2仍然存在问题。即使缓存控制头包含must revalidate,页面也会从缓存中提供(有时)。是的,这是您指定的。这个问题只是偶尔发生,但当它发生时,它是彻头彻尾的恼人。目前,我一直在使用浏览器中的硬刷新(Shift+Cmd+R)来强制重新加载所有缓存的资源,这似乎起到了作用。@Teejay-Huh。那么,您的项目是否可能正在执行任何可能导致缓存资产的操作(即,当请求文件时,服务器将给出“304 Not Modified”)?你的档案中有没有可能有这种效果?