在Django中存储图像文件的典型场景是什么?更具体地说,图像是直接存储在本地文件系统或Amazon S3上的数据库blob(例如MongoDB GridFS)中吗?对于这三种情况,是否有工具或django包可用于简化存储图像的生活?
我目前正在本地开发服务器上的Django项目中的媒体文件夹中保存图像并提供服务.有人告诉我,在同一台机器上提供静态文件是一种不好的做法.那么在Django中存储和提供静态图像的典型场景是什么?
Dav*_*ver 16
一个典型的,现实世界的例子是将上传的图像存储在您网站media/目录的子目录中:)
如果您需要存储的图像多于您的应用服务器具有硬盘空间,或者您需要多个应用服务器,或者您希望使用CDN来减少延迟,或者......还有其他一千个事件中的一个,这可能会成为问题.
但是,除非你有特定的前期要求,否则了解你需要担心的那些事情中的哪一个(如果有的话)的唯一方法就是启动你的网站,最快的方法是将图像存储在子目录中media/.
如果你这样做用FileField,而你小心你的代码不承担,例如,该图像是本地磁盘上的文件(例如,您不使用.url()的方法FileFile,你不使用.path属性),当时间到来时(如果有的话)将这些图像移动到更合适的后端是直截了当的.
默认情况下,Django会将所有文件(和图像)保存在MEDIA_ROOT中.但是,您可以编写自定义文件存储,以便将其保存在其他位置.
选择什么?这真的取决于.
您打算存储多少个文件?他们会使用多少存储空间?带宽多少?你认为会有很高的使用率吗?
通常,本地文件系统是最快的选择; 但如果您发现这些图像会占用太多带宽,那么您可能需要卸载它们,尤其是在使用模式看到高峰时.相反,如果您需要扩展到多个服务器,那么您可能会发现将它们移动到数据库中是有益的.
无论如何,只有在获得一些数据后才能做出决定,如果有可能的真实数据.切换到不同的存储系统非常容易,因此我将从本地文件系统开始,然后在看到问题后切换到更高级的东西.
这本身并不是坏习惯。我认为告诉你这件事的人有点困惑。Django 说你永远不应该使用Django提供静态资源,即它们应该由你用作 Django 的反向代理(Apache、nginx 等)的网络服务器直接提供,但它没有争论是否必须打开不同的服务器或相同的服务器。
如果您有一个简单的应用程序或网站,为静态文件使用完全不同的服务器可能有点过头了。只有在高并发的情况下才重要(想想 Twitter、Facebook 等),在这种情况下,应用程序不能让网络服务器担心除了将请求传送到应用程序本身之外的任何事情。现在,一些网络主机提供“云”存储以配合您的 VPS(例如 Rackspace)。如果您正在使用这样的主机,请务必充分利用您拥有的资源,但这在大多数情况下不是必需的。
但是,在不同的子域下提供静态资源是有好处的。您可以使用相同的服务器,但使用子域(例如 static.mysite.com)将允许浏览器进行更多并行下载,在某些情况下,至少可以防止来自主网站的 cookie 附加到每个静态要求。
| 归档时间: |
|
| 查看次数: |
16542 次 |
| 最近记录: |