Django-compressor: Error de compresión sin conexión

Creado en 25 sept. 2013  ·  6Comentarios  ·  Fuente: django-compressor/django-compressor

Pasé una semana depurando esto (dos semanas separadas diferentes) y estoy bastante frustrado. Creo que he leído casi todos los artículos/publicaciones de blog/problemas que existen y no sé qué hacer. Tengo un servidor de ensayo y un servidor de producción (cada uno con cubos s3 separados) y esto funciona en el ensayo, pero no en la producción, aunque los servidores (en Heroku) y los cubos son idénticos.

Lo he hecho para que las etiquetas comprimidas solo aparezcan en la plantilla secundaria. He eliminado todas las etiquetas de plantilla de las etiquetas de compresión (por ejemplo, si/si no), lo que significa que tengo más etiquetas de compresión para que las declaraciones si/si no puedan estar fuera de las etiquetas de compresión.

¿Alguien tiene una compresión fuera de línea en funcionamiento configurada en producción en algún lugar para mirar? Con compress offfline=False, hay una carga adicional significativa en el servidor, con frecuencia un retraso adicional de 300-500 ms, lo que obviamente no vale la pena y anula el propósito de este paquete.

Realmente me vendría bien un poco de ayuda, pero básicamente no tengo idea de qué hacer en este momento, porque es el mismo problema sobre el que puede leer con cientos de personas en la lista de problemas aquí, en publicaciones de blog en otros lugares, y no parece ser una solución repetible. siendo sugerido, lo cual es un gran problema para algo tan crucial para el rendimiento y que probablemente requiera cualquier implementación de Django.

deployment

Comentario más útil

Los últimos días estuve ocupado resolviendo el mismo problema, y ​​aquí está la solución, en caso de que ayude a alguien.

En una de las plantillas, donde el problema era reproducible, estaba usando contexto. Durante la compresión fuera de línea no hay acceso al contexto, es por eso que la clave generada durante la compresión fuera de línea y la del ciclo de respuesta obviamente van a ser diferentes.

Intente aislar las partes de JavaScript en las que confía en el contexto en otro bloque, que está fuera de la etiqueta de compresión.

Esperemos que esta información ayude a alguien.

Todos 6 comentarios

Lo mismo aquí. Parece que COMPRESS_OFFLINE de django_compressor crea más problemas de los que resuelve. No puedo hacer que funcione porque recibo este tipo de mensajes:

OfflineGenerationError: You have offline compression enabled but key "%s" 
is missing from offline manifest. You may need to run "python manage.py compress".

Aquí igual :/

No puedo hacer funcionar la compresión sin conexión. Sigue recibiendo OfflineGenerationError.

Así que me aseguré de ejecutar lo siguiente durante cada implementación en todos los servidores web

python manage.py comprimir --force
python manage.py recopilar estática

Eso debería actualizar el archivo manifest.json. También me aseguro de que el nombre del archivo de manifiesto sea diferente con cada inserción. Como agregar un número de versión. manifest_%s.json
Utilizo el último id de hash de confirmación de git para el complemento %s. Entonces, durante la implementación, hace un git pull, comprime, collectstatic, crea un nuevo css/js minificado/agregado con un nuevo archivo manifest.json.
Y luego reinicio apache. Así que todo debería ser suave.

También me aseguré de que collectstatic no llame a --clear, para eliminar medios estáticos/* antiguos.

¿Tener sentido?

bueno tengo exactamente el mismo problema.
¿Alguien está ejecutando esto sin conexión desde S3 de manera confiable?

Los últimos días estuve ocupado resolviendo el mismo problema, y ​​aquí está la solución, en caso de que ayude a alguien.

En una de las plantillas, donde el problema era reproducible, estaba usando contexto. Durante la compresión fuera de línea no hay acceso al contexto, es por eso que la clave generada durante la compresión fuera de línea y la del ciclo de respuesta obviamente van a ser diferentes.

Intente aislar las partes de JavaScript en las que confía en el contexto en otro bloque, que está fuera de la etiqueta de compresión.

Esperemos que esta información ayude a alguien.

¿Fue útil esta página
0 / 5 - 0 calificaciones