Jifunze Jinsi ya Kuharakisha Tovuti Kwa Kutumia Nginx na Gzip Moduli


Hata katika wakati ambapo kasi kubwa ya Mtandao inapatikana kote ulimwenguni, kila jitihada za kuboresha nyakati za upakiaji wa tovuti zinakaribishwa kwa mikono miwili.

Katika makala hii tutajadili njia ya kuongeza kasi ya uhamishaji kwa kupunguza saizi za faili kupitia ukandamizaji. Mbinu hii huleta faida ya ziada kwa kuwa pia inapunguza kiwango cha kipimo data kinachotumiwa katika mchakato, na kuifanya iwe nafuu kwa mmiliki wa tovuti anayelipia.

Ili kukamilisha lengo lililotajwa katika aya hapo juu, tutatumia Nginx na moduli yake ya gzip iliyojengwa ndani ya nakala hii. Kama hati rasmi inavyosema, moduli hii ni kichujio kinachobana majibu kwa kutumia mbinu inayojulikana ya ukandamizaji wa gzip. Hii inahakikisha kwamba saizi ya data iliyotumwa itabanwa kwa nusu au hata zaidi.

Kufikia wakati unafika mwisho wa chapisho hili, utakuwa na sababu nyingine ya kufikiria kutumia Nginx kutumikia tovuti na programu zako.

Inasakinisha Seva ya Wavuti ya Nginx

Nginx inapatikana kwa usambazaji mkubwa wa kisasa. Ingawa tutatumia mashine pepe ya CentOS 7 (IP 192.168.0.29) kwa nakala hii.

Maagizo yaliyotolewa hapa chini yatafanya kazi na marekebisho kidogo (ikiwa yapo) katika usambazaji mwingine pia. Inachukuliwa kuwa VM yako ni usakinishaji mpya; vinginevyo, itabidi uhakikishe kuwa hakuna seva zingine za wavuti (kama vile Apache) zinazoendesha kwenye mashine yako.

Ili kusakinisha Nginx pamoja na tegemezi zake zinazohitajika, tumia amri ifuatayo:

----------- On CentOS/RHEL 7 and Fedora 22-24 ----------- 
# yum update && yum install nginx

----------- On Debian and Ubuntu Distributions ----------- 
# apt update && apt install nginx

Ili kuthibitisha kuwa usakinishaji umekamilika kwa mafanikio na kwamba Nginx inaweza kuhudumia faili, anza seva ya wavuti:

# systemctl start nginx
# systemctl enable nginx

na kisha ufungue kivinjari na uende kwa http://192.168.0.29 (usisahau kubadilisha 192.168.0.29 na anwani ya IP au jina la mpangishaji la seva yako). Unapaswa kuona ukurasa wa Kukaribisha:

Ni lazima tukumbuke kwamba baadhi ya aina za faili zinaweza kubanwa vizuri zaidi kuliko nyingine. Faili za maandishi wazi (kama vile HTML, CSS, na JavaScript) zinabana vizuri sana huku zingine (faili za.iso, tarballs, na picha, kutaja chache) hazifanyi hivyo, kwa kuwa tayari zimebanwa na asili.

Kwa hivyo, inapaswa kutarajiwa kuwa mchanganyiko wa Nginx na gzip utaturuhusu kuongeza kasi ya uhamishaji wa zamani, wakati mwisho unaweza kuonyesha uboreshaji mdogo au hakuna kabisa.

Pia ni muhimu kukumbuka kwamba wakati moduli ya gzip imewashwa, faili za HTML HUBINADHIWA DAIMA, lakini aina nyingine za faili zinazopatikana sana kwenye tovuti na programu (yaani, CSS na JavaScript) hazipatikani.

Kujaribu Kasi ya Tovuti ya Nginx BILA Moduli ya gzip

Kuanza, hebu tupakue kiolezo kamili cha Bootstrap, mseto mzuri wa faili za HTML, CSS na JavaScript.

Baada ya kupakua faili iliyoshinikizwa, tutaifungua kwa saraka ya mizizi ya block block yetu ya seva (kumbuka kuwa hii ni Nginx sawa na maagizo ya DocumentRoot katika tamko la mwenyeji wa Apache):

# cd /var/www/html
# wget https://github.com/BlackrockDigital/startbootstrap-creative/archive/gh-pages.zip
# unzip -a gh-pages.zip
# mv startbootstrap-creative-gh-pages tecmint

Unapaswa kuwa na muundo wa saraka ufuatao ndani ya /var/www/html/tecmint:

# ls -l /var/www/html/tecmint

Sasa nenda kwa http://192.168.0.29/tecmint na uhakikishe kuwa ukurasa unapakia ipasavyo. Vivinjari vingi vya kisasa vinajumuisha seti ya zana za msanidi. Katika Firefox, unaweza kuifungua kupitia Tools → Web Developer menu.

Tunavutiwa sana na menyu ndogo ya Mtandao, ambayo itaturuhusu kufuatilia maombi yote ya mtandao yanayoendelea kati ya kompyuta yetu na mtandao wa ndani na Mtandao.

Njia ya mkato ya kufungua menyu ya Mtandao katika zana za msanidi ni Ctrl + Shift + Q. Bonyeza mchanganyiko huo wa vitufe au tumia upau wa menyu ili kuifungua.

Kwa kuwa tuna nia ya kuchunguza uhamisho wa faili za HTML, CSS, na JavaScript, bofya kwenye vitufe vilivyo chini na uonyeshe upya ukurasa. Katika skrini kuu utaona maelezo ya uhamishaji wa faili zote za HTML, CSS, na JavaScript:

Upande wa kulia wa safu wima ya Ukubwa (ambayo inaonyesha ukubwa wa faili mahususi) utaona muda wa uhamishaji wa mtu binafsi. Pia unaweza kubofya mara mbili faili yoyote uliyopewa ili kuona maelezo zaidi katika kichupo cha Saa.

Hakikisha umeandika madokezo ya nyakati zilizoonyeshwa kwenye picha iliyo hapo juu ili uweze kuzilinganisha na uhamishaji sawa mara tu tumewasha moduli ya gzip.

Kuwasha na Kusanidi Moduli ya gzip katika Nginx

Ili kuwezesha na kusanidi moduli ya gzip, fungua /etc/nginx/nginx.conf, tafuta kizuizi kikuu cha seva kama inavyoonyeshwa kwenye picha hapa chini, na uongeze au urekebishe mistari ifuatayo (usisahau semicolon mwishoni au Nginx itarudisha ujumbe wa makosa wakati inaanza tena baadaye!)

root     	/var/www/html;
gzip on;
gzip_types text/plain image/jpeg image/png text/css text/javascript;

Maagizo ya gzip huwasha au kuzima moduli ya gzip, ilhali gzip_types hutumika kuorodhesha aina zote za MIME ambazo moduli inapaswa kushughulikia.

Ili kupata maelezo zaidi kuhusu aina za MIME na kuona aina zinazopatikana, nenda kwenye Misingi_ya_HTTP_MIME_aina.

Kujaribu Kasi ya Tovuti ya Nginx Kwa Moduli ya Mfinyazo wa Gzip

Mara tu tunapokamilisha hatua zilizo hapo juu, wacha tuwashe tena Nginx na tupakie upya ukurasa kwa kubofya Ctrl + F5 (tena, hii inafanya kazi katika Firefox, kwa hivyo ikiwa unatumia kivinjari tofauti shauriana kwanza na hati zinazolingana) kubatilisha kache na tuzingatie nyakati za uhamishaji:

# systemctl restart nginx

Kichupo cha maombi ya mtandao kinaonyesha maboresho fulani muhimu. Linganisha muda ili ujionee mwenyewe, ukikumbuka kuwa ni uhamishaji kati ya kompyuta yetu na 192.168.0.29 (uhamisho kati ya seva za Google na CDN hatuwezi kufahamu):

Kwa mfano, hebu tuzingatie mifano ifuatayo ya uhamishaji faili kabla/baada ya kuwezesha gzip. Muda hutolewa kwa milliseconds:

  1. index.html (inawakilishwa na /tecmint/ juu ya orodha): 15/4
  2. Creative.min.css: 18/8
  3. jquery.min.js: 17/7

Je, hii haikufanyi uipende Nginx hata zaidi? Kwa kadiri ninavyohusika, inafanya!

Muhtasari

Katika makala hii tumeonyesha kuwa unaweza kutumia moduli ya Nginx gzip ili kuharakisha uhamisho wa faili. Nyaraka rasmi za moduli ya gzip huorodhesha maagizo mengine ya usanidi ambayo unaweza kutaka kuyaangalia.

Zaidi ya hayo, tovuti ya Mtandao wa Wasanidi Programu wa Mozilla ina ingizo kuhusu Mtandao wa Monitor unaofafanua jinsi ya kutumia zana hii kuelewa kinachoendelea nyuma ya pazia katika ombi la mtandao.

Kama kawaida, jisikie huru kutumia fomu ya maoni hapa chini ikiwa una maswali yoyote kuhusu nakala hii. Tunatazamia kila wakati kusikia kutoka kwako!