2012-06-07 31 views
5

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&amp;Expires=Expires&amp;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.

+0

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

Trả lời

-2

Tôi có thể xác nhận rằng nếu sử dụng lệnh quản lý nén, bạn sẽ cần phải làm lại tệp kê khai. Tôi đã làm nó bằng tay nhưng tôi chắc chắn có một cách tốt hơn. Vấn đề khá nhỏ nhưng tôi đã dành một chút thời gian cho việc này và có lẽ nó sẽ tiết kiệm cho người khác một thời gian.

+2

Tôi không thực sự theo dõi. Làm thế nào chính xác để bạn xây dựng lại này bằng tay? –

1

Bạn có thể sử dụng AWS_QUERYSTRING_AUTH = False trong settings.py để ngăn các mục chuỗi truy vấn

+0

Đây thực ra là câu trả lời đúng. – KVISH

Các vấn đề liên quan