2012-04-04 1 views
2

Ich habe Schienen, die meine statischen Werte bedienen. Die meisten von ihnen haben Hashes in ihrem Namen und werden mit Verfallsdaten in der Zukunft bedient. Aber für eine Datei kann ich sie nicht mit einem Hash im Namen versehen, also muss ich das Ablaufdatum kontrollieren.Wie kann ich Max-Age für bestimmte Dateien mit Rails steuern?

Ich habe dies in meinem application.rb, die für alle statischen Vermögenswerte gilt:

config.static_cache_control = "public, max-age=2592000" 

Gibt es für mich eine Möglichkeit, für nur eine Datei eine andere max-age zu haben? Ich weiß, dass ich eine neue Middleware erstellen kann, die nach ActionDispatch::Static kommt, und den Wert für bestimmte Dateien ändert (siehe this writeup) ... aber dann wird dies für jede einzelne Anfrage ausgeführt, auch für solche, die keine statischen Assets sind. Gibt es eine elegantere Lösung?

+1

Ist es in Ordnung, es auf Serverebene zu tun? Das macht dort potentiell mehr Sinn. –

+1

Ich habe diese Option in dieser Bereitstellung (Heroku) nicht. –

+0

Ich benutze auch Heroku und das war schon immer eine brennende Frage. – Ashitaka

Antwort

0

Eine schlechte Technik kann sein, die URL Ihrer Datei in Ihrer route.rb zu beheben. Sie können einen Controller für diese Route definieren, indem Sie die gewünschte cache_control reparieren und die Methode send_data verwenden, um die Datei zu servern.

+0

auch so etwas in Betracht gezogen ... ein unordentlicher Weg hinunter zu gehen, aber möglicherweise die beste Lösung am Ende –

+0

ist es am einfachsten, wenn Sie keine Middleware hinzufügen möchten. Oder Sie müssen die ActionDispatch :: Static-Middleware hacken, um die Aufgabe zu erledigen. Vielleicht ersetzen Sie es durch ein Beispiel. – shingara

Verwandte Themen