Comment puis-je configurer en-têtes HTTP dans l'application Ruby / Sinatra, hébergé sur Heroku?
-
11-10-2019 - |
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
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