2015-08-04 13 views
7

Ho un sito Web Django distribuito su Heroku, utilizzando Whitenoise per servire file statici.gzip non funziona in Django con Whitenoise

I file statici funzionano bene ma Gzip non funziona in base ai vari siti Web che ho utilizzato per testarlo (inclusi gli strumenti di Google).

questo è il codice nel mio file di impostazioni di produzione:

DATABASES['default'] = dj_database_url.config() 


SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https') 

ALLOWED_HOSTS = ['*'] 

STATICFILES_STORAGE = 'whitenoise.django.GzipManifestStaticFilesStorage' 

mio statica dei file di configurazione:

BASE_DIR = os.path.dirname(os.path.dirname(__file__)) 

STATIC_URL = '/static/' 
STATIC_ROOT = 'staticfiles' 

STATICFILES_DIRS = (
    os.path.join(BASE_DIR, "static"), 
) 

mio file wsgi.py

import os 

from django.core.wsgi import get_wsgi_application 

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "sikumim.settings") 

application = get_wsgi_application() 

#HEROKU DEPLOYMENT 

from whitenoise.django import DjangoWhiteNoise 
application = DjangoWhiteNoise(application) 

quale potrebbe essere la causa?

ho fatto un paio di comandi suggerito nei commenti, sembra che gzip non funziona:

➜ ~ ricciolo -I -H "Accept-Encoding: gzip" http://127.0.0.1:8000/

HTTP/1.0 200 OK 
Date: Mon, 17 Aug 2015 13:56:02 GMT 
Server: WSGIServer/0.2 CPython/3.4.0 
X-Frame-Options: SAMEORIGIN 
Vary: Cookie 
Content-Type: text/html; charset=utf-8 
Set-Cookie: csrftoken=SsgKEp76HDhG5L7otWxqBJeMyb00Vp03; expires=Mon,  15-Aug-2016 13:56:02 GMT; Max-Age=31449600; Path=/ 

➜ ~ ricciolo -I -H "Accept-Encoding: gzip" http://www.sikumia.co.il

HTTP/1.1 200 OK 
Connection: keep-alive 
Server: gunicorn/19.3.0 
Date: Mon, 17 Aug 2015 13:57:37 GMT 
Transfer-Encoding: chunked 
X-Frame-Options: SAMEORIGIN 
Vary: Cookie 
Content-Type: text/html; charset=utf-8 
Set-Cookie: csrftoken=23M5ODiFKRnU3fDYMe3j2Rn3dwtCsNMX; expires=Mon, 15-Aug-2016 13:57:37 GMT; Max-Age=31449600; Path=/ 
Via: 1.1 vegur 
+0

Google strumento di pagina intuizioni dice che gzip non è attivo, anche tutti gli altri strumenti stanno dicendo la stessa cosa – davegri

+0

Due domande - 1) stai verificando localmente con arricciatura (ad esempio, 'curl -i -H" Accept-Encoding: gzip "http: // localhost: 8000/path/to/static' e 2) come stai usando l'app nel tuo Procfile? Ho gzip che lavora con 'gunicorn', ma non con' runserver' (che non dovrebbe essere comunque la tua configurazione di produzione). – bimsapi

+0

Mi dispiace, sono un po 'novellino, sto eseguendo l'app su heroku. c'è solo una riga nel mio procfile: web: gunicorn sikumim.wsgi Proverò quel comando di arricciatura – davegri

risposta

1

WhiteNoise solo gzip abilitata per i file statici, non per l'intero sito, quindi è necessario controllare uno dei vostri file statici ad esempio

curl -I -H "Accept-Encoding: gzip" http://www.sikumia.co.il/static/some-file.css 
1

Ci dovrebbe essere il problema

https://docs.djangoproject.com/en/1.8/ref/middleware/#gzip-middleware

non sarà comprimere il contenuto se una delle seguenti condizioni:

Il corpo contenuto è inferiore a 200 byte. La risposta ha già impostare l'intestazione Content-Encoding. La richiesta (il browser) non ha inviato un'intestazione Accept-Encoding contenente gzip. Puoi applicare la compressione GZip alle singole visualizzazioni utilizzando il decoratore gzip_page().