【问题标题】:cache manifest with asset pipeline使用资产管道缓存清单
【发布时间】:2012-08-05 04:46:50
【问题描述】:

使用 rails 资产管道生成 html5 缓存清单的最佳方式是什么?我正在考虑向 app/assets 添加一个 erb 文件,其中包含所有资产的路径。这可行,但马上就有几个问题:

  • 如何增加版本号?
  • 如何确保 http 内容类型设置正确?

【问题讨论】:

    标签: ruby-on-rails-3 html asset-pipeline cache-manifest


    【解决方案1】:

    这是我们现在在应用上的做法:

    • 为了处理缓存清单文件的生成,我们使用Rack::Offline
    • 然后我们将其配置为指向,例如,"/assets/application.css"
    • 在布局/视图中,我们没有使用stylesheet_link_tagjavascript_include_tagimage_tag helpers 来处理可缓存资产,这样我们就无法获得带有哈希值的资产的链接,例如@ 987654326@

    之所以有效,是因为在预编译资产时,rake assets:precompile:nondigest 创建名称中没有哈希的文件版本,然后Rack::Offline 检查这些版本以生成(或不生成)新清单。

    【讨论】:

    • 我也使用过这种方法,它现在有效。但这肯定不是我想保留更长一段时间的解决方案。这更像是一种技巧,而不是一种正确的方法:) 我一直在寻找一种解决方案,让机架离线和资产管道可以很好地协同工作,但还没有找到方法。还有其他人让 rack-offline 和 rails 的 3.1 资产管道一起工作得很好吗?
    • 你不能通过在production.rb 中设置config.assets.digest = false 来绕过第三点吗?
    【解决方案2】:

    Sprockets 默认为您提供一个。

    在您的一个环境配置中 (/config/environments/development.rb)

    config.assets.compress = false
    config.assets.debug = false
    

    在你的 html 文件中:

    <html manifest="manifest.yml">
    

    运行

    rake:precompile 
    

    会给你一个清单文件到 public/assets/manifest.yml

    【讨论】:

    • 这实际上不是 HTML5 离线缓存清单格式 - 它不起作用。
    • 投票否决 b/c 这是一个 yml 文件而不是 appcache 清单......不过出于好奇,哪些浏览器支持这个(如果有的话)?
    • 更好的答案是使用这个 YAML 文件,但不确定它是否完整(例如缺少图像)。
    猜你喜欢
    • 2012-04-17
    • 1970-01-01
    • 1970-01-01
    • 2011-12-01
    • 2013-04-01
    • 2011-10-04
    • 1970-01-01
    • 2014-08-28
    • 2014-10-31
    相关资源
    最近更新 更多