用于django的amazon简单存储服务(s3)缓存后端
django-s3-cache的Python项目详细描述
这是用于django的amazon简单存储服务(s3)缓存后端。 它基于django.core.cache.backends.filebased.filebasedcache后端 以类似的方式运作。此后端使用 django-storages读取/写入 数据输入s3。它使用s3boto存储后端。
传递到此后端的所有键/值都存储在平面目录结构中 在你的S3桶里。它使用sha1而不是md5来创建文件名。
安装
使用pip从pypi安装:
pip install django-s3-cache
配置此后端的使用:
CACHES = { 'default': { 'BACKEND': 's3cache.AmazonS3Cache', 'OPTIONS': { 'ACCESS_KEY' : 'Your AWS access key', 'SECRET_KEY' : 'Your AWS secret access key', 'BUCKET_NAME': 'Your AWS storage bucket name', 'LOCATION' : 'directory_prefix', } } }
配置
django s3缓存支持许多配置选项。它们应该被定义为 如上所示,settings.py中的options字典的键。如果有什么 未显式定义它遵循s3boto后端的默认值 django存储然后从settings.py读取它们。
note-1:在settings.py中的某些值可以由boto和其他aws感知的全局使用 django组件,因为它们遵循格式aws_xxxx。最好定义 如果不希望遇到问题,则显式将值作为缓存选项。
note-2:因为1.2版django s3缓存与django storages v1.1.8兼容,后者 已更改配置变量的名称。所有新的变量都将降低 case和aws keys变量更改了名称。有关确切名称,请参见s3botostorage类 在s3boto.py中定义。django s3缓存实现了与前一个缓存的向后兼容性 允许更容易升级的选项语法。旧名称映射到新名称 选项在传递到s3botostorage之前是低盒的。上面的例子显示了新的语法。
note-3:在版本1.3之前,在处理location 选择。如果已使用的缓存对象将存储在定义的目录下,但是选择 而清除缓存并没有考虑到这一点。cache.clear()或cache.\u cull() 将删除整个存储桶。这已在1.3版中修复!
note-4:在版本1.2到1.3中,向后兼容性处理中存在bug。 选项中的options。如果您对access_key,secret_key使用了新的样式语法, bucket_name它将被重写,boto将由于缺少身份验证参数而崩溃。 这已经在1.4版中修复了!
一些值得注意的选项是:
- location-存储缓存文件的目录前缀。默认为空字符串,表示根目录;
- default\u acl=private-已创建对象的默认acl。与s3boto存储后端不同,我们将其设置为private;
- bucket-acl=default-acl-acl(如果自动创建)。默认设置为private。最好对缓存文件使用单独的存储桶;
- 减少冗余-如果您想节省一些存储成本,请设置为true;
- 被gzip-设置为true以启用gzip压缩。与gzip_content_type一起使用。请参阅django storagesdocumentation。
django s3实现了类似于股票文件系统后端的剔除策略。它将遵循以下选项:
- {EM1}$$Max条目
——在删除旧值之前缓存中允许的最大条目数。如果禁用0剔除。此参数默认为300; - cull_frequency-ar当达到max_entries时剔除。实际比率是1/cull_frequency,因此将cull_frequency设置为2,以便在达到max_entries时剔除一半的条目;
贡献
源代码和问题跟踪程序位于https://github.com/atodorov/django-s3-cache