Comment puis-je configurer en-têtes HTTP dans l'application Ruby / Sinatra, hébergé sur Heroku?

StackOverflow https://stackoverflow.com/questions/4199624

Question

J'ai une application de travail basée à Ruby et Sinatra qui est déployé sur Heroku.

Je veux profiter de la mise en cache disponible sur Heroku, qui utilise le protocole HTTP Varnish.

Je ne sais pas quelle est la meilleure façon de définir les en-têtes est, et la syntaxe correcte.

Toute réflexion sur la meilleure approche et la syntaxe?

before do
    headers "Content-Type" => "text/html; charset=utf8"
end

get '/' do
    headers['Cache-Control'] = 'public, max-age=600'

    # SOME STUFF HERE

    haml :home, {:layout => :layout_minfooter}

end
Était-ce utile?

La solution

pages générées dynamiquement Habituellement ont pas mise en cache de sorte que le

response.headers['Cache-Control'] = 'public, max-age=300'

en-tête est le bon point de départ.

Essayez d'utiliser l'un des services à « Utiliser un service Web » pour voir si elles apparaissent dans l'en-tête HTTPd envoyé en arrière à partir de votre site.

Autres conseils

Vous pouvez également accéder aux champs d'en-tête de l'objet de réponse avec cette syntaxe:

response['Cache-Control'] = 'public, max-age=600'

Dans Sinatra, vous pouvez utiliser la méthode cache_control:

get '/' do
  # Cache for 24 hours
  cache_control :public, max_age: 86400

  # Your magic goes here
end
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top