一尘不染

如何从Compass生成的Sprite图像文件名中删除哈希?

css

指南针使用chunky_png渲染精灵。它将哈希添加到文件的末尾以强制缓存下载新的图像精灵。有没有办法关闭此缓存关闭?


阅读 267

收藏
2020-05-16

共1个答案

一尘不染

不幸的是,该asset_cache_buster :none选项不会禁用将哈希添加到文件名的末尾。

就像我几天前用法语写的一样,Compass无法禁用缓存哈希无效,但是我提出了一个解决方案]。
在您的配置文件(例如config.rb)中,添加以下几行:

# Make a copy of sprites with a name that has no uniqueness of the hash.
on_sprite_saved do |filename|
  if File.exists?(filename)
    FileUtils.cp filename, filename.gsub(%r{-s[a-z0-9]{10}\.png$}, '.png')
  end
end

# Replace in stylesheets generated references to sprites
# by their counterparts without the hash uniqueness.
on_stylesheet_saved do |filename|
  if File.exists?(filename)
    css = File.read filename
    File.open(filename, 'w+') do |f|
      f << css.gsub(%r{-s[a-z0-9]{10}\.png}, '.png')
    end
  end
end

现在,用于compass clean删除生成的文件并使用重新启动编译compass compile
您获取例如一个images/icons-scb1e5456d5.png文件
一个images/icons.png文件。在样式表中,所有对精灵的引用现在都指向没有哈希的版本。

确保保留文件中提供的哈希值,以优化Compass的编译时间。

2020-05-16