前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Django实现压缩静态文件

Django实现压缩静态文件

作者头像
緣來
发布2018-09-18 17:38:06
1.7K0
发布2018-09-18 17:38:06
举报
文章被收录于专栏:緣來來來

在网站开发阶段,对于静态资源文件比如JS,CSS等文件都是未经过压缩合并处理的,这对于访问量巨大的网站来说不仅浪费带宽,而且也会影响网站的访问速度。

django-compressor可以把js/css等静态文件压缩,这样不仅有利于减少网站的请求次数,还能节省网络带宽。

而这篇文章即是介绍使用如何使用Python的Django框架中的压缩组件django-compressor!

下面就介绍如何在Django中集成django-compressor!

安装django-compressor

安装很简单,pip安装下就可以了:

代码语言:javascript
复制
$ pip install django-compressor

然后在'setting'的INSTALLED_APPS中添加

代码语言:javascript
复制
INSTALLED_APPS = [
    #others
    'compressor'
]

setting配置

首先确保django.contrib.staticfiles已经包含在INSTALLED_APPS中,django1.6及以上版本是默认包含该app在其中的.

指定STATIC_URL

代码语言:javascript
复制
STATIC_ROOT = os.path.join(SITE_ROOT, 'collectedstatic')
# STATIC_URL是客户端访问静态资源的根路径配置 
STATIC_URL = '/static/'
STATICFILES = os.path.join(BASE_DIR, 'static')

配置STATICFILES_FINDERS

默认django会从每个app目录的static子目录下查找静态文件,因此通常情况下你都是将相关静态文件放在各自的app/static目录下。Django怎么知道从app/static目录查找静态文件呢?Django有个默认配置项STATICFILES_FINDERS:

代码语言:javascript
复制
STATICFILES_FINDERS = (
    'django.contrib.staticfiles.finders.FileSystemFinder',
    'django.contrib.staticfiles.finders.AppDirectoriesFinder',
    #other
    'compressor.finders.CompressorFinder',
)

添加django-compressor配置:

Django-Compressor开启与否取决于DEBUG参数,默认是COMPRESS_ENABLED 与 DEBUG 的值相反。因为 Django-Compressor 的功能本身是用在生产环境下项目发布前对静态文件压缩处理的。因此想在开发阶段 (DEBUG=True) 的时候做测试使用,需要手动设置 COMPRESS_ENABLED=True

代码语言:javascript
复制
COMPRESS_ENABLED = True
COMPRESS_OFFLINE = True
COMPRESS_CSS_FILTERS = [
    #creates absolute urls from relative ones
    'compressor.filters.css_default.CssAbsoluteFilter',
    #css minimizer
    'compressor.filters.cssmin.CSSMinFilter'
]
COMPRESS_JS_FILTERS = [
    'compressor.filters.jsmin.JSMinFilter'
]

使用

使用也很简单,模板文件中添加模板标签 {% load compress %}

下面分别是css和js的使用方式

代码语言:javascript
复制
{% load compress %}
{% compress css %}
<link rel='stylesheet' href='{% static 'blog/css/style.css' %}' type='text/css'/>
{% endcompress %}
{% compress js %}
<script type="text/javascript" src="{% static 'blog/js/jquery-3.1.1.js' %}"></script>
{% endcompress %}

接着先运行命令:

代码语言:javascript
复制
$ python manage.py collectstatic --noinput

所有静态资源都将拷贝到STATIC_ROOT指定的目录中。

然后运行命令:

代码语言:javascript
复制
$ python manage.py compress --force

这样就会把压缩后的文件放在 STATIC_ROOT 目录下面,大功告成!!

每次修改了js、css文件后,都需要重新加载最新的文件到 STATIC_ROOT 目录下去,因此需要重新运行命令:

代码语言:javascript
复制
$ python manage.py collectstatic --noinput
$ python manage.py compress --force
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018-08-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 安装django-compressor
  • setting配置
    • 指定STATIC_URL
      • 配置STATICFILES_FINDERS
        • 添加django-compressor配置:
          • 使用
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档