def cache_asset(file, options={}, &block)
began_at = Time.now
kind = File.extname(file).sub(/\./, '').to_sym
original = Dir[File.join(settings.views, file).sub(/#{kind}$/, "*")][0]
mtime = File.mtime(original).to_i
file = file.sub(/#{kind}$/, "#{mtime}.#{kind}")
path = Padrino.root("public", uri_root_path(file))
if !File.exist?(path)
source = block.call
if options[:compress]
source = settings.compressor[kind].compress(source)
end
Dir.mkdir(File.dirname(path)) unless File.exist?(File.dirname(path))
File.open(path, "w") { |f| f.write(source) }
logger.debug "Compressed (%0.2fms) %s" % [Time.now-began_at, path] if defined?(logger)
end
redirect file
end