Jes*_*oto 8 python django caching amazon-s3
我一直在做一些研究,我找到了解释如何使用Django(1.8)缓存清除的文章,但他们没有解释我的情况.
我在settings.py中使用S3(并且它可以工作)以下设置:
STATICFILES_STORAGE= 'pms.s3utils.StaticRootS3BotoStorage'
Run Code Online (Sandbox Code Playgroud)
为了使用缓存清理文档说我必须设置:STATICFILES_STORAGE='django.contrib.staticfiles.storage.ManifestStaticFilesStorage'
我不知道使用什么设置来同时使用S3和缓存清除.
谢谢!
Jes*_*oto 12
所以我终于找到了解决方法.
为了能够将我的文件上传到我的S3存储桶中的2个不同的文件夹(静态和上传),我在我的settings.py文件中有这个:
STATICFILES_STORAGE = 'myapp.s3utils.StaticRootS3BotoStorage'
DEFAULT_FILE_STORAGE = 'myapp.s3utils.MediaRootS3BotoStorage'
Run Code Online (Sandbox Code Playgroud)
这在myapp.s3utils.py文件中:
from storages.backends.s3boto import S3BotoStorage
StaticRootS3BotoStorage = lambda: S3BotoStorage(location='static')
MediaRootS3BotoStorage = lambda: S3BotoStorage(location='uploads')
Run Code Online (Sandbox Code Playgroud)
但我无法使用Django的缓存破坏.解决方案是将我的myapp.s3utils.py文件更改为:
from storages.backends.s3boto import S3BotoStorage
from django.contrib.staticfiles.storage import ManifestFilesMixin
class CustomS3Storage(ManifestFilesMixin, S3BotoStorage):
pass
StaticRootS3BotoStorage = lambda: CustomS3Storage(location='static')
MediaRootS3BotoStorage = lambda: S3BotoStorage(location='uploads')
Run Code Online (Sandbox Code Playgroud)
基本上它添加了ManiFestfilesMixin,它允许你使用缓存清除.
作为旁注,您可以看到我只使用缓存清除静态文件,但不是上传文件.这就是MediaRootS3BotoStorage调用S3BotoStorage类而不是CustomS3Storage的原因.我是这样做的,因为上传文件没有存储在我的服务器中(静态文件是),它们直接存储在S3存储桶中,所以当我运行collectstatic时它们不在我的服务器上,所以我没有将哈希添加到名称中.
| 归档时间: |
|
| 查看次数: |
692 次 |
| 最近记录: |