Заставить Mongrel/WEBRick обслуживать статические активы с заголовком истечения срока действия в будущем

Я создаю приложение Rails, которое будет развернуто на настольных компьютерах с запуском как веб-сервера, так и браузера (это тестовое приложение, которое должно работать без подключения к Интернету).

По этой причине я буду использовать Mongrel или WEBRick без Apache/Nginx, как обычно. Браузер будет напрямую обращаться к Mongrel.

Проблема, с которой я столкнулся сейчас, заключается в том, что для загрузки ресурсов (javascript/stylesheets/images) требуется некоторое время. Обычно я исправляю это, устанавливая будущие даты истечения срока действия этих активов в прокси-сервере Apache перед Mongrel/WEBRick, чтобы активы запрашивались только один раз, а после этого был только один запрос на действие.

Но в данном случае прокси нет, и я использую config.serve_static_assets = true

Итак, вопрос: можно ли сказать Mongrel/WEBrick добавить заголовки с истечением срока действия в далеком будущем к статическим ресурсам?

Я использую Rails 3 на Ruby 1.9.2.


person Alexander Malfait    schedule 11.03.2011    source источник
comment
osdir.com/ml/RubyonRailsTalk/2011-03/msg01189.html   -  person Stefan    schedule 07.04.2011


Ответы (1)


вы можете попробовать что-то вроде этого:

   def get(path)
     @headers['Content-Type'] = MIME_TYPES[path[/\.\w+$/, 0]] || "text/plain"
     unless path.include? ".." # prevent directory traversal attacks
       @headers['X-Sendfile'] = "#{PATH}/static/#{path}"
     else
       @status = 403 # "403 - Invalid path"
     end
   end
person hkairi    schedule 25.03.2011
comment
Не совсем оптимально, но это действительно возможное решение. Спасибо. - person Alexander Malfait; 04.04.2011