2015-08-04 4 views
7

Ich habe eine Django-Website auf Heroku bereitgestellt, mit Whitenoise für die Bereitstellung von statischen Dateien.gzip funktioniert nicht in Django mit Whitenoise

Die statischen Dateien funktionieren gut, aber Gzip funktioniert nicht auf verschiedenen Websites, die ich getestet habe (einschließlich Google Tools).

ist dies der Code in Produktionseinstellungen Dateien:

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


SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https') 

ALLOWED_HOSTS = ['*'] 

STATICFILES_STORAGE = 'whitenoise.django.GzipManifestStaticFilesStorage' 

Meine statische Dateien Konfiguration:

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

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

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

meine wsgi.py Datei

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) 

was könnte die Ursache sein?

lief ich ein paar Befehle in den Kommentaren vorgeschlagen wird sieht aus wie gzip nicht funktioniert:

➜ ~ curl -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=/ 

➜ ~ curl -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 Seite Insights-Tool sagt, dass gzip nicht aktiv ist, auch alle anderen Tools sagen dasselbe – davegri

+0

Zwei Fragen - 1) überprüfen Sie lokal mit curl (zB 'curl -i -H" Accept-Encoding: gzip "http: // localhost: 8000/Pfad/zu/statisch "und 2) Wie läuft die App in Ihrem Procfile? Ich habe gzip mit 'gunicorn' arbeiten lassen, aber nicht mit' runserver' (was sowieso nicht deine Produktionskonfiguration sein sollte). – bimsapi

+0

Es tut mir leid, ich bin ein bisschen ein Neuling, ich betreibe die App auf Heroku. es gibt nur eine zeile in meinem procfile: web: gunicorn sikumim.wsgi Ich werde versuchen, dass Curl Befehl – davegri

Antwort

1

Whitenoise nur aktiviert gzip für Ihre statischen Dateien, nicht für die gesamte Website, so dass Sie eine Ihrer statischen Dateien überprüfen müssen, zB

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

Es soll das Problem

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

Es wird nicht komprimieren Inhalt sein, wenn eine der folgenden Bedingungen erfüllt ist:

Der Inhalt Körper weniger als 200 Bytes lang ist. Die Antwort hat bereits den Content-Encoding-Header festgelegt. Die Anfrage (der Browser) hat einen Accept-Encoding-Header mit gzip nicht gesendet. Sie können GZip Komprimierung auf einzelne Ansichten mit dem Gzip_page() Dekorator anwenden.