当前位置: 首页 > 后台 > Django

Django压缩静态文件

作者: admin 2019-08-30 14:20:30 阅读(309) 评论(0)

前言

将Django项目部署到服务器上时,若js和css等静态文件过多或者过大,会导致网页加载缓慢。因此,我们需要对静态资源进行压缩。本文将讲述如何利用django-compressor第三方库对静态资源实现压缩。总共分为两个三个部分,一为安装配置,二为具体使用,三为注意事项。

一. 安装配置django-compressor

  • 首先利用pip命令pip install django-compressor来安装库文件。

  • 安装成功以后进入项目根目录下的 develop.py,在INSTALLED_APPS一栏加入compressorsettings.py配置django-compressor

  • develop.py继续加入STATICFILES_FINDERS,告诉Django要在哪里寻找需要压缩的静态文件,如下所示。

    AppDirectoriesFinder表示在App根目录下寻找静态文件,FileSystemFinder表示在项目根目录下搜索静态文件,CompressorFinder表示寻找需要压缩的静态文件。

STATICFILES_FINDERS = (
    'django.contrib.staticfiles.finders.AppDirectoriesFinder',
    'django.contrib.staticfiles.finders.FileSystemFinder',
    'compressor.finders.CompressorFinder',
)
  • COMPRESS_ENABLED参数的值为 true 时表示开启压缩,false 时表示不开启。由于压缩文件一般用于生产环境(服务器环境),本地环境(测试环境)下该参数值默认为 false。也就是说默认情况下此参数的值与DEBUG的值相反。

  • 为了测试压缩效果,我们在 develop.py 中加入以下代码,手动开启压缩。

COMPRESS_ENABLED = True # 开启压缩
  • 除此之外,我们还需要配置静态文件收集路径STATIC_ROOTSTATIC_ROOT的值表示部署项目时,静态资源的收集路径。可以在项目根目录下新建一个collect_static文件夹,然后将STATIC_ROOT指向它。代码如下.。
STATIC_ROOT = os.path.join(BASE_DIR, 'collect_static')  # 指定样式收集目录

二. 具体使用

  • 在需要压缩的模板文件(HTML文件)中加入以下代码,导入compress模块。
{% load compress %} //导入compress模块
  • 指定需要压缩的 css 或者 js 文件,用代码块包围,注意css和js包围代码块的异同
/*指定需要压缩的css文件*/
{% compress css %}  //别漏了css
    <link rel="stylesheet" type="text/css" href="{{ STATIC_URL }}css/global.css">
{% endcompress %}
/*指定需要压缩的js文件*/
{% compress js %}  //别漏了js
    <script type="text/javascript" src="{{ STATIC_URL }}js/jquery-3.4.1.min.js"></script>
    <script type="text/javascript" src="{{ STATIC_URL }}js/global.js"></script>
    <script type="text/javascript" src="{{ STATIC_URL }}js/top.js"></script>
    <script type="text/javascript" src="{{ STATIC_URL }}js/base.js"></script>
{% endcompress %}
  • 进入项目根目录,执行命令行python manage.py collectstatic --noinput,收集项目和App根目录下的静态文件到之前配置的STATIC_ROOT对应的路径( collect_static )下。 Django收集静态文件

  • 继续执行命令行python manage.py compress --force,压缩静态文件,执行成功之后在项目的 collec_static 文件夹中会生成一个 CACHE 文件。进入项目目录观察是否生成了 CACHE 文件夹。 Django压缩静态文件目录

三. 注意事项

  • 本教程是在本地环境下进行的,如果是在生产环境中进行压缩静态文件操作,还需要配置Nginx等反代web服务器,让静态文件访问URL指向压缩文件根目录STATIC_ROOT

  • Django 默认收集项目根目录下的静态文件,只收集 App 目录下的静态文件。若要收集项目根目录下的静态文件,需要在 develop.py 中加入以下代码,指定项目根目录的静态文件夹。

# 加入项目根目录下的static文件
STATICFILES_DIRS = [
    os.path.join(BASE_DIR, 'static')
]

教程到这里就结束了,有问题的话可以在下方评论。

0 条评论