Uzziniet, kā paātrināt vietnes, izmantojot Nginx un Gzip moduli


Pat laikā, kad visā pasaulē ir pieejams ievērojams interneta ātrums, visi centieni optimizēt vietnes ielādes laiku ir apsveicami ar atplestām rokām.

Šajā rakstā mēs apspriedīsim metodi, kā palielināt pārsūtīšanas ātrumu, samazinot failu izmērus, saspiežot. Šī pieeja dod papildu ieguvumu, jo tā samazina arī procesā izmantotā joslas platuma daudzumu un padara to lētāku vietnes īpašniekam, kurš par to maksā.

Lai sasniegtu iepriekšējā punktā noteikto mērķi, mēs šajā rakstā izmantosim Nginx un tā iebūvēto gzip moduli. Kā norādīts oficiālajā dokumentācijā, šis modulis ir filtrs, kas saspiež atbildes, izmantojot labi zināmo gzip saspiešanas metodi. Tas nodrošina, ka pārsūtīto datu lielums tiks saspiests uz pusi vai pat vairāk.

Kad esat sasniedzis šīs ziņas apakšdaļu, jums būs vēl viens iemesls apsvērt iespēju izmantot Nginx, lai apkalpotu savas vietnes un lietojumprogrammas.

Nginx tīmekļa servera instalēšana

Nginx ir pieejams visiem galvenajiem mūsdienu izplatītājiem. Lai gan šim rakstam izmantosim CentOS 7 virtuālo mašīnu (IP 192.168.0.29).

Tālāk sniegtie norādījumi darbosies ar nelielām (ja tādas ir) modifikācijām arī citos izplatījumos. Tiek pieņemts, ka jūsu VM ir jauna instalēšana; pretējā gadījumā jums būs jāpārliecinās, ka jūsu datorā nav neviena cita tīmekļa servera (piemēram, Apache).

Lai instalētu Nginx kopā ar nepieciešamajām atkarībām, izmantojiet šādu komandu:

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

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

Lai pārbaudītu, vai instalēšana ir veiksmīgi pabeigta un vai Nginx var apkalpot failus, startējiet tīmekļa serveri:

# systemctl start nginx
# systemctl enable nginx

un pēc tam atveriet tīmekļa pārlūkprogrammu un dodieties uz http://192.168.0.29 (neaizmirstiet aizstāt 192.168.0.29 ar sava servera IP adresi vai resursdatora nosaukumu). Jums vajadzētu redzēt sveicienu lapu:

Mums jāpatur prātā, ka dažus failu tipus var saspiest labāk nekā citus. Vienkārši teksta faili (piemēram, HTML, CSS un JavaScript faili) tiek saspiesti ļoti labi, bet citi (.iso faili, lietojumprogrammas un attēli, lai nosauktu dažus), nav, jo pēc būtības tie jau ir saspiesti.

Tādējādi ir sagaidāms, ka Nginx un gzip kombinācija ļaus mums palielināt pirmā pārsūtīšanas ātrumu, savukārt otrais var uzrādīt nelielu uzlabojumu vai to vispār nav.

Ir arī svarīgi paturēt prātā, ka tad, kad ir iespējots modulis gzip, HTML faili VIENMĒR tiek saspiesti, bet citi vietnēs un lietojumprogrammās parasti sastopamie failu tipi (proti, CSS un JavaScript) nav.

Nginx vietnes ātruma pārbaude BEZ gzip moduļa

Lai sāktu, lejupielādēsim pilnu Bootstrap veidni, lielisku HTML, CSS un JavaScript failu kombināciju.

Pēc saspiestā faila lejupielādes mēs to izspiest mūsu servera bloka saknes direktorijā (atcerieties, ka tas ir Apache virtuālās resursdatora deklarācijas direktīvas DocumentRoot ekvivalents):

# 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

/var/www/html/tecmint iekšpusē jābūt šādai direktorijas struktūrai:

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

Tagad dodieties uz vietni http://192.168.0.29/tecmint un pārliecinieties, vai lapa tiek ielādēta pareizi. Lielākā daļa mūsdienu pārlūkprogrammu ietver izstrādātāju rīku komplektu. Pārlūkprogrammā Firefox to var atvērt, izmantojot izvēlni Tools → Web Developer .

Mūs īpaši interesē apakšizvēlne Network , kas ļaus mums pārraudzīt visus tīkla pieprasījumus, kas notiek starp mūsu datoru un lokālo tīklu un internetu.

Īsceļš uz izvēlnes Network atvēršanu izstrādātāja rīkos ir Ctrl + Shift + Q . Nospiediet taustiņu kombināciju vai izmantojiet izvēlnes joslu, lai to atvērtu.

Tā kā mēs esam ieinteresēti pārbaudīt HTML, CSS un JavaScript failu pārsūtīšanu, noklikšķiniet uz pogām apakšā un atsvaidziniet lapu. Galvenajā ekrānā redzēsiet visu HTML, CSS un JavaScript failu pārsūtīšanas detaļas:

Pa labi no kolonnas Izmērs (kurā parādīti atsevišķu failu izmēri) redzēsiet atsevišķus pārsūtīšanas laikus. Varat arī veikt dubultklikšķi uz jebkura faila, lai cilnē Laiki skatītu sīkāku informāciju.

Pārliecinieties, ka esat pierakstījis iepriekš redzamajā attēlā redzamo laiku, lai tos varētu salīdzināt ar to pašu pārsūtīšanu, tiklīdz esam iespējojuši moduli gzip.

Gzip moduļa iespējošana un konfigurēšana Nginx

Lai iespējotu un konfigurētu gzip moduli, atveriet /etc/nginx/nginx.conf , atrodiet galveno servera bloku, kā parādīts zemāk esošajā attēlā, un pievienojiet vai modificējiet šīs rindas (neaizmirstiet semikols beigās vai Nginx atgriezīs kļūdas ziņojumu, restartējot vēlāk!)

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

Gzip direktīva ieslēdz vai izslēdz gzip moduli, turpretī gzip_types tiek izmantoti, lai uzskaitītu visus MIME veidus, kas modulim jārīkojas.

Lai uzzinātu vairāk par MIME veidiem un apskatītu pieejamos veidus, dodieties uz sadaļu Pamatinformācija par_HTTP_MIME_tipiem.

Nginx vietnes ātruma pārbaude ar Gzip saspiešanas moduli

Kad esam pabeiguši iepriekš minētās darbības, restartēsim Nginx un atkārtoti ielādēsim lapu, nospiežot Ctrl + F5 (atkal tas darbojas Firefox, tādēļ, ja izmantojat citu pārlūkprogrammu, vispirms skatiet atbilstošo dokumentāciju) ignorēt kešatmiņu un novērosim pārsūtīšanas laikus:

# systemctl restart nginx

Tīkla pieprasījumu cilnē ir redzami daži būtiski uzlabojumi. Salīdziniet laiku, lai pārliecinātos par to pats, paturot prātā, ka tie ir pārsūtījumi starp mūsu datoru un 192.168.0.29 (pārsūtīšana starp Google serveriem un CDN ir ārpus mūsu redzesloka):

Piemēram, ņemsim vērā šādus failu pārsūtīšanas piemērus pirms/pēc gzip iespējošanas. Laiki tiek doti milisekundēs:

  1. index.html (to saraksta augšpusē attēlo /tecmint/): 15/4
  2. Creative.min.css : 18/8
  3. jquery.min.js : 17/7

Vai tas jums neliek vēl vairāk mīlēt Nginx? Cik esmu noraizējies, tā arī notiek!

Kopsavilkums

Šajā rakstā mēs parādījām, ka failu pārsūtīšanas paātrināšanai varat izmantot Nginx gzip moduli. Gzip moduļa oficiālajā dokumentācijā ir uzskaitītas citas konfigurācijas direktīvas, kuras, iespējams, vēlēsities apskatīt.

Turklāt Mozilla Developer Network vietnē ir ieraksts par Network Monitor, kurā paskaidrots, kā izmantot šo rīku, lai saprastu, kas notiek tīkla pieprasījuma aizkulisēs.

Kā vienmēr, lūdzu, izmantojiet zemāk esošo komentāru veidlapu, ja jums ir kādi jautājumi par šo rakstu. Mēs vienmēr ceram uz jums atbildi!