Rails 3.1 Asset Pipeline - 为什么我要在SCSS文件中使用Asset Helpers?

时间:2011-10-30 21:30:52

标签: ruby-on-rails ruby-on-rails-3 sass assets asset-pipeline

我刚刚进入资产管道;我正在使用SASS / SCSS,但我不明白为什么我应该使用资产助手。

例如,如果我有一些CSS / SCSS而不使用资产助手:

background-image: url('rails.png');

这样可以正常工作,因为我的.SCSS文件和图像都在资产目录中并可以访问。

这样做有什么意义?:

background-image: asset-url("rails.png", image);

我知道它会在网址中添加“/ assets /”,但如果标准的CSS方式有用,我为什么要使用资产助手呢?

我想我错过了什么。它与部署到生产有关吗?

1 个答案:

答案 0 :(得分:7)

使用帮助程序可以访问生产中的指纹URL。来自Asset Pipeline guide

  

在生产环境中,Rails使用上面列出的指纹识别方案。默认情况下,假设资产已经过预编译,并且将由Web服务器作为静态资产提供。

     

在预编译阶段,MD5从编译文件的内容生成,并在写入光盘时插入文件名。这些指纹识别名称由Rails助手使用,代替清单名称。

所以在制作中,路径会附加一个MD5,你可以这样:

/assets/pancakes-af27b6a414e6da00003503148be9b409.png

有了校验和,Rails可以告诉浏览器永远缓存这些文件。然后,如果您执行更新其中一个资产的新版本,则校验和会更改并更改整个路径;新路径使浏览器认为它是一个全新的文件,因此它将再次获取它。如果没有校验和,您可以很容易地将旧文件卡在浏览器缓存中,而这种事情并不是一个快乐的时间。