由于囊中羞涩,所以使用阿里云1M带宽服务器提供服务,但是访问速度十分感人,加载站点需要10多秒钟。主要原因是因为首页有大量图片资源需要加载,所有有必要使用CDN技术,对静态资源进行分发,提高页面加载速度。本文详细记录的Django项目如何使用CDN对静态资源进行加速处理的完整流程。

一、什么是CDN

CDN的全称是Content Delivery Network,即内容分发网络。CDN是构建在现有网络基础之上的智能虚拟网络,依靠部署在各地的边缘服务器,通过中心平台的负载均衡、内容分发、调度等功能模块,使用户就近获取所需内容,降低网络拥塞,提高用户访问响应速度和命中率。CDN的关键技术主要有内容存储和分发技术。 通俗来讲,就是存储你的站点的静态资源,然后分发到所有的边缘节点,用户在访问站点的时候,就会从就近的 CDN 节点获取资源,从而减轻服务器负载并提升网页加载速度。 举个例子,当你网上购物时,经常使用淘宝和京东,但是京东下单往往当天就可以收到快递,而淘宝需要等几天的物流。这是因为京东提前采购好商品,存放在全国各地的仓库,下单后直接从离你最近的仓库发货。而淘宝下单后,需要从厂家发货,所以京东收货速度快多了。 CDN加速也是同样的原理,开启了CDN加速可以大幅度提高网站的加载速度。

二、准备工作

  1. 已经备案的根域名
  2. 申请cdn加速域名的https证书,推荐一个免费站点(https://freessl.cn/
  3. 本文使用阿里云DNS解析和华为云CDN
  4. 用户访问流量示意图

Snipaste_2020-12-10_16-03-25.png

三、配置过程

1. 修改nginx配置文件

  • 修改nginx配置文件,配置cdn加速域名server配置(配置ssl、开启目录浏览、设置资源路径别名)
  • 目录浏览根据自身情况选择是否开启,开启主要是方便代码调试,修改静态资源。
server {
        listen 443 ssl http2;
        server_name  cdn.cuiliangblog.cn;
        autoindex on;
        autoindex_exact_size off;
        autoindex_localtime on;
        charset utf-8;
        ssl_certificate    /etc/ssl/cdn.cuiliangblog.cn_chain.crt;#.pem证书路径
        ssl_certificate_key  /etc/ssl/cdn.cuiliangblog.cn_key.key;#.key证书路径
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
        ssl_prefer_server_ciphers on;
        ssl_session_cache shared:SSL:10m;
        ssl_session_timeout 10m;
        location ~* \.(eot|otf|ttf|woff|woff2|svg)$ {
            root /root/myblog/;
            add_header Access-Control-Allow-Origin *;
        }
        location /static/ {
            alias /root/myblog/static/;
        }
        location /media/ {
            alias /root/myblog/media/;
        }
    }
  • 临时添加hosts记录,访问验证,查看cdn.cuiliangblog.cn/static/和media是否可以正常加载

image.png image.png

2. 华为CDN配置

  • 控制台——CDN——添加域名,选择源站IP,并填写服务器公网IP地址

image.png

  • 配置https证书,以及缓存策略

image.png

  • 复制cname域名

image.png

3. 阿里云DNS解析配置

  • 添加cname记录

image.png

  • 删除本地host记录,然后访问cdn.cuiliangblog.cn/static/和media是否可以正常加载

4. Django项目配置

  • 修改setting.py配置文件,修改static和media地址指向cdn加速地址
# 静态文件存放位置
# STATIC_URL = '/static/'
STATIC_URL = 'https://cdn.cuiliangblog.cn/static/'
STATICFILES_DIRS = [
    os.path.join(BASE_DIR, "static"),  
]

# 设置文件上传路径,图片上传、文件上传都会存放在此目录里
# MEDIA_URL = '/media/'
MEDIA_URL = 'https://cdn.cuiliangblog.cn/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
  • 查看模板文件,修改图片资源路径
<a href="javascript:;">
  <img lay-src="{{ MEDIA_URL }}{{ userinfo.photo }}" class="layui-nav-img">{{ user.username }}
</a>

四、结果验证

  • 访问站点,查看文档资源请求地址

image.png

  • 查看图片资源请求地址

image.png

0 子项 · 1 次浏览 · 2026-09-24