Метки времени направляющих на изображениях в CSS

Перечисления Java являются на самом деле полными классами, которые могут иметь частного конструктора и методы и т.д., тогда как перечисления C# просто называют целыми числами. Реализация Java IMO намного выше.

Эта страница должна помочь Вам много при изучении c# прибывающий из лагеря Java. (Ссылка указывает на различия о перечислениях (прокрутка / вниз для других вещей)

10
задан BartoszKP 23 January 2014 в 20:25
поделиться

4 ответа

Вы можете добавить фактическую метку времени для каждого файла изображения, получив время модификации файла следующим образом:

    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

(Возможно, есть более элегантный способ написать это, мои рубиновые отбивные все еще слабы! ) Теперь хакер становится уродливым ... можно подумать, что есть способ, более похожий на Rails.

4
ответ дан 3 December 2019 в 22:37
поделиться

Я использовал пакетировщик ресурсов , и в итоге я отредактировал метод плагина compress_css , чтобы решить эту проблему. Я просто использую регулярное выражение для изображений в CSS и вставляю текущую временную метку:

timestamp = Time.now.to_s.gsub(/\D/, '')
source.gsub!(/url\((['"])(.+)(['"])\)/) do
  open, file, close = $1, $2, $3
  if file =~ /.\.(ico|css|js|gif|jpe?g|png)/
    "url(#{open}#{file}?#{timestamp}#{close})"
  else
    "url(#{open}#{file}#{close})"
  end
end

Таким образом, всякий раз, когда я развертываю, сжатые CSS-изображения содержат добавленные временные метки. Недостатком этого метода является то, что каждому изображению не присваивается собственная временная метка, поэтому каждый раз, когда вы развертываете новый CSS, все изображения CSS «просрочены». Лучше, чем ничего, если вы не будете часто развертывать css.

5
ответ дан 3 December 2019 в 22:37
поделиться

Наилучшим решением кажется использование ERB для генерации ваших таблиц стилей, чтобы вы могли использовать Rails image_ helpers вместо прямых путей к изображениям. Это означает, что избавьтесь от вашего файла public / stylesheets / application.css и создайте app / views / stylesheets / application.css.erb. Вам также нужно будет создать контроллер, включить кеширование и настроить маршрут.

Вот подробности: http://deaddeadgood.com/2009/9/28/far-future-expires-headers-for-css-images-in-rails

3
ответ дан 3 December 2019 в 22:37
поделиться

Если кто-то наткнется на это, Jammit теперь поддерживает это из коробки. Я использовал Jammit в новом проекте и был невероятно впечатлен!

3
ответ дан 3 December 2019 в 22:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: