cdn 配置需与 django 的 static_url、cdn 回源路径及 collectstatic 生成方式严格对齐,否则易致 404 或缓存失效;static_url 必须匹配 cdn 回源路径前缀,collectstatic 需启用哈希文件名,模板中始终用 {% static %} 确保路径一致。

CDN 不是配个域名就自动生效的,关键在 Django 的 STATIC_URL、CDN 回源路径、以及静态文件生成方式三者必须严格对齐,否则 404 或缓存失效是常态。
STATIC_URL 和 CDN 回源路径必须完全匹配
很多开发者把 STATIC_URL 设成 'https://cdn.example.com/',但 CDN 控制台里配置的回源地址是 https://myapp.com/static/——结果 CDN 去找 /css/app.css,而源站只响应 /static/css/app.css,直接返回 Django 的 404 页面(Content-Type 是 text/html 而不是 text/css)。
- 如果 CDN 回源路径含
/static/,STATIC_URL必须设为'https://cdn.example.com/static/' - 如果 CDN 设置了「strip path prefix」并回源到
https://myapp.com,那STATIC_URL才能设为'https://cdn.example.com/' - 部署后用
curl -I https://cdn.example.com/static/css/app.css检查响应头,确认Content-Type正确且状态码是 200
Django collectstatic 必须生成带哈希的文件名
CDN 缓存依赖文件名指纹(如 main.a1b2c3d4.js)实现长期缓存。如果 collectstatic 输出的是 main.js,改完代码后用户浏览器或 CDN 还在用旧版本。
Python 3.14.2是Python编程语言在2025年12月5日发布的稳定版本,属于3.14系列的第二个维护更新。该版本包含了18项修复,重点解决了多进程、数据类及正则表达式等模块的回归问题,并修复了CVE-2025-12084等安全漏洞。此版本标志着自由线程模式(移除GIL)正式获得官方支持,是Python发展的重要里程碑。
- 必须设置
STATICFILES_STORAGE = 'whitenoise.storage.CompressedManifestStaticFilesStorage' -
WhiteNoiseMiddleware要放在SecurityMiddleware之后、SessionMiddleware之前 - 运行
python manage.py collectstatic --clear后,检查STATIC_ROOT目录下是否出现带哈希的文件,以及是否生成staticfiles.json -
DEBUG=True时 WhiteNoise 默认不启用,本地看不到效果是正常的
模板中 {% static %} 的输出必须和 CDN 实际路径一致
Django 模板里写 {% static 'js/app.js' %},最终生成的 URL 是由 STATIC_URL + 路径拼出来的。这个拼接结果,必须和 CDN 上实际可访问的 URL 完全一致。
- 不要手动拼接 CDN 地址进模板,始终用
{% static %}—— 它会自动套用STATIC_URL - 如果
STATIC_URL = 'https://cdn.example.com/static/',那{% static 'js/app.js' %}就输出https://cdn.example.com/static/js/app.js - 检查浏览器开发者工具 Network 标签页,确认所有静态资源请求的 URL 前缀和你预期的 CDN 地址一致
最容易被忽略的是:CDN 配置、Django 静态文件生成、模板渲染这三环中任意一环路径不一致,就会导致资源加载失败或缓存不更新。别只改一个地方,要同步验证三处是否咬合。
Python免费学习笔记(深入):立即使用
在学习笔记中,你将探索 Python 的核心概念和高级技巧!










