Django-让网站访问更快

使用CDN加速

为什么要使用 CDN?

  • 页面卡顿
  • 高并发情况下服务器压力大

CDN访问的两阶段

  1. 域名解析
  2. 内容请求

CDN 访问的两阶段

加速静态资源访问的两种方法

  1. 使用云端的静态资源 (能够解决国外网站访问慢的问题)
  2. 使用CDN加速

示例:使用阿里云的 OSS 存储静态资源文件
Django 会自动替换所有静态资源文件的路径为 OSS 文件的路径,并且对 URL 添加鉴权参数
在settings里添加OSS设置

1
2
STATIC_ROOT = 'static'
STATICFILES_STORAGE = 'django_oss_storage.backends.0ssStaticStorage'

使用 CDN 的两种方式

  1. 手工上传静态资源文件到 CDN
  2. 通过 Tengine 把本机的静态资源开放到Web上, CDN自动回流到 Tengine
    1
    2
    3
    location /static {
    alias /data/workspace/recruitment/static;
    }

以手工上传静态资源文件为例,Django 启用 CDN 静态资源加速的步骤

  • 生成静态资源文件, 上传静态资源到 OSS
  • 配置 CDN 域名,回源地址指向 OSS Bucket, 配置 Referer 防盗链的白名单
  • 配置 OSS Bucket 匿名可以读
  • 设置 STATIC_URL,直接指向 CDN 地址,同时注释掉 OssStaticStorage 避免冲突
    1
    2
    STATIC_URL = 'http://icdn.ihopeit.com/static/'
    # STATICFILES_STORAGE = 'django_oss_storage.backends.OssStaticStorage'
    运行如下命令生成各个应用的静态资源文件:
    1
    python manage.py collectstatic --settings=settings.local
  • 阿里云OSS控制台
  • 阿里云CDN配置