2012-07-06 13 views
16

Sto provando a impostare una ragionevole scadenza della cache per i miei file JS durante lo sviluppo. Ho la configurazione standard, in cui HTML, CSS e JS vivono nella directory static.File statico del pallone Cache-Control

Il docs lo menziono, ma per la vita di me non riesco a farlo funzionare. Ho provato entrambi i metodi impliciti, primi

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__) 

e

app.config['SEND_FILE_MAX_AGE_DEFAULT'] = 60 

Entrambi hanno avuto alcun effetto, i miei file JS sotto/static sono ancora tornando con il timeout di cache di default,

Cache-Control: public, max-age=43200 

Qualsiasi suggerimento apprezzato.

+4

1. Usi il server dev del flask o un proxy http come nginx? 2. Dovresti usare '' return super (MyFlask, self) .get_send_file_max_age (name) '' invece di '' return flask.Flask.get_send_file_max_age (self, name) ''. – Jarus

+0

La classe precedente funziona per me, usando il server di sviluppo defualt. –

+0

Per questi motivi e le prestazioni i (e da quello che ho sentito molti altri) consentono ai miei file statici di essere direttamente serviti da qualsiasi server web (nginx/apache) che sto usando. –

risposta

0

È possibile controllare webassets per gestire la scadenza della cache. Funziona sia nello sviluppo che nell'ambiente di produzione.

2

Ho avuto questo problema e non ho trovato una risposta online che funzionasse per me.

Poi ho capito che i miei file statici non vengono serviti da Flask a tutti! Flask genera solo il mio HTML. I file statici sono serviti direttamente dal mio server web (nel mio caso Apache, il tuo potrebbe essere Nginx o qualcos'altro).

Ecco le istruzioni per Apache.

prima installare il modulo di mod_expires:

sudo a2enmod expires

Quindi aggiungere qualcosa di simile al file .htaccess:

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

Maggiori dettagli su come configurarlo in Apache manual.