2012-06-07 42 views
5

我目前使用django壓縮器和django存儲來運行我的靜態介質關閉s3。是我的文件如下:Django Compressor with S3 URL Heroku

我的存儲按照該文檔是:

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 

我的設置是:

# 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', 
] 

有很多的媒體壓縮這就是爲什麼我選擇要使用脫機壓縮並運行manage.py compress命令,而不是在dyno重新啓動時運行collectstatic,因爲它只是減慢速度。

Django壓縮機提供了一個查詢字符串,它是偉大的,但它包含HTML不加載。即

<link rel="stylesheet" href="site-url/static/CACHE/css/da0c0fa8dd51.css?Signature=Signature&amp;Expires=Expires&amp;AWSAccessKeyId=key 

兩安培;項目不應該在那裏。我寧願讓它安全,但我也在設置中嘗試了AWS_S3_SECURE_URLS = False,這似乎並沒有改變我認爲出現問題的東西。

我正在使用django 1.4所以也許有一些不相容的東西。

+0

看來,在運行壓縮命令不重做清單文件。因此,只要您在此之前禁用安全網址,它應該沒問題。我會先嚐試並確認。 – Crazyconoli

回答

-2

我可以證實,如果使用壓縮管理命令,您需要重做清單文件。我手動做了,但我確定有更好的方法。相當小的問題,但我花了一點時間在這個上,也許它會爲別人節省一些時間。

+2

我不太關注。你到底如何手動重建? –

1

您可以使用AWS_QUERYSTRING_AUTH = false在您的settings.py防止這些查詢字符串項目

+0

這實際上是正確的答案。 – KVISH

相關問題