Vienas CSS ir JS failas visame projekte - su Django Compress

Vienas CSS ir JS visame projekte (tinklapyje). Kaip tai padaryta plačiau šiame straipsnyje.


Django css compress
Vienas CSS ir JS failas visame projekte - su Django Compress

Esu matęs ne vieną projektą (ir tiesą pasakius ne vieną tokį daręs) kuriame CSS ir JS (JavaScript) failų yra kartais net per daug. Arba jie užima per daug.

Jau baigėsi tie laikai, kada IT tinklaraščiai mirgėte mirgėdavo visokiomis temomis kaip kad: "vienas puslapis su HTML, CSS ir JS failais turėtų užimti iki 30 KB" ir pan. Tinklapiai jau pasiekė tokius laikus, kad parodyti vien paprastą HTML puslapį su geru turiniu kartais neužtenka. To pasekoje kartais nukenčia vartotojai ir svetainės savininkas.

Savininkas nukenčia nereikalingu serverio apkrovimu. Kuo mažiau klientai padaro request'ų, tuo didesnį lankytojų srautą svetainė galėtų atlaikyti, tad reklamos kompanijos mažiau pakenktų atėjusiems klientams, kai dėl serverio apkrovimo svetainės tampa nepasiekiamos.

Tad šiame straipsnyje papasakosiu apie Django paketą pavadinimu django-compress. Jo pagalba savo Django svetainėse galima naudoti tik vieną JS ir CSS failą ir taip taupyti tiek naršytojų laiką tiek savo hostingo kainą.

Paketas gali būti parsisiunčiamas per buildout'ą į eggs įrašius:

eggs = django-compress

Tie, kurie nenaudoja buildout'o (tikrai verta, pamėginkit) galima jį parsisiųsti į pypi.python.org svetainės:

pip install django-compress

Įsirašykite compress į savo projekto settings.py failą:

INSTALLED_APPS += ('compress',)

Ir paketas sėkmingai veiks Jūsų projekte. Dabar tik reikia nurodyti CSS ir JS grupes, suspaudimo lygį savo nuostatymuose (tame pačiame projekto settings.py faile):

COMPRESS = True
COMPRESS_VERSION = True
COMPRESS_CSS = {
    'grupė': {
        'source_filenames': ('css/style.css', 'css/pagination.css',
                             'css/calendar.css', 'css/forum.css',
                             'css/gallery.css', ),
        'output_filename': 'c/main.css',
    },
}

Daugiau apie konfigūracines reikšmes galite paskaityti šioje nuorodoje. Lygiai tokiu pačiu principu pasidarome ir JavaScript failų grupes. Savo šablonuose, kuriuose anksčiau rašėte tiesioginius adresus į CSS ir JS failus pakeiskite šiomis šablono žymėmis (template tags):

{% compressed_css 'grupė' %}
{% compressed_js 'grupė' %}

Ar jau spėjote pasinaudoti django-compress paketu? Gal radote geresnę alternatyvą (galbūt net ne Django framework'ui)? Pasidalinkite :)