2012-07-06 10 views
16

Estoy tratando de establecer un vencimiento de caché razonable para mis archivos JS durante el desarrollo. Tengo la configuración estándar, donde HTML, CSS y JS están viviendo bajo el directorio static.Frasco archivo estático Cache-Control

La docs lo menciono, pero por mi vida no puedo hacer que esto funcione. He intentado ambos métodos implican, en primer lugar

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

y

app.config['SEND_FILE_MAX_AGE_DEFAULT'] = 60 

Ambos han tenido ningún efecto, mis archivos JS bajo/estática todavía están volviendo con el tiempo de espera predeterminado de la caché,

Cache-Control: public, max-age=43200 

Cualquier puntero apreciado.

+4

1. ¿Utiliza el servidor de desarrollo de matraz o un proxy http como nginx? 2. Debería usar '' return super (MyFlask, self) .get_send_file_max_age (name) '' en lugar de '' return flask.Flask.get_send_file_max_age (self, name) ''. – Jarus

+0

La clase anterior funciona para mí, usando el servidor de desarrollo de matraz defualt. –

+0

Por estos motivos de rendimiento i (y por lo que he escuchado muchos otros), permita que mis archivos estáticos sean servidos directamente por cualquier servidor web (nginx/apache) que esté usando. –

Respuesta

0

Es posible que desee consultar webassets para gestionar la caducidad de caché. Funciona en entornos de desarrollo y producción.

2

Tuve este problema y no pude encontrar una respuesta en línea que funcionó para mí.

¡Entonces me di cuenta de que mis archivos estáticos no se estaban sirviendo desde Flask en absoluto! Flask solo genera mi HTML. Los archivos estáticos son servidos directamente por mi servidor web (Apache en mi caso, el suyo puede ser Nginx u otra cosa).

Aquí están las instrucciones para Apache.

Primero instale el módulo mod_expires:

sudo a2enmod expires

A continuación, añadir algo como esto a su archivo .htaccess:

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

Más detalles sobre cómo configurarlo en el Apache manual.

Cuestiones relacionadas