Add cache to sass compiler

This commit is contained in:
Raphael Michel
2020-01-20 11:32:25 +01:00
parent 5c0d112def
commit 91ae89d463

View File

@@ -7,6 +7,7 @@ import django_libsass
import sass import sass
from compressor.filters.cssmin import CSSCompressorFilter from compressor.filters.cssmin import CSSCompressorFilter
from django.conf import settings from django.conf import settings
from django.core.cache import cache
from django.core.files.base import ContentFile from django.core.files.base import ContentFile
from django.core.files.storage import default_storage from django.core.files.storage import default_storage
from django.dispatch import Signal from django.dispatch import Signal
@@ -68,15 +69,22 @@ def compile_scss(object, file="main.scss", fonts=True):
for recv, resp in sass_postamble.send(object, filename=file): for recv, resp in sass_postamble.send(object, filename=file):
sassrules.append(resp) sassrules.append(resp)
cf = dict(django_libsass.CUSTOM_FUNCTIONS) sasssrc = "\n".join(sassrules)
cf['static'] = static srcchecksum = hashlib.sha1(sasssrc.encode('utf-8')).hexdigest()
css = sass.compile(
string="\n".join(sassrules), css = cache.get('sass_compile_{}'.format(srcchecksum))
include_paths=[sassdir], output_style='nested', if not css:
custom_functions=cf cf = dict(django_libsass.CUSTOM_FUNCTIONS)
) cf['static'] = static
cssf = CSSCompressorFilter(css) css = sass.compile(
css = cssf.output() string=sasssrc,
include_paths=[sassdir], output_style='nested',
custom_functions=cf
)
cssf = CSSCompressorFilter(css)
css = cssf.output()
cache.set('sass_compile_{}'.format(srcchecksum), css, 3600)
checksum = hashlib.sha1(css.encode('utf-8')).hexdigest() checksum = hashlib.sha1(css.encode('utf-8')).hexdigest()
return css, checksum return css, checksum