rails 3.1资产管道css缓存正在开发中



我有点困惑,因为application.css似乎包含了自己两次,一次是列出清单中的资源,然后是其中的缓存。因此,当我删除一个单独的文件时,它在application.css文件中似乎仍然有效。

application.css(源代码(

/*
*= require twitter/bootstrap
*= require_self
*= require_tree ./common
*= require_tree ./helpers
*/

它按预期工作,并在开发模式下输出所有相关的单个文件

development.rb

  # Do not compress assets
  config.assets.compress = false
  # Expands the lines which load the assets
  config.assets.debug = true

输出

<link href="/assets/twitter/bootstrap.css?body=1" media="screen" rel="stylesheet" type="text/css" />
<link href="/assets/application.css?body=1" media="screen" rel="stylesheet" type="text/css" />
<link href="/assets/common/announcement.css?body=1" media="screen" rel="stylesheet" type="text/css" />
<link href="/assets/common/button.css?body=1" media="screen" rel="stylesheet" type="text/css" />
<Blah blah>

application.css(输出(

这应该是空白的?由于我的application.css文件中只有清单,没有实际的css,但我得到了106kb长的所有连接代码。

IE如果我删除公共目录中的文件,它不会消失。它不再列在输出中,但css仍然出现在应用程序中。css

我以前遇到过这样的问题。它是在我预先编译了资产之后引起的,它在公用文件夹和应用程序目录中的application.css之后。我不知道如何修复它,这样它就不会在开发模式下继续发生,但如果你删除了/public/assets目录,它应该会修复它。

检查一下你是否有一个公共/资产文件夹,如果你有,并且它已经满了,这可能就是你看到双倍的原因。

目前(2012-09-24(轨道/链轮中存在一个错误,导致无法正确检测导入的文件。

这应该固定在轨道3.2.9和更高版本中,但同时,您可以按照以下方式解决它:

  1. 杀死rails实例
  2. rm-rf tmp/cache
  3. 启动rails实例

您现在应该看到了正确的css。

您可能需要查看

https://stackoverflow.com/a/7854902/686460

"将config.serve_static_assets=false添加到development.rb将阻止从/public/assets加载文件">

这对我来说很好。

@Agustin的解决方案对我来说也很好,但你需要做一些事情:

  1. 删除/tmp/cache/assets 中的所有内容

  2. config.serve_static_assets = false添加到development.rb或test.rb(信用给@Agustin(

  3. 重新启动服务器。

  4. 请确保您的应用程序.js/.css没有缓存在浏览器中。转到http://localhost:3000/assets/application.js?body=1并点击ctrl+f5强制刷新(您也可以尝试在末尾附加一个随机化器参数:http://localhost:3000/assets/application.js?body=1&rnd=12343如果你得到了其他东西,而ctrl+f5仍然没有帮助,你需要清除浏览器的缓存。

跳过这两个步骤都会返回一个缓存的应用程序.js/.css,该应用程序与我在单个文件中的更新冲突。

对我来说最好的方法是删除tmp/cache/*目录的内容。。。

对我们有用的是设置"config.assets.debug=false">

这不再将包含HTML的CSS设置为href="/assets/bootstrap new.CSS?body=1",而是将其设置为href="/assets/bootstrap new.CSS",我认为这就是问题所在。

我也遇到了同样的问题。尽管清除了tmp/cache和public/assets,但缩小后的application.css仍然被缓存并从某个地方提供,我对单个css文件的更改也没有得到服务。

这对我很有效:在应用程序中.css删除线路*= require_self

重新启动服务器

这似乎删除了缓存,如果你点击浏览器源中的application.css,你将不再看到缩小版

将CCD_ 6替换回文件中并继续开发。

我需要最后一步,但我已经修复了。以下是我所做的:

  1. 关闭rails服务器
  2. rake资产:清理
  3. rake tmp:清除
  4. 重新启动rails服务器

然后,我在谷歌浏览器中刷新了我的屏幕,但它仍然不起作用。所以,我推出了Firefox,瞧,它真的很管用。这意味着Chrome正在浏览器中缓存旧文件。所以,我清除了Chrome中的浏览器缓存,它成功了!

我知道这是一个老问题,但对我有效的一个修复方法是,我让nginx代理我的开发环境,并且它在配置中有一个location ~ ^/(assets)/块。要么将其注释掉,要么尝试重新启动nginx以使缓存无效。如果你正在开发,你可能只想把它完全评论掉。

我浪费了太多时间来解决这个问题,直到我想起了这一点。

当在生产环境中运行应用程序时,资产会更好地完成它们的工作,然后您将只加载包含所有文件的application.css,并对其进行压缩,以减少服务器请求,并且将缓存具有压缩样式的application.cs。

http://guides.rubyonrails.org/asset_pipeline.html

最新更新