Android 在多平台项目中将用户图像存储为二进制数据与静态文件对性能的影响?

Android 在多平台项目中将用户图像存储为二进制数据与静态文件对性能的影响?,android,ios,django,performance,Android,Ios,Django,Performance,我有一个项目,在Django中开发了web实现,在Android和iOS中开发了移动实现。其中一个功能是允许用户上传图像。关于将它们存储为二进制数组以及将它们存储为文件服务器提供的静态文件,有各种各样的帖子。是否有任何可行的解决方案对所有三种平台都足够有效?Django提供了处理图像上传的逻辑,请参阅。 根据我自己的经验,在django环境中,让django通过其图像字段进行工作要方便得多。 只需创建一个模型: class UserImage(models.Model): image =

我有一个项目,在Django中开发了web实现,在Android和iOS中开发了移动实现。其中一个功能是允许用户上传图像。关于将它们存储为二进制数组以及将它们存储为文件服务器提供的静态文件,有各种各样的帖子。是否有任何可行的解决方案对所有三种平台都足够有效?

Django提供了处理图像上传的逻辑,请参阅。 根据我自己的经验,在django环境中,让django通过其图像字段进行工作要方便得多。 只需创建一个模型:

class UserImage(models.Model):
    image = models.ImageField(upload_to='test')
    user = models.ForeignKey(User)

这将为您处理所有逻辑,并将新图像文件保存到服务器上的指定目录。优点是您可以通过
http://yourdomain.com/media/test/image.png

Django提供处理图像上载的逻辑,请参阅。 根据我自己的经验,在django环境中,让django通过其图像字段进行工作要方便得多。 只需创建一个模型:

class UserImage(models.Model):
    image = models.ImageField(upload_to='test')
    user = models.ForeignKey(User)

这将为您处理所有逻辑,并将新图像文件保存到服务器上的指定目录。优点是您可以通过
http://yourdomain.com/media/test/image.png

绝对是静态文件

静态文件可以由web服务器缓存,通过CDN等提供服务。即使不缓存静态文件,web服务器直接从磁盘提供服务也比让数据库从表中加载静态文件更有效

用户上传的文件在Django中称为“媒体文件”,以区别于“静态文件”,静态文件是网站中不变的部分(即核心设计)。然而,当涉及到为他们服务时,方法是相同的

文档中有一些详细信息:

您将看到这里的注释,除了在开发过程中,您不应该让Django本身为静态或媒体文件提供服务。这意味着您需要设置web服务器来为文件提供服务

此处文档中的一些详细信息:

一种性能更好、更容易设置的替代方法(似乎与上述建议相矛盾)是使用:

…RedNose设计用于与CDN结合使用(例如,如果您在AWS上托管)-在这种情况下,Django可以处理静态+媒体文件,因为它们最终将由CDN提供服务

至于特定于移动性能的问题,您应该研究:

绝对是静态文件

静态文件可以由web服务器缓存,通过CDN等提供服务。即使不缓存静态文件,web服务器直接从磁盘提供服务也比让数据库从表中加载静态文件更有效

用户上传的文件在Django中称为“媒体文件”,以区别于“静态文件”,静态文件是网站中不变的部分(即核心设计)。然而,当涉及到为他们服务时,方法是相同的

文档中有一些详细信息:

您将看到这里的注释,除了在开发过程中,您不应该让Django本身为静态或媒体文件提供服务。这意味着您需要设置web服务器来为文件提供服务

此处文档中的一些详细信息:

一种性能更好、更容易设置的替代方法(似乎与上述建议相矛盾)是使用:

…RedNose设计用于与CDN结合使用(例如,如果您在AWS上托管)-在这种情况下,Django可以处理静态+媒体文件,因为它们最终将由CDN提供服务

至于特定于移动性能的问题,您应该研究:

绝对是静态文件!:)静态文件可以缓存,通过CDN等提供服务,即使没有这些,web服务器也可以更高效地提供服务,而不是从数据库中加载它们。您是否知道移动平台也是如此?您的两个选择对性能的影响都在服务器端,所以是的。肯定是静态文件!:)静态文件可以缓存,通过CDN等提供服务,即使没有这些,web服务器也可以更高效地提供服务,而不是从数据库中加载它们。你会不会碰巧知道移动平台是否也是如此?你的两个选择对性能的影响都在服务器端,所以是的。也许我的问题不清楚。您描述的方法本质上是将图像作为静态文件存储在给定路径的引用位置。我正在尝试评估将图像存储为静态文件或将其保存为数据库中的二进制字段是否更有意义。值得指出的是,您可以让web服务器直接从该目录提供文件,这样就不需要通过Django提供这些文件。我认为将数据存储在用于您的用例的数据库。有些用例是有意义的(例如,如果您想在其他地方备份或镜像数据库,请创建转储等)。将它们存储为服务器上的文件是更直接的方法,我不知道将它们存储在数据库中会提高性能。。。先不说你有更多的麻烦直接从数据库中写入和读取数据…也许我的问题不清楚。您描述的方法本质上是将图像作为静态文件存储在给定路径的引用位置。我正在尝试评估将图像存储为静态文件或将其保存为数据库中的二进制字段是否更有意义。值得指出的是,您可以让web服务器直接从该目录提供文件,这样就不需要通过Django提供这些文件。我认为这没有意义