场景:一个 Django 应用程序会生成大量与不同模型中的对象相关的小文件。
在使用默认文件存储时,我进行了大量搜索以避免在单个目录中生成大量文件。
django-fsfield是唯一的开源解决方案吗?您还有什么建议用于修复目录中的大量 inode 吗?
谢谢!
场景:一个 Django 应用程序会生成大量与不同模型中的对象相关的小文件。
在使用默认文件存储时,我进行了大量搜索以避免在单个目录中生成大量文件。
django-fsfield是唯一的开源解决方案吗?您还有什么建议用于修复目录中的大量 inode 吗?
谢谢!
考虑将内容存储在 MongoDB 集合中。
由于文件很小,您可以使用包含文件内容的单个二进制字段创建 MongoDB 文档。在这种情况下,“小”表示小于 MongoDB 文档大小限制,目前为 16MB。
如果你需要存储大文件,Mongo 支持gridfs。
另请参阅何时使用 GridFS。
我正在使用django-castor。
django-castor 是一个可重用的 Django 应用程序,它提供了一个 内容可寻址的存储后端。主类
djcastor.storage.CAStorage
是一种FileSystemStorage
将文件保存在其 SHA-1 摘要下的类型。
无论同一个文件上传多少次,它只会被存储一次,从而消除了冗余。
文件名是伪随机的,仅由十六进制字符组成,因此您不必担心文件名冲突或清理。
django-castor
根据摘要对上传目录中的文件进行分片;当单个目录中有太多文件时,这可以防止文件系统问题。
也可以使用自定义存储管理器,如果文件很小,则将其保存在具有二进制字段的数据库模型中,并保存超过 16MB 的小文件,并且不需要使用其他数据库。