Triukai paspartinsiantys Drupal 7.x veikimą

2017 01 10 / BenasPerskaityti užtruks: 8 mins

Vienas dažnų klausimų dirbant su dideliais karkasais - kaip padaryti, kad svetainė krautųsi greičiau. Tai labai aktualu svetainėms, kurios sukurtos naudojant Drupal karkasą. Užkrovimo greitis yra labai svarbus ne tik dėl geresnio naudotojo patyrimo, kuris lemia lankymo ilgesnį arba trumpesnį lankymosi laiką (tikslas juk - ilgesnis laikas, o kas dabar turi laiko ilgai laukti?), bet taip pat tai susiję su geresniu SEO reitingavimu ir, be abejo, tai lemia, kiek laiko bus sugaištama svetainės administravimui. 

1. Kešavimas

Tai yra didžiausias iš mažų pakeitimų. Kešavimą įjungti galima per Administration >> Configuration >> Development arba adresu http://www.[jūsų svetainė].lt/admin/config/development/performance

Visus paukščiukus, kurie matomi ekrane ir gali būti užpaukščiuoti, galima užpaukščiuoti. Kešavimo funkcija yra taikoma neprisijungusiems lankytojams, taigi galima nustatyti minimalų kešo gyvavimo ciklą į didesnį, jei svetainė nėra labai dažnai atnaujinama. Blokų kešavimas taip pat geras daiktas - tai leidžia nerperkūrinėti blokų kiekviename puslapyje iš naujo. Kadangi Drupal sistemoje blokai yra gali būti labai intensyviai naudojami (pavyzdžiui, mano kuriamose sistemose blokai vaidina labai svarbų vaidmenį), tai duomenų apie jų formatą ir veikimo funkcijas paėmimas iš laikino kešo labai pagreitina užkrovimo greitį. 

Svarbu paminėti, jog esant tokiai situacijai, kai svetainės kešo gyvavimo ciklas yra trumpas, o duomenys yra atnaujinami (pavyzdžiui, sukuriami nauji blokai, arba pakeičiami seni), neprisijungęs naudotojas kurį laiką tų atnaujinimų nematys. Paprasčiausias šios problemos sprendimas yra elementarus kešų išvalymas kiekvieną kartą, kai yra atliekami pakeitimai. Tam spaudžiamas mygtukas "Clear All Cache" pavyzdyje rodomo puslapio viršuje, arba tai padaroma per Administratoriaus meniu (gali nebūti suteiktos reikiamos teisės). 

Tame pačiame puslapyje esanti sekcija Bandwidth Optimization įtakoja jau visus - prisijungusius ir neprisijungusius - naudotojus. Pasirinkus visas tris esamas opcijas leis pagreitinti svetainės veikimą, nes bylos, iš kurių yra imamas svetainės programinis kodas yra sugrupuojamos ir sujungiamos į didesnes bylas, o taip pat yra sukompresuojamos, taigi užima mažiau vietos ir taip reikalauja mažiau kompiuterio resursų. Kompresavimas, kita vertus, nėra privalomas, nes ne visais atvejais tai padės apskritai - kai kuriais atvejais jūsų serveris, kuriame laikoma svetainė, jau ir taip kompresuos visas jame laikomas bylas ir jei tai tiesa, tokiu atveju uždėtas paukščiukas prie "Compress cached pages" gali priešingai - sulėtinti svetainės krovimosi greitį, nes vyks bandymai kompresuoti tai, kas jau yra sukompresuota. Jei nežinote, ar jūsų svetainė yra automatiškai kompresuojama serveryje, jums gali padėti šitas dalykas: GIDZip Test. Svetainėje įrašę savo svetainės adresą atlikite tokią paprastą procedūrą: Nuimkite paukščiuką prie "Compress cached pages", įrašykite pakeitimus, o tuomet patikrinkite svetainę per GIDZip Test. Jei testo rezultatai ties klausimu "Web page compressed?" - Yes, tuomet taip ir palikite paukščiuką neuždėtą. Kitu atveju, jeigu testo rezultatas neigiamas, pasirinkite kompresavimo funkciją, įrašykite ir vėl paleiskite testą - dabar testo rezultatai jau turėtų būti teigiami. 

 

2. Deaktyvuokite nereikalingus modulius

Gali būti, jog nežinote, bet tiesa ta, jog pakraunant kiekvieną Drupal puslapį, sistema turi patikrinti kiekvieną įdiegtą modulį, siekdama sužinoti, ar tas modulis ką nors tame puslapyje daro. Taigi čia labai lengva užsižaisti, turint omenyje, kokie kiekiai įvairiausių modulių yra sukurta ir žmonėms, kurie mėgsta "pažaisti", pabandyti kažką realioje veikiančioje sistemoje, o paskui taip ten ir palikti, šitas įprotis gali būti didžiulis rąstas ratuose. Jei sistemoje yra +50 aktyvių modulių, tai gali labai ženkliai pasijusti. Be abejo, kai kurie moduliai pagerina funkcionalumą ir, nors panaudojami retai, vis dėlto yra naudingi, tačiau yra labai daug modulių, kurie yra naudojami tik kūrimo metu, o tuo tarpu jau veikiančioje sistemoje yra tiesiog nebereikalingi. Reikia nepamiršti, jog didelė dalis modulių yra skirti padėti administratoriams, t.y. - jie pagerina naudotojo patyrimą, tačiau šis naudotojas nepriklauso tikslinei svetainės naudotojų auditorijai, kuriems apskritai visiškai nesvarbu, kokie administravimo įrankiai naudojami. 

Štai dalis modulių, kuriuos galima drąsiai išjungti, kai svetainė jau paleista ir naudojama (ne visi moduliai jūsų atveju gali būti sudiegti apskritai, tačiau gali):

  • Update Manager - šis modulis tikrina kiekvieno svetainėje sudiegto modulio atnaujinimus drupal.org centriniame registre, tai jis naudingas, jei svetainė yra aktyviai palaikoma ir atnaujinama. 
  • Administration Development tools - grynai administratorių įrankis
  • Devel - taip pat grynai administratorių įrankis, nenaudojamas realiose svetainėse
  • Devel node access - taip pat administratorių įrankis
  • Field UI - administratoriaus sąsaja laukų valdymui
  • Rules UI - administratoriaus sąsaja taisyklių valdymui
  • Views UI - administratoriaus sąsaja filtrų valdymui
  • Module Filter - administratoriaus sąsaja modulių valdymui

Taip pat galima išjungti ir dalį branduolio funkcionalumo, jei tos konkrečios dalys nėra naudojamos svetainėje (čia jau reikia žinoti):

  • Blog - blogo funkcionalumas
  • Forum - integruota forumų sistema
  • Taxonomy - integruota sistematikos sistema (dažniausiai naudojama sudėtingesnėse svetainėse)
  • Search - vidinė sistemos paieška (paieškos laukelis sistemoje)
  • Help - vidinis pagalbos modulis, įvairūs paaiškinimai, modulių komentarai ir pan.
  • Shortcut - trumposios nuorodos palengvinančios administratorių navigaciją
  • Dashboard - darbastalis, palengvinantis turinio administratorių darbą
  • Database Logging - duomenų bazės veiksmų registras (padeda rasti klaidas esant "avarijoms")
  • Color - spalvų derinimo modulis, skirtas primityviam svetainės vizualinės dalies tvarkymui
  • Toolbar - svetainės valdymo panelis
  • Tracker - šita funkcionalumo dalis yra ypatingai brutali svetainės krovimo greičio požiūriu, nes atlieka įrašus į duomenų bazę su kiekvieno puslapio pakrovimu
  • Statistics - vidinis statistikos modulis, dabar dažniausiai naudojami išoriniai, galingesni

 

3. Views kešavimas

Jei savo svetainėje naudojate filtrų modulį (angliškai jis vadinasi VIEWS, tačiau tai, ką jis daro, tai iš principo yra duomenų filtravimas ir pateikimas svetainėje) ir dar nesate išjungę Views UI modulio, tada aktyvuokite filtrų kešavimą. Didesnėse (su didelėmis ir nuolat pildomomis duomenų bazėmis dirbančiomis arba kitaip, paprasčiau - tokiose, kur nuolat atnaujinamas turinys: kuriamos naujienos, įvedami įvairūs registro įrašai ir t.t.) svetainėse informacijos, iš kurios reikia išfiltruoti kažkokius reikiamus duomenis, gali būti be galo daug. Taigi, bet kuriame puslapyje, kuriame yra filtro funkciją atliekantis Views modulis (pvz, filtro blokas), ta paieška milžiniškame duomenų masyve atliekama vėl ir vėl. Įjungus filtrų kešą, reikiama informacija yra ištraukiama vieną kartą ir paskui tiesiog kartojama iš kešo tol, kol baigiasi kešo gyvavimo ciklas. Tai tikrai pagreitina svetainės greitaveiką. 

Užklausos rezultatai (Query results) bei Suformuota pateiktis (Rendered output) dažniausiai eina koja kojon, taigi jiems galima nustatyti tą pačia reikšmę - tokią, kokia turėtų būti tik truputį trumpesnė už vidutinį laiką, kuomet įvyksta svetainės pasikeitimai. Paaiškinsiu. Tai reiškia, jog jeigu jūsų svetainėje yra keliamos naujienos ir tai jau darote metus, tuomet pasižiūrėkite, koks yra naujienų įkėlimo vidutinis dažnumas (pavyzdžiui 4 naujienos per dieną, t.y. - kas 6 valandas, tai uždėkite kešavimo ciklą 3-4 valandas ir, tikėtina, kad didelių vėlavimų sistemoje nepajusite).

 

4. Panels kešavimas

Labai daug Drupal svetainių naujoja Panels modulį. Kuriant lanksčius svetainės karkasus, šis modulis yra labai patogus, tačiau taip pat jis lėtina svetainės užsikrovimo greitį. Kiekvienas panelis turi savo atskirą kešą ir dėl to jūs galite sukonfigūruoti juos skirtingai, priklausomai nuo poreikių.

Panelių kešavimo įjungimas gali būti labai paprastas - tiesiog nurodykite gyvavimo ciklo trukmę (Lifetime duration). Sudėtingesniais atvejais, kuomet panelyje pateikiama informacija yra priklausoma nuo konkrečios situacijos, gali tekti pasikapstyti granuliavimo (Granularity) nustatymuose, tačiau čia jau yra toks smarkiai advanced dalykas, kur nėra reikalo dabar gilintis. 

Su Panelių moduliu (ne panelių - merginų, o panelių - skydelių, bet turbūt patys supratot) galima padaryti dar štai ką - yra toks papildomas modulis (papildomas, t.y. - lėtinantis veikimą savo buvimu!) linksmu pavadinimu "Panels. Why so slow?". Jei sudiegsite jį ir įjungsite, tai jis pradės rodyti prie kiekvieno panelio, kiek trunka jį užkrauti. Tuos, kurie tikrai labai ryja resursus ir kraunasi lėtai, modulis paraudonins ir taip iš karto kris į akis tai, ką galima būtų patobulinti, perdaryti arba apskritai - išmesti. 

 

5. Paveikslėlių optimizavimas

Dabar labai populiarūs paveikslėliai per visą ekraną bei didelės, visą ekraną apimančios jų karuselės (besikeičiantys "baneriai" pirmuosiuose puslapiuose). Šie didžiuliai paveikslėliai, be abejo, žiauriai apkrauna procesorius ir suteikia daug papildomo darbo naršyklėms. Yra keletas dalykų, kuriuos galima padaryti, kad svetainės paveikslėliai būtų sukompresuoti ir užimtų kuo mažiau tūrio. Be abejo, negalima pamiršti, kad perkompresavus paveikslėlius gali nukentėti jų išvaizda, o juk paveikslėlių tikslas pirminis aiškus - padaryti svetainę patrauklesnę, taigi reikia ieškoti balanso, čia negalima visko daryti aklai.

Naudoti PNG optimizatorių

Jei jūsų svetainėje naudojama daug PNG grafinių bylų ir tie paveikslėliai buvo kurti fotošopu (Photoshop), tuomet labai apsidžiaugsite juos perleidę per PNG optimizatorių. Jų yra daug, bet vienas populiarių ir gerų yra TinyPNG - nemokama svetainė, kurioje greitai ir patogiai galima suspausti reikiamus PNG paveikslėlius. Susitaupys (maždaug) apie 60%, be jokio vizualinio nuostolio! Tai yra daug. 

Naudoti JPG kompresorių

Su JPG bylomis yra kebliau, nes su kompresavimo nustatymais reikia "pažaisti", kol rasite optimalų santykį tarp gero bylos dydžio ir pakenčiamos kokybės. Geras nemokamas online įrankis yra CompressNow - čia siūloma kompresija valdoma stumdiklio pagalba ir tuo pačiu galima matyti, kaip atrodys sukompresuotas paveikslėlis, taigi čia reikia paeksperimentuoti su kiekvienu paveikslėliu atskirai (ir tai užtruks tikrai ilgiau, nei su PNG bylomis), tačiau tokiu būdu rezultatai gali būti stulbinančiai efektyvūs. 

Drupal paveikslėlių kompresorius (Image Compression)

Jei paveikslėliai į svetainę keliauja per ImageCache modulį (Drupal 6) arba Image Styles (Drupal 7), tuomet sistemoje galima nustatyti, kokią kompresiją naudoti visiems į sistemą įkeliamiems paveikslėliams. Šie nustatymai pasiekiami Medijos konfigūracijos nustatymuose prie Paveikslėlių įrankinės: http://www.jūsųsvetainė.lt/admin/config/media/image-toolkit. Nustatyti čia paprasta, tačiau reikia turėti omenyje, jog šis nustatymas bus taikomas visiems per modulį praeinantiems paveikslėliams, tuo tarpu jie gali būti skirtingos kokybės patys, dėl to, kai kurie jų gali atrodyti nekaip, jei nustatysite didelę kompresiją. Mažesnis procentas lems mažesnį paveikslėlių dydį, o taip pat ir žemesnę kokybę. 

 

 

Apibendrinimas

Minėti lengvi sprendimai tėra tik paviršius to, ką galima dar padaryti, tačiau dauguma atvejų būtent jų ir tereikia, nes čia kaip ir bazė, kurią turėtų užtikrinti visi puslapių administratoriai. Yra daugybė įvairiausių papildomų kešavimo ir optimizavimo modulių, pakeitimų serverių konfigūracijose ir t.t., kas taip pat gali pagreitinti svetainės veikimą, tačiau visus šiuos anksčiau išvardintus pakeitimus galės padaryti bet kas, kas turi priėjimą prie modulių diegimo ir konfigūravimo, tuo tarpu sudėtingesnius būdus palikime kitiems kartams. Apibendrinant galima pasakyti, kad visos svetainės krovimosi greičio problemos susijusios su vienu arba keliais šių punktų:

  • interneto paslaugų tiekėjo (IPT) paslaugų paketo (serverio greičio, vidinio kešavimo ir t.t. 
  • fizinio svetainės bylų dydžio (paveikslėlių, kodo bylų, audio/video bylų).
  • svetainės bylų SKAIČIAUS.
  • svetainės aktyvių modulių skaičiaus. 
  • skaičiaus išorinių skriptų, kurie yra naudojami veikiant svetainei.