【发布时间】:2021-10-23 14:50:08
【问题描述】:
我正在使用 Django(3) 构建一个网站,我们在其中实现了blogs 以在网站上发布文章。对于每篇博文,我们必须添加images 一个特征图像,另一个可能需要在帖子中使用。您可以在以下位置找到该网站:https://pythonist.org
由于图像和静态 css/js 文件,我可以在 google 控制台中看到我的网站太慢了。 我正在使用以下代码在上传时压缩图像:
from imagekit.models import ProcessedImageField
class Course(models.Model):
title = models.CharField(max_length=250, blank=False)
slug = models.SlugField(blank=True, max_length=120)
description = RichTextUploadingField(config_name='default')
featured_image = ProcessedImageField(upload_to='course_images/', format='JPEG',
options={'quality': 80}, blank=False)
我正在使用safe 加载模板变量并利用cache、prefetch_selected 和其他基本优化调整。
但是还有其他实用的方法来加载我的图像和静态文件吗 更快?
我的网站已部署在 Heroku 上。
【问题讨论】:
-
我可能忽略了一些逻辑,但是在 Django 文档中也给出的一般建议不是应该通过(单独的)网络服务器而不是通过 Django 提供图像吗?网络服务器也可能会自动为您压缩和缓存图像(使用正确的设置)。
-
您应该澄清慢速部分是关于上传(每篇博文只发生一次,所以真的不重要),还是关于加载(每次视图发生,所以每秒多次/分钟/天/年)。
-
我不知道您的静态文件是否是问题所在。我查看了您的网站,它有一些大图像,但没有什么疯狂的。您可以尝试将每个 img 的最大目标定为 250kb,并减少总共的图像数量,但这不会大大缩短您的加载时间。您是否检查了重复的查询?也许模板引擎在做一堆额外的 SQL 语句?检查github.com/jazzband/django-debug-toolbar 或 django Silk。每个站点的目标是 10 个(或更少)请求。如果没有什么可以帮助开始加载该网站的部分与 XHR 异步。
-
通常 Django 不在生产环境中提供图像/文件。通常这是通过像 apache 或 nginx 这样的网络服务器来完成的,这些可以优化为缓存图像,并以压缩方式发送数据。
-
@9769953 他正在使用 s3
标签: python python-3.x django optimization django-3.0