最近接手一个Django企业级项目,发现页面加载慢得像蜗牛,决定系统性地分析一下性能问题。
问题现象:用户反馈首页加载超过10秒,后台数据库查询耗时严重。
分析步骤:
- 启用Django Debug Toolbar
# settings.py
INSTALLED_APPS = [
'debug_toolbar',
# ...其他应用
]
MIDDLEWARE = [
'debug_toolbar.middleware.DebugToolbarMiddleware',
# ...其他中间件
]
INTERNAL_IPS = [
'127.0.0.1',
]
- 使用Django Profiling
# views.py
from django.db import connection
@require_http_methods(["GET"])
def slow_view(request):
# 业务逻辑
results = MyModel.objects.all()
print(f"查询数量: {len(results)}")
print(f"SQL语句数: {len(connection.queries)}")
for query in connection.queries:
print(query['sql'])
-
关键优化:发现大量N+1查询问题,通过
select_related()和prefetch_related()解决 -
数据库层面:为经常查询的字段添加索引
CREATE INDEX idx_user_created_at ON auth_user(created_at);
最终效果:页面加载时间从10秒优化到1.2秒,性能提升80%。
建议企业级项目都建立这样的性能监控机制,避免后期重构成本过高。

讨论