ruby-on-rails – 在CSS中的图像上的轨迹时间戳

所以Rails时间戳是伟大的.我正在使用它向所有以10位数时间戳结尾的文件添加过期标题.我的大部分图片都是在我的CSS中引用的.有没有人遇到任何允许将时间戳添加到CSS引用的图像的方法,或者一些实现这一点的时髦的重写规则?我喜欢我的网站中的所有图像,内嵌和CSS都有这个时间戳,所以我可以告诉浏览器缓存它们,但是随着文件本身的更改,刷新.

我在网上找不到任何东西,我不敢相信这不是一个更经常讨论的话题.

我不认为我的设置将是重要的,因为实际到期将希望以相同的方式发生,基于10位数的时间戳,但我使用apache服务所有静态内容,如果这是重要的

解决方法

您可以通过获取文件修改时间来附加每个图像文件的实际时间戳:
source.gsub!(/url\((['"]*)(.+)(['"]*)\)/) do
      open,file,close = $1,$2,$3
      css_dir = File.join(RAILS_ROOT,"public/stylesheets")
      timestamp = ''
      FileUtils.cd(css_dir) do 
        if file =~ /^\// # absolute path
          f = File.new(RAILS_ROOT + "/public" + file)
        else # relative path
          f = File.new(file)
        end
        timestamp = f.mtime.to_i.to_s
      end

      if file =~ /.\.(ico|css|js|gif|jpe?g|png)/
        "url(#{open}#{file}?#{timestamp}#{close})"
      else
        "url(#{open}#{file}#{close})"
      end
    end

(可能有一个比较优雅的方式写这个,我的ruby还是很弱的!)现在,黑客越来越丑陋了,但是你会认为会有更多的Rails般的方式来做到这一点.

相关文章

validates:conclusion,:presence=>true,:inclusion=>{...
一、redis集群搭建redis3.0以前,提供了Sentinel工具来监控各...
分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣...
上一篇博文 ruby传参之引用类型 里边定义了一个方法名 mo...
一编程与编程语言 什么是编程语言? 能够被计算机所识别的表...
Ruby类和对象Ruby是一种完美的面向对象编程语言。面向对象编...