gpt4 book ai didi

python - 我需要一些有关静态和媒体文件的建议

转载 作者:太空宇宙 更新时间:2023-11-03 17:58:58 25 4
gpt4 key购买 nike

我开始使用 Django 进行编程,需要您的一些建议。

我的项目是一个包含 1000 多种产品的目录。每个产品都有一个图像。

我需要优化这些图像的加载时间和管理,我的问题是:我在哪里存储这些图像?在静态文件夹、媒体文件夹或其他解决方案中?

我阅读了 Django 文档,并在谷歌上搜索了静态文件和媒体文件,但只找到了有关“将用户上传的数据(例如个人资料图像)存储在媒体文件夹中”的建议。但我不知道这个建议是否适用于我的项目,以优化这些图像文件的加载时间和管理。

根据您的经验,您对在我的项目中存储这些图像的最佳方式有何看法?

我正在使用 Nginx、DigitalOcean VPS。

谢谢!

最佳答案

静态文件是主题/皮肤(“打包”)的一部分。这些文件通常不应更改,并且应根据浏览器上次检索它们的时间提供服务,并在将来设置为较早的时间:

location /static {
expires max;
}

媒体文件是内容的一部分,而不是网站的包装。图像更改的可能性更大:上传的第一个看起来不太好,制造商提供的媒体更好,等等。因此,根据修改日期确定其过期时间更有意义:

location /media {
# Optional: if rollbacks are frequent
# if_modified_since before;
expires modified+1w;
}

关于回滚:如果可能从备份或版本控制系统恢复旧版本的镜像,您需要设置此项。请注意,Django 不会将上传图像的修改时间设置为上传者计算机上的修改时间,因此新上传的图像将是新图像,即使它是以前的版本。

现在棘手的部分来了:页面优化工具会警告您图像的过期时间不久,因此会提示媒体文件。这是因为他们在图像方面无法区分包装和内容。

另一件事需要注意的是,在那一周之后,浏览器将每次请求图像,并且当图像没有改变时,nginx 将提供 304 响应。因此,您的页面将生成更多请求。这和页面优化工具是修改在野外图像中很少使用的两个原因,而只使用第一个策略。为了处理修改后的图像,您会将不同名称的图像与相同的资源(产品)相关联,因此内容管理器或中间件层有责任将上传的图像重命名为唯一的名称。一个简单的技巧是将媒体图像命名为其 md5 或 sha1 哈希值。

即使您应用单一过期策略来提供媒体和静态服务,我仍然会从不同的目录提供它们。原因是静态文件不必由运行 Django 的用户可写(仅适用于运行collectstatic 管理命令的用户)。这可以防止配置错误或受损的 Django 用户弄乱静态目录。

关于python - 我需要一些有关静态和媒体文件的建议,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28034433/

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