Rails的资产管道视网膜@ 2x和缓存克星时间戳是在赔率(Rails asset pipeline

2019-08-17 14:29发布

retina.js查找具有相同的文件名的图像,但与@ 2个文件扩展名前

导轨资产管道增加了缓存无效时间戳的文件名末尾

这意味着retina.js正在寻找filename-cachebuster@2x.png但该文件是在filename@2x-cachebuster.png

任何人对此有一个解决办法?

谁的错在这也就是说,应该retina.js接受培训,以寻找在文件filename@2x-cachebuster.png如果原来的文件名,表示它有一个缓存无效散列,还是应该导轨管道被改变,以确保一个模式相匹配@ 2X是永远只是文件扩展名之前?

Answer 1:

这似乎有点像工作围绕在其本身不过貌似正确的方法来做到这一点:

<%= image_tag('image', retina: true) %>

这将添加正确的数据at2x的属性,retina.js将回暖



Answer 2:

retina.js文档建议使用导轨helper方法:

def image_tag_with_at2x(name_at_1x, options={})
  name_at_2x = name_at_1x.gsub(%r{\.\w+$}, '@2x\0')
  image_tag(name_at_1x, options.merge("data-at2x" => asset_path(name_at_2x)))
end

欲了解更多信息,请检查retina.js文档 。

另外,请确保您有最新版本的retina.js ,支持data-at2x属性。



Answer 3:

对于除图像标签以外的任何其他(即CSS背景图像,这是远远更广泛地使用img在我的工作大部分应用标签),我已经写少一点帮助它就像一个魅力解决它。

.at2x(@path, @w: auto, @h: auto) {
  background-image: image-url(@path);
  @at2x_path: ~`"@{path}".replace(/(.*)\.([^.]+)$/, "$1@2x.$2")`;

  @media all and (-webkit-min-device-pixel-ratio : 1.5) {
    background-image: image-url(@at2x_path);
    background-size: @w @h;
  }
}


文章来源: Rails asset pipeline retina @2x and cache buster timestamps are at odds