Django壓縮靜態(tài)文件的實(shí)現(xiàn)方法詳析
django靜態(tài)文件配置原理
靜態(tài)文件配置就是為了讓用戶請求時django服務(wù)器能找到靜態(tài)文件返回。
首先要理解幾個概念:
- 媒體文件:用戶上傳的文件
- 靜態(tài)文件:css,js,image等
- 開發(fā)環(huán)境:使用django內(nèi)置服務(wù)器處理靜態(tài)文件
- 生產(chǎn)環(huán)境:使用apache2/nginx服務(wù)器處理靜態(tài)文件映射
所以在配置時要分清楚開發(fā)環(huán)境還是生產(chǎn)環(huán)境,這個后面會詳細(xì)介紹。
下面先介紹一下服務(wù)器查找靜態(tài)文件的原理,這樣我們才能更好的配置。
引言
在網(wǎng)站開發(fā)階段,對于靜態(tài)資源文件比如JS,CSS等文件都是未經(jīng)過壓縮合并處理的,這對于訪問量巨大的網(wǎng)站來說不僅浪費(fèi)帶寬,而且也會影響網(wǎng)站的訪問速度。
django-compressor可以把js/css等靜態(tài)文件壓縮,這樣不僅有利于減少網(wǎng)站的請求次數(shù),還能節(jié)省網(wǎng)絡(luò)帶寬。
而這篇文章即是介紹使用如何使用Python的Django框架中的壓縮組件django-compressor!
下面就介紹如何在Django中集成django-compressor!
安裝django-compressor
安裝很簡單,pip安裝下就可以了:
$ pip install django-compressor
然后在'setting'的INSTALLED_APPS中添加
INSTALLED_APPS = [ #others 'compressor' ]
setting配置
首先確保django.contrib.staticfiles已經(jīng)包含在INSTALLED_APPS中,django1.6及以上版本是默認(rèn)包含該app在其中的.
指定STATIC_URL
STATIC_ROOT = os.path.join(SITE_ROOT, 'collectedstatic') # STATIC_URL是客戶端訪問靜態(tài)資源的根路徑配置 STATIC_URL = '/static/' STATICFILES = os.path.join(BASE_DIR, 'static')
配置STATICFILES_FINDERS
默認(rèn)django會從每個app目錄的static子目錄下查找靜態(tài)文件,因此通常情況下你都是將相關(guān)靜態(tài)文件放在各自的app/static目錄下。Django怎么知道從app/static目錄查找靜態(tài)文件呢?Django有個默認(rèn)配置項(xiàng)STATICFILES_FINDERS:
STATICFILES_FINDERS = ( 'django.contrib.staticfiles.finders.FileSystemFinder', 'django.contrib.staticfiles.finders.AppDirectoriesFinder', #other 'compressor.finders.CompressorFinder', )
添加django-compressor配置:
Django-Compressor開啟與否取決于DEBUG參數(shù),默認(rèn)是COMPRESS_ENABLED 與 DEBUG 的值相反。因?yàn)?Django-Compressor 的功能本身是用在生產(chǎn)環(huán)境下項(xiàng)目發(fā)布前對靜態(tài)文件壓縮處理的。因此想在開發(fā)階段 (DEBUG=True) 的時候做測試使用,需要手動設(shè)置 COMPRESS_ENABLED=True
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' ]
使用
使用也很簡單,模板文件中添加模板標(biāo)簽 <font color="red">{% load compress %}</font>
下面分別是css和js的使用方式
{% 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 %}
接著先運(yùn)行命令:
$ python manage.py collectstatic --noinput
所有靜態(tài)資源都將拷貝到STATIC_ROOT指定的目錄中。
然后運(yùn)行命令:
$ python manage.py compress --force
這樣就會把壓縮后的文件放在 <font color="red">STATIC_ROOT</font> 目錄下面,大功告成?。?/p>
每次修改了js、css文件后,都需要重新加載最新的文件到 <font color="red">STATIC_ROOT</font> 目錄下去,因此需要重新運(yùn)行命令:
$ python manage.py collectstatic --noinput $ python manage.py compress --force
總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。
相關(guān)文章
Python的NLTK模塊詳細(xì)介紹與實(shí)戰(zhàn)案例
自然語言處理庫NLTK在Python中的應(yīng)用廣泛,提供了分詞、詞性標(biāo)注、句法分析等多種功能,本文介紹了NLTK的核心功能、基本概念以及通過具體實(shí)戰(zhàn)案例(如文本分詞、去除停用詞、詞干提取等)展示了其在NLP任務(wù)中的實(shí)際應(yīng)用2024-09-09
在keras里面實(shí)現(xiàn)計(jì)算f1-score的代碼
這篇文章主要介紹了在keras里面實(shí)現(xiàn)計(jì)算f1-score的代碼,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-06-06
Python Threading 線程/互斥鎖/死鎖/GIL鎖
這篇文章主要介紹了Python Threading 線程/互斥鎖/死鎖/GIL鎖的相關(guān)知識,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-07-07
pandas之query方法和sample隨機(jī)抽樣操作
這篇文章主要介紹了pandas之query方法和sample隨機(jī)抽樣操作,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-03-03
用python實(shí)現(xiàn)學(xué)生管理系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了用python實(shí)現(xiàn)學(xué)生管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-07-07

