2012-07-06 13 views
16

Próbuję ustawić rozsądne wygaśnięcie pamięci podręcznej dla moich plików JS podczas tworzenia. Mam standardową konfigurację, w której HTML, CSS i JS znajdują się pod katalogiem static.Plik statyczny kolby Cache-Control

Wspomnę o tym, ale dla mojego życia nie mogę tego zrobić. Próbowałem obu metod domniemanych, pierwsze

class MyFlask(flask.Flask): 
    def get_send_file_max_age(self, name): 
     if name.lower().endswith('.js'): 
      return 60 
     return flask.Flask.get_send_file_max_age(self, name) 

app = MyFlask(__name__) 

i

app.config['SEND_FILE_MAX_AGE_DEFAULT'] = 60 

Obie nie miały żadnego wpływu, moje pliki JS poniżej/statyczne wciąż wraca z domyślnego limitu czasu pamięci podręcznej

Cache-Control: public, max-age=43200 

Wszelkie wskazówki są mile widziane.

+4

1. Czy korzystasz z serwera kolbowego lub serwera proxy http, takiego jak nginx? 2. Powinieneś użyć '' return super (MyFlask, self) .get_send_file_max_age (name) '' zamiast '' return flask.Flask.get_send_file_max_age (self, name) ''. – Jarus

+0

Powyższa klasa działa dla mnie, korzystając z serwera rozwoju flash defualt. –

+0

Z tego powodu i (i z tego, co słyszałem wiele innych), moje pliki statyczne powinny być obsługiwane bezpośrednio przez dowolny serwer sieciowy (nginx/apache), którego używam. –

Odpowiedz

0

Możesz zajrzeć do webassets, aby zarządzać wygaśnięciem pamięci podręcznej. Działa zarówno w środowisku programistycznym, jak i produkcyjnym.

2

Miałem ten problem i nie mogłem znaleźć odpowiedzi online, która sprawdziła się u mnie.

Potem zdałem sobie sprawę, że moje statyczne pliki nie są w ogóle podawane z Flask! Flask generuje tylko mój kod HTML. Pliki statyczne są dostarczane bezpośrednio przez mój serwer WWW (Apache w moim przypadku może to być Nginx lub coś innego).

Oto instrukcje dla Apache.

Najpierw zainstaluj moduł mod_expires:

sudo a2enmod expires

Następnie dodać coś takiego do pliku .htaccess:

ExpiresByType text/css "access plus 1 year" 
ExpiresByType application/javascript "access plus 1 year" 
ExpiresByType image/* "access plus 1 year" 

Więcej szczegółów na temat jak skonfigurować go w Apache manual.