首页 > 解决方案 > Django-compressor & S3 Boto:静态文件未压缩

问题描述

错误

静态文件保存在 S3 中 - 但是它们没有被压缩。

我的代码

HTML

{% compress css %}
<link href="{{ STATIC_URL }}css/project.css" rel="stylesheet" type="text/css" charset="utf-8">
{% endcompress %}

生产设置

COMPRESS_ENABLED = True
STATICFILES_STORAGE = '<myproject>.storage.CachedS3Boto3Storage'
COMPRESS_STORAGE = STATICFILES_STORAGE
COMPRESS_URL = STATIC_URL
COMPRESS_FILTERS = {
    'css': ['compressor.filters.css_default.CssAbsoluteFilter'],
    'js': ['compressor.filters.jsmin.JSMinFilter']
}

CachedS3BotoStorage

from django.core.files.storage import get_storage_class
from storages.backends.s3boto3 import S3Boto3Storage


class CachedS3Boto3Storage(S3Boto3Storage):
    """
    S3 storage backend that saves the files locally, too.
    """
    def __init__(self, *args, **kwargs):
        super(CachedS3Boto3Storage, self).__init__(*args, **kwargs)
        self.local_storage = get_storage_class(
            "compressor.storage.CompressorFileStorage")()

    def save(self, name, content):
        self.local_storage._save(name, content)
        super(CachedS3Boto3Storage, self).save(name, self.local_storage._open(name))
        return name

推荐什么

文档显示你最终会得到这样的东西-

STATIC_ROOT = '/path/to/staticfiles'
COMPRESS_ROOT = STATIC_ROOT
STATICFILES_STORAGE = 'mysite.storage.CachedS3BotoStorage'
COMPRESS_STORAGE = STATICFILES_STORAGE
STATIC_URL = 'https://compressor-test.s3.amazonaws.com/'
COMPRESS_URL = STATIC_URL

我可以确认的

想法?

任何想法为什么压缩机不压缩?

编辑:这个实现弄乱了 Django 调试工具栏,所以它似乎{{ STATIC_URL }}在静态文件路径中使用“有效”,但同时设置又搞砸了调试工具栏。

标签: djangoamazon-s3boto3django-compressor

解决方案


推荐阅读