【问题标题】:Django 1.8 Cache busting + Amazon S3Django 1.8 缓存破坏 + Amazon S3
【发布时间】:2016-02-15 11:13:42
【问题描述】:

我一直在做一些研究,我找到了解释如何使用 Django (1.8) 缓存清除的文章,但它们没有解释我的情况。

我在 settings.py 中使用具有以下设置的 S3(并且它可以工作):

STATICFILES_STORAGE= 'pms.s3utils.StaticRootS3BotoStorage'

为了使用缓存清除 docs 说我必须设置:STATICFILES_STORAGE='django.contrib.staticfiles.storage.ManifestStaticFilesStorage'

我不知道要使用什么设置才能同时使用 S3 和缓存清除。

谢谢!

【问题讨论】:

    标签: python django caching amazon-s3


    【解决方案1】:

    所以我终于找到了解决方法。

    为了能够将我的文件上传到我的 S3 存储桶中的 2 个不同文件夹(静态和上传),我在我的 settings.py 文件中有这个:

    STATICFILES_STORAGE = 'myapp.s3utils.StaticRootS3BotoStorage'
    DEFAULT_FILE_STORAGE = 'myapp.s3utils.MediaRootS3BotoStorage'
    

    这在myapp.s3utils.py 文件中:

    from storages.backends.s3boto import S3BotoStorage
    
    StaticRootS3BotoStorage = lambda: S3BotoStorage(location='static')
    MediaRootS3BotoStorage  = lambda: S3BotoStorage(location='uploads')
    

    但我不能使用 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')
    

    基本上它添加了 ManiFestfilesMixin,它允许您使用缓存清除。

    作为旁注,您可以看到我只对静态文件使用缓存清除,而不是对上传文件使用。这就是 MediaRootS3BotoStorage 调用 S3BotoStorage 类而不是 CustomS3Storage 的原因。 我这样做是因为上传文件没有存储在我的服务器中(静态文件是),它们直接存储在 S3 存储桶中,所以当我运行 collectstatic 时,它们不在我的服务器上,所以我不必将哈希添加到名称中。

    【讨论】:

    • 哇,这拯救了我的一天!我已经处理了几个小时没有任何成功。我不明白为什么这个答案没有更多的赞成票。 s3utils.py 上的这个简单更改对我来说就像一个魅力:) 谢谢队友!!!
    • staticfiles.json 在这种情况下存储在 S3 还是本地文件系统中?每个请求都会读取它吗?
    • 为了回答我的问题,staticfiles.json 似乎存储在 S3 中,可公开查看,并且不会随每个请求一起读取。
    • 我遇到了ManifestFilesMixin 的一些问题,并且错误的文件被上传到 S3。如果你有这个问题,看看这个问题 - stackoverflow.com/questions/52309821/…
    猜你喜欢
    • 1970-01-01
    • 2018-09-02
    • 2012-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-28
    • 2017-01-01
    相关资源
    最近更新 更多