使用django-compressor压缩静态文件
Reference:http://blog.csdn.net/permike/article/details/52355095
在网站开发阶段,对于静态资源文件比如JS,CSS等文件都是未经过压缩合并处理的,这对于访问量巨大的网站来说不仅浪费带宽,而且也会影响网站的访问速度。django-compressor的作用就是将静态文件压缩合并成一个文件,不仅减少了网站的请求次数,还能节省网络带宽。
本文分为两部分,第一部分介绍settings文件相关配置对静态文件的影响,然后再讨论Compressor的如何使用。如果你对setting文件非常了解不妨直接从第二部分开始阅读。
第一部分:Setting文件配置
早期的django处理静态资源要比较啰嗦,还要配置urlpatterns,不过自从django1.6开始加入了django.contrib.staticfiles这个内置app后,开发环境下处理静态资源就方便很多。django.contrib.staticfiles是django的内置(build-in)app,用于处理js、css、images等静态资源。首先确保这个app已经包含在INSTALLED_APPS中,django1.6及以上版本是默认包含该app在其中的。
一:指定STATIC_URL
STATIC_URL = '/static/'
STATIC_URL是客户端访问静态资源的根路径,比如:模版中定义的资源路径是:
{% load staticfiles %}
<script src="{% static "js/blog.js" %}"></script>
最终渲染后的效果是:
<script src="/static/js/blog.js"></script>
默认django会从每个app目录的static子目录下查找静态文件,因此通常情况下你都是将相关静态文件放在各自的app/static目录下。Django怎么知道从app/static目录查找静态文件呢?原来django有个默认配置项STATICFILES_FINDERS,默认值:
("django.contrib.staticfiles.finders.FileSystemFinder",
"django.contrib.staticfiles.finders.AppDirectoriesFinder")
AppDirectoriesFinder模块就是负责在app/static目录下找静态文件的。至于FileSystemFinder我们稍后介绍。
二:指定STATICFILES_DIRS
像jQuery,bootstrap等公用的静态资源文件在很多个app中都会共用到,如果是放在某个app中显得不符Python哲学,因此django提供了一个配置可以指定任意目录来存放这些公用的资源文件。配置参数是:STATICFILES_DIRS,比如:
STATICFILES_DIRS = (
os.path.join(BASE_DIR, "static"),
'/var/www/static/',
)
这意味着静态文件可以放在磁盘的任何一个位置(只要有权限访问)现在应该明白FileSystemFinder的作用了吧。就是用来查找定义在STATICFILES_DIRS中的静态文件的。
三:指定STATIC_ROOT
上面的配置就是在开发环境下Django对静态资源的处理过程,那么在生产环境下是怎么处理的呢?如果还是这样由django自己来处理,那么累死Django了,对于静态资源直接由Nginx这样的代理去处理就行,而且Nginx处理这些非逻辑的资源性能也非常高。于是Django提供了一个非常方便的静态资源管理命令django.contrib.staticfiles将系统要用的资源文件从不同目录收集到统一的目录中去,然后在Nginx的配置中指定这些静态资源的位置即可。
收集这些静态文件需要先指定存放这些静态资源的目录:STATIC_ROOT
STATIC_ROOT="/var/www/foofish.net/static/"
运行collectstatic管理命令
python manage.py collectstatic
运行该命令,所有静态资源都将拷贝到STATIC_ROOT指定的目录中。
四:配置Nginx
在Nginx的配置文件中指定凡是来自/static/路径的请求直接访问STATIC_ROOT。
location /static {
alias /var/www/foofish.net/static/; # your Django project's static files
}
第二部分:Compressor的使用
django-compressor 的安装配置非常简单
安装:
pip install django_compressor
配置:
COMPRESS_ENABLED = True
INSTALLED_APPS = (
# other apps
"compressor",
)
STATICFILES_FINDERS = (
'django.contrib.staticfiles.finders.AppDirectoriesFinder',
'django.contrib.staticfiles.finders.FileSystemFinder',
'compressor.finders.CompressorFinder',)
Django-Compressor开启与否取决于DEBUG参数,默认是COMPRESS_ENABLED与DEBUG的值相反。因为Django-Compressor的功能本身是用在生产环境下项目发布前对静态文件压缩处理的。因此想在开发阶段(DEBUG=True)的时候做测试使用,需要手动设置COMPRESS_ENABLED=True
使用
在模板文件中添加模板标签 {% load compress %}
{% load compress %}
#处理css
{% compress css %}
<link href="{% static "css/bootstrap.min.css" %}" rel="stylesheet">
<link href="{% static "css/blog-home.css" %}" rel="stylesheet">
<link href="{% static "css/github.css" %}" rel="stylesheet">
{% endcompress %}
#处理js
{% compress js %}
<script src="{% static "js/jquery-1.10.2.js" %}"></script>
<script src="{% static "js/bootstrap.js" %}"></script>
<script src="{% static "js/blog.js" %}"></script>
{% endcompress %}
执行命令:python manage.py compress ,最终文件将合并成:
<link rel="stylesheet" href="/static/CACHE/css/f18b10165eed.css" type="text/css">
<script type="text/javascript" src="/static/CACHE/js/9d1f64ba50fc.js"></script>
f18b10165eed.css、9d1f64ba50fc.js这两文件在STATIC_ROOT目录下面。
每次修改了js、css文件后,都需要重新加载最新的文件到STATIC_ROOT目录下去,因此需要重新运行命令:
python manage.py collectstatic
python manage.py compress
使用django-compressor压缩静态文件的更多相关文章
- [小技巧]ASP.NET Core中如何预压缩静态文件
原文地址:Pre-compressed static files with ASP.NET Core 作者:Gunnar Peipman 译者:Lamond Lu 译文:https://www.cnb ...
- Django中对静态文件的支持(转)
英文原文:[http://agiliq.com/blog/2013/03/serving-static-files-in-django/] 译文:[http://segmentfault.com/a/ ...
- Django (七) token&静态文件&媒体文件
token&静态文件&媒体文件 1. token 1. 会话技术 2. 服务端会话技术 3. 它实际上就是手动实现的session 4. 实现token 4.1 在models.py中 ...
- Django基础二静态文件和ORM
Django基础二静态文件和ORM 目录 Django基础二静态文件和ORM 1. 静态文件 1.1 静态文件基本配置: 1.2 静态文件进阶配置 2. request参数 3. Django配置数据 ...
- django中的静态文件
静态文件 1.什么是静态文件 在django中静态文件是指那些图片.css样式.js样式.视频.音频等静态资源. 2.为什么要配置静态文件 这些静态文件往往不需要频繁的进行变动,如果我们将这些静态文件 ...
- Django-compressor压缩静态文件,逆天!!!!!
使用django-compressor压缩混淆静态文件 使用django-compressor压缩混淆静态文件 使用django-compressor压缩混淆静态文件 django-compresso ...
- laravel 中 与前端的一些事4 之合并压缩静态文件
合并压缩多个静态文件到一个文件里面,可以减少网站的http请求,稍微优化性能,提高网站的用户体验 使用elixir来实现: 敲命令 合并并压缩js和css文件
- Django配置与静态文件
settings.py """ Django settings for myproject project. Generated by 'django-admin sta ...
- Django: 配置和静态文件
运行django-admin.py startproject [project-name] 命令会生成一系列文件,在django 1.6版本以后的settings.py文件中有以下语句: # Buil ...
随机推荐
- [LeetCode] Magical String 神奇字符串
A magical string S consists of only '1' and '2' and obeys the following rules: The string S is magic ...
- 用Visual Studio 2015 编写驱动之前一定要注意的问题!!!
如果你确定要使用Visual Studio 2015 编写驱动,那么在你安装Visual Studio 2015 和WDK之前,一定一定要注意一件事情,那就是确保SDK和WDK版本保持一致,切记切记! ...
- Android sdk content loader 0%的解决方案
Eclipse在启动时,经常会碰到半天启动不起来的情况,罪魁祸首就是“Android sdk content loader 0%”,题主经常是受这玩意的百般折磨,大早上一来就被这扫了工作的激情,浪费了 ...
- FusionCharts参数大全及详细说明(中文)
概述:本文主要整理了FusionCharts图表控件所包含的各类参数(中文说明),包含了图表,字体,网格,数字格式等参数,便于大家在FusionCharts使用过程中查找所需要的各类参数. 本文主要整 ...
- HDU 2546 饭卡 01背包变形
题目大意:中文题就不多说了 题目思路:由题意可知,只要高于5元,就可以随便刷,那我们就把最贵的留在最后刷.但是如果低于5元就什么也不能刷(哪怕你要买的物品价格不足五元),所以我们可以先求出(n-5)元 ...
- Apache下的FileUtils.listFiles方法简单使用技巧
一.引言 Apache提供的很多工具方法非常好用,推荐. 今天在使用的过程中使用到了org.apache.commons.io.FileUtils.listFiles方法,本文主要谈谈这个工具方法的用 ...
- mysql优化---优化工具MySQL performance tuning primer script
MySQL performance tuning primer script一个简单好用的mysql优化工具,其实一个shell脚本 下载: $ wget http://www.day32.com/M ...
- STM32开发指南-跑马灯实验
简单对I/O口的控制,主要通过对寄存器的读写控制.主要通过I/O的寄存器来控制:1. 控制I/O的方向2. 控制I/O的输出电平或上下来电阻3. 存储I/O口当前的输入状态(高低电平) 对使用LED灯 ...
- google-c-style
http://zhanxw.com/blog/2011/03/learning-and-applying-coding-style-from-google-in-emacs/ http://stack ...
- Gson通过借助TypeToken获取泛型参数的类型的方法
最近在使用Google的Gson包进行Json和Java对象之间的转化,对于包含泛型的类的序列化和反序列化Gson也提供了很好的支持,感觉有点意思,就花时间研究了一下. 由于Java泛型的实现机制,使 ...