Ich versuche Django-Pipeline, um statische Ressourcen zu minimieren, Cache für sie zu verwenden und meine Vorlagen zu vereinfachen. Meine CSS- und JS-Dateien werden von meinem Browser gefunden und geladen, aber es dauert ungefähr 10 Sekunden, bis meine (sehr einfache) Homepage geladen ist.Django-Pipeline - Laden der Seite wirklich langsam
Ich verwende Python 2.7.6, Django 1.7.3 und django-Pipeline 1.4.3. PyCharm führt den Entwicklungsserver mit einem lokalen virtualenv aus.
Mein settings.py enthält folgende Komponenten:
DEBUG = True
TEMPLATE_DEBUG = DEBUG
INSTALLED_APPS = (
'django_admin_bootstrapped', # custom admin
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
# pip installed apps
'pipeline',
# project apps
'myapp',
)
MIDDLEWARE_CLASSES = (
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
'pipeline.middleware.MinifyHTMLMiddleware',
)
STATICFILES_FINDERS = (
'django.contrib.staticfiles.finders.FileSystemFinder',
'django.contrib.staticfiles.finders.AppDirectoriesFinder',
'pipeline.finders.FileSystemFinder',
'pipeline.finders.CachedFileFinder',
'pipeline.finders.PipelineFinder',
)
STATICFILES_STORAGE = 'pipeline.storage.PipelineCachedStorage'
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
STATICFILES_DIRS = (
os.path.join(BASE_DIR, 'myapp/static'),
)
STATICFILES_STORAGE = 'pipeline.storage.PipelineCachedStorage'
PIPELINE_CSS_COMPRESSOR = 'pipeline.compressors.yuglify.YuglifyCompressor'
PIPELINE_JS_COMPRESSOR = 'pipeline.compressors.yuglify.YuglifyCompressor'
PIPELINE_CSS = {
'base': {
'source_filenames': (
'myapp/css/base.css',
'myapp/bower_components/bootstrap/dist/css/bootstrap.css',
'myapp/bower_components/Hover/css/hover.css',
'myapp/bower_components/font-awesome/css/font-awesome.css',
),
'output_filename': 'css/myapp.css',
},
}
PIPELINE_JS = {
'base': {
'source_filenames': (
'myapp/bower_components/jquery/dist/jquery.min.js',
'myapp/bower_components/bootstrap/dist/js/bootstrap.min.js',
),
'output_filename': 'js/myapp.js',
},
}
Meine Basis-HTML-Template enthält folgende Komponenten:
{% load staticfiles %}
{% load pipeline %}
<!DOCTYPE html>
<html>
<head>
[...]
{% block css %}
{% stylesheet 'base' %}
{% endblock css %}
{% block javascript %}
{% javascript 'base' %}
{% endblock javascript %}
</head>
<body> [...] </body>
</html>
Mein home.html erstreckt base.html aber verwendet nicht die CSS noch Javascript Vorlagentags der Pipeline.
Nur um sicherzugehen yuglify steht zur Verfügung:
$ yuglify --version
0.1.4
Was mache ich falsch hier?
Hinweis: Der Browser findet keine statischen Elemente (myapp.css und myapp.js), wenn PIPELINE_ENABLED = True
.
Haben Sie Glück, das herauszufinden? Ich habe das gleiche Problem, wenn ich Pipeline lokal mit S3 verwende. Das passiert, wenn ich DEBUG = True verwende (und PIPELINE_ENABLED = False, was der Standard ist). Wenn die Pipeline aktiviert ist, funktioniert sie wie erwartet. –
Von dem, woran ich mich erinnere, wurde die Seite sehr langsam geladen, weil die Dateifinder einen riesigen Pfadbaum hatten.Das Problem war, dass mit Debug = False in der Entwicklung, müssen Sie bestimmte Finder verwenden: https://github.com/cyberdelia/django-pipeline/issues/418. Ich glaube, ich bin an diesem Punkt gelandet, als ich dieses Thema erstellt habe. Da ich Frontend-Pakete mit bower verwalte, werden alle Verzeichnisse (src, dist usw.) und Dateien (.json oder andere nutzlose Dateien) in die statischen Dateien aufgenommen! –
Weitere Informationen finden Sie unter https://github.com/cyberdelia/django-pipeline/issues/482. –