gpt4 book ai didi

Django:直接从 Heroku 提供静态媒体文件

转载 作者:行者123 更新时间:2023-12-04 22:34:13 26 4
gpt4 key购买 nike

我最近将我的第一个 Django 应用程序部署到 Heroku。这是我的硕士项目,所以可扩展性不是一个大问题。我读过直接从 Heroku 提供静态和媒体文件可能会出现的问题,并且 Amazon S3 是最好的解决方案。到目前为止,静态文件——CSS、JS——都可以从 Heroku 正确地提供服务。

不过,媒体文件有点问题。

用户可以上传的唯一媒体是照片。同样,由于这是一个小项目,体积会很低。目前,这些照片正在正常转换。但是当更新推送到 Heroku 时,现有上传照片的链接在页面上断开,必须重新上传才能再次出现,这显然是 Not Acceptable 。

我试图辨别这是否是服务媒体的问题,可以由外部主机(例如 Amazon S3)或其他正在发生的事情解决。我并不急于为托管付费,但如果它可以解决这个问题,那么它很可能就是所选择的解决方案。

欢迎任何见解或经验。

最佳答案

这是预期的行为,因为写入 Heroku Web dyno 的文件系统不会添加到源代码管理中,也不会被视为“应用程序的一部分”。基本上,除了临时文件外,您根本不应该允许对文件系统进行任何写入。

这不仅是将更新推送到您的应用程序导致文件消失的问题;此外,如果您有多个 web dynos(Heroku 应用程序中最典型的用例),您的文件只会显示给碰巧点击了他们上传到的 web dyno 的用户。

解决方案是让您的用户直接上传到另一台服务器或 S3 并将链接传递给您的应用程序,或者让您自己的服务器自动将上传的文件发送到另一个目的地,例如 S3 本身。事实上,像 CSS 这样的静态 Assets 也可以从 S3 得到更好的服务,但这有时是实用的,有时则不是。

关于Django:直接从 Heroku 提供静态媒体文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11380173/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com