Как установить заголовки ответа HTTP (кеш) в приложении Sinatra, размещенном на Heroku - PullRequest
7 голосов
/ 27 января 2011

У меня есть довольно простое приложение (всего один index.html файл и файл css - это на самом деле просто статическая страница), размещенное на Heroku.

Я использую Sinatra для размещения его на Heroku.Само приложение довольно простое:

require 'rubygems'
require 'sinatra'

get "/" do
    File.read(File.join('public', 'index.html'))
end

Вопрос в том, как установить заголовок ответа HTTP для статических ресурсов?В частности, я хотел установить заголовок Expires для целей кэширования.

РЕДАКТИРОВАТЬ: я ищу, чтобы добавить указанный заголовок к статическим активам (то есть, тот, который находится в /public, какфоновые изображения, значки и т. д.)

Ответы [ 2 ]

16 голосов
/ 27 января 2011

Помимо того, что я не смог бы пройти через стек Sinatra только для обслуживания статических файлов, вы бы назвали

cache_control :public, max_age: 60

кешировать на минуту. cache_control - это помощник , который поставляется с Sinatra .

В противном случае, я бы посоветовал вам взглянуть на http://www.sinatrarb.com/configuration.html, чтобы увидеть, как настроен Синатра, чтобы вам не приходилось иметь дело с обслуживанием статических файлов.

Надеюсь, это поможет.

edit: Я только что видел, что вы явно просили заголовок Expires. Я не уверен, но это должно быть примерно так же, как Cache-Control. Извините за путаницу

5 голосов
/ 27 января 2011

В качестве дополнения к ответу @ awendt, Sinatra может фактически обрабатывать статические файлы без необходимости явно определять маршрут и печатать файл.

Добавляя:

set :static, true

..Вы можете добавить свои index.html и stylesheet.css в папку public/.Затем при посещении http://localhost:9292/stylesheet.css вам будет предоставлен статический файл.

Если вы хотите использовать другое имя папки вместо значения по умолчанию public/, попробуйте:

set :public, "your_folder_name"

Если мы хотим быть менее явными, мы можем просто создать папку public/, зная, что Синатра все равно включит для нас :static:)

Источник: http://www.sinatrarb.com/configuration.html#__enabledisable_static_file_routes

...