首页 文章

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

提问于
浏览
36

我有点困惑,因为似乎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仍然出现在application.css中

10 回答

  • 7

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

    这不再将包含HTML的CSS设置为href =“/ assets / bootstrap-new.css?body = 1”,而是将其设置为href =“/ assets / bootstrap-new.css”,我认为这是问题 .

  • -5

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

    这对我有用:在application.css中删除行 *= require_self

    重启服务器

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

    *= require_self 替换回文件并继续开发 .

  • 4

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

    在记住这个问题之前,我已经失去了太多时间进行故障排除 .

  • 0

    我需要最后一步,但我已经修好了 . 这是我做的:

    • 关闭rails服务器

    • 耙资产:干净

    • rake tmp:清楚

    • 重启rails服务器

    然后,我在谷歌浏览器中刷新了我的屏幕,但仍然没有工作 . 所以,我推出了Firefox和瞧,实际上它正在运行 . 这意味着Chrome正在缓存浏览器中的旧文件 . 所以,然后我清除了Chrome中的浏览器缓存,它运作良好!

  • 10

    我以前遇到过这样的问题 . 这是因为我在公共文件夹以及apps目录中的applcation.css之后预编译了资产 . 我在开发模式下继续发生但是如果你删除了 /public/assets 目录,它应该修复它 .

    检查并查看您是否有公共/资产文件夹,如果您这样做并且它已满,这可能是您看到双倍的原因 .

  • 41

    目前(2012-09-24)有一个rails / sprockets错误导致它无法正确检测导入的文件 .

    这应该在rails 3.2.9及更高版本中修复,但同时你可以按如下方式解决:

    • 杀死rails实例

    • rm -rf tmp / cache

    • 启动rails实例

    你现在应该看到正确的CSS .

  • 37

    你可能想看一下

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

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

    这样做对我来说 .

  • 0

    @ Agustin的解决方案适合我,但这里有一些你需要做的事情:

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

    • config.serve_static_assets = false 添加到development.rb或test.rb(@Agustin的信用)

    • 重新启动服务器 .

    • 确保您的application.js / .css未在浏览器中缓存 . 转到 http://localhost:3000/assets/application.js?body=1 并点击ctrl f5强制刷新(你也可以尝试在末尾添加一个随机化器参数: http://localhost:3000/assets/application.js?body=1&rnd=12343 如果你得到别的东西,ctrl f5仍然没有't helped, you need to clear your browser'的缓存 .

    跳过其中任何一个步骤都会返回缓存的application.js / .css与单个文件中的更新冲突 .

  • 3

    最适合我的方法是删除tmp / cache / *目录的内容......

  • 1

    在 生产环境 环境中运行应用程序时,资产可以更好地完成工作,然后您只需加载包含所有文件的application.css,并进行压缩,以减少服务器请求,这个带有压缩样式的application.css将是缓存 .

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

相关问题