Tôi hiện đang sử dụng máy nén django và kho django để chạy phương tiện truyền thông tĩnh của tôi tắt của s3. tác phẩm của tôi như sau:Máy nén Django với S3 URL Heroku
lưu trữ của tôi theo các tài liệu là:
from django.core.files.storage import get_storage_class
from storages.backends.s3boto import S3BotoStorage
class CachedS3BotoStorage(S3BotoStorage):
"""
S3 storage backend that saves the files locally, too.
"""
def __init__(self, *args, **kwargs):
super(CachedS3BotoStorage, self).__init__(*args, **kwargs)
self.local_storage = get_storage_class(
"compressor.storage.CompressorFileStorage")()
def save(self, name, content):
name = super(CachedS3BotoStorage, self).save(name, content)
self.local_storage._save(name, content)
return name
xác lập cá nhân bao gồm:
# S3 Storage Section
DEFAULT_FILE_STORAGE = 'storages.backends.s3boto.S3BotoStorage'
STATICFILES_STORAGE = DEFAULT_FILE_STORAGE
AWS_ACCESS_KEY_ID = os.environ['AWS_ACCESS_KEY_ID']
AWS_SECRET_ACCESS_KEY = os.environ['AWS_SECRET_ACCESS_KEY']
AWS_STORAGE_BUCKET_NAME = os.environ['AWS_STORAGE_BUCKET_NAME']
# AWS_S3_SECURE_URLS = False #turns off https for static files (necessary)
# Used to make sure that only changed files are uploaded with collectstatic
AWS_PRELOAD_METADATA = True
# Django compressor settings
STATICFILES_FINDERS += (
'compressor.finders.CompressorFinder',
)
COMPRESS_ENABLED = True
COMPRESS_OFFLINE = True
COMPRESS_URL = STATIC_URL
COMPRESS_ROOT = STATIC_ROOT
COMPRESS_STORAGE = 'erp.storage.CachedS3BotoStorage'
STATICFILES_STORAGE = 'erp.storage.CachedS3BotoStorage'
AWS_LOCATION = 'static'
AWS_QUERYSTRING_EXPIRE = 7200
COMPRESS_JS_FILTERS = [
'compressor.filters.template.TemplateFilter',
]
Có rất nhiều phương tiện truyền thông để nén đó là lý do tôi đã chọn để sử dụng tính năng nén ngoại tuyến và chạy lệnh manage.py compress thay vì chạy collectstatic khi khởi động lại dyno vì nó chỉ chạy chậm.
Máy nén Django cung cấp cho tôi chuỗi truy vấn tuyệt vời tuy nhiên nó chứa html không tải. tức là
<link rel="stylesheet" href="site-url/static/CACHE/css/da0c0fa8dd51.css?Signature=Signature&Expires=Expires&AWSAccessKeyId=key
hai amp; không nên ở đó. Tôi muốn có nó an toàn nhưng tôi cũng đã cố gắng AWS_S3_SECURE_URLS = False trong các thiết lập mà dường như không thay đổi những điều mà làm cho tôi nghĩ rằng có cái gì đó sai trái.
Tôi đang sử dụng django 1.4 nên có thể có điều gì đó không tương thích.
Dường như việc chạy lệnh nén không làm lại tệp kê khai. Vì vậy, miễn là bạn vô hiệu hóa url an toàn trước khi điều này nó sẽ được alright. Tôi sẽ thử nó trước và xác nhận. – Crazyconoli