1

我正在使用具有离线压缩功能的Django Compressor,并将压缩的静态文件存储在 Amazon S3 上。我的问题是通过指定为协议来manifest.json引用缓存文件:http://

<link rel=\"stylesheet\" 
 href=\"http://stage-media.dropspot-app.com.s3.amazonaws.com/static/CACHE/css/abffb776bf3e.css\" 
 type=\"text/css\" media=\"all\" /><link rel=\"stylesheet\" 
 href=\"http://stage-media.dropspot-app.com.s3.amazonaws.com/static/CACHE/css/9533603cdbaa.css\"     
 type=\"text/css\" media=\"screen\" 
/>

这会导致通过 HTTPS 访问页面时不会加载缓存文件: The page at 'https://example.com' was loaded over HTTPS, but ran insecure content from 'http://example.com.s3.amazonaws.com/static/CACHE/css/abffb776bf3e.css': this content should also be loaded over HTTPS.

解决方案是在manifest.json没有 url 的情况下引用缓存的文件http:,但还没有找到一种方法让它以这种方式生成。

有没有办法manifest.json用相对协议的 url 生成?

4

1 回答 1

1

这是一个老问题,但我最近花了很多时间试图解决它。
此配置将django-compress在清单和压缩标签中生成相对于协议的 url:

AWS_S3_SECURE_URLS = False
AWS_QUERYSTRING_AUTH = False
AWS_S3_URL_PROTOCOL = ''
AWS_S3_CUSTOM_DOMAIN = '%s.s3.amazonaws.com' % AWS_STORAGE_BUCKET_NAME

STATIC_URL = "//%s/%s/" % (AWS_S3_CUSTOM_DOMAIN, STATICFILES_LOCATION)

AWS_S3_CUSTOM_DOMAIN对于向后兼容性很重要,如果省略,这将不起作用。

于 2016-04-28T17:34:17.987 回答