Sivuston optimointi.

Aloittaja khyron, maanantai, 22.05.2017, 14:09

« edellinen - seuraava »

0 Jäsenet ja 1 Vieras katselee tätä aihetta.

khyron

Tossa kun laittelin graafeista uutta versiota testiin laitoin samalla nginx:stä välimuistin päälle, erityisesti toi graafien datan hakeminen on hidas operaatio ja kun se data ei kuitenkaan päivity niin usein (10 minuuttia lämpötila ja tunti tuulelle). Ja asiaa tutkiessa tuli eteen googlen työkalut https://developers.google.com/speed/pagespeed/. Onko kukaan muu käyttänyt tota tai jotain muuta tapaa sivuston optimointiin?

Välimuistin laittaminen muuten nosti ab:n antamien sivulatausten määrään 50 sekunnissa -> 3500 sekunnissa, ei sikäli että käyttäjiä olis lähellekään tommosia määriä, mutta eipä se haittaa jos prossutehoa jää ylimääräseksi.

weatherc

On tullut testattua tuota Pagespeediä ja heitettyä roskiin samantien, ei tuottanut muuta kun harmaita hiuksia...

Sen sijaan Nginxissä on helppoa tehdä välimuisti-asetuksia myös yksittäisille filuille, kuten esmex vaikkapa 10 minuutin välimuisti sille filulle joka tarjoaa nuo graaffien datat.

Tuossa yks versio:

   location ~ ^/(ukkostutka|sadetutka).php$ {
     proxy_pass http://xxx.xxx.xxx.xxx:8081;
     proxy_cache_valid      2m;
     include proxy.inc;
   }


Eli kopio siitä yleisestä php-asetuksesta (jos php käytössä), muokkaa sitä koskemaan vain haluttua filua + muuttaa välimuisti-aikaa.

khyron

Mun mielestä noi pagespeedin vihjeet oli ihan järkeviä. Ainoo erikoisuus oli kun se vaikutti haluavan muutamalle urille joilla oli jo cache-control max-age asetettu et se pitäs asettaa, pienen selvittelyn jälkeen ilmeni et sen mielestä kyse oli staattisista jutuista ja niillä pitäs olla pitempi aika.

Päädyin toteuttamaan kakutuksen niin että back-endissä asetetaan cache-control max age ja nginx sit kakuttaa sen mukaan. Esim. toi mistä noi graafit tulee on yks uri ja parametrilla valitaan mitä dataa tulee, ni kätevämpää et siellä samalla lasketaan kauanko data on validia.

weatherc

Onhan osa sen vihjeistä ihan valiideja mutta just tuo että se rupee "päättämään" että mikä on staattista ja mikä ei niin tympis siinä. Siihen soppaan kun lisää sen että meidän sivujen tarpeet ovat tavallaan erikoiset koska data päivittyy tiheään muttei kuitenkaan haluta että tietokantoja hakattais alvariinsa johti siihen että heitin sen roskiin. Manuaalisesti Ngixillä saa paljon paremmin säädettyä niitä sivun/skriptin mukaan.

Mulla on dedillä käytössä yleinen 20 sekunnin kakutus kaikille php-sivuille joka estää sen että samaa sivua samoilla parameterillä generoitais jatkuvasti. Liskäsi oon sitten tarpeen mukaan asettanut pidempiä kakutuksia joillekin sivuille/skripteille. Nginxin kakutushan ottaa huomioon myös nuo parametrit kunhan tuo dollarimerkki on tuossa .php:n jälkeen:
location ~ ^/(ukkostutka|sadetutka).php$ {

Staattisille filuille kuten css/js-filuille ja kuville jotka eivät kuitenkaan muutu oon sitten asettanut max expires-ajat joka ainakin pitäisi rajoittaa sitä kuinka usein selaimet hakevat niitä serveriltä. Tietenkin päivittyville kuville kuten kamerat/kartat on omat poikkeukset. Yks näppärä asetus tähän on
expires       modified +4m;
Tuossa se asettaa expires-ajan 4 minuuttiin modified-ajan jälkeen.

khyron

Enny tiä onko se niin erikoista et halutaan kakuttaa sivuja vähintään sen aikaa et tulee uutta dataa. Sehän on just se idea siinä. Eikä ne tyypilliset sääteidtä kyl kovin nopeesti päivity, tai siis ole tarpeellista päivittää. Salamaniskut ehkä nopeimpia, mut sekin tietty mielipidekysymys kuinka nopeesti ne pitäs näkyy kartalla:)

Niin ja puhuin siis enemmänkin niistä vihjeistä mitä toi pagespeed antaa, siinä tais tosiaan olla joku automaagikikkulakin.

weatherc

Pagespeedistä sanoisin että kokeilee noita pagespeed-testejä ja katsoo mitä ne ehdottaa ja niistä nappaa ne vihjeet jotka sopii omalle sivustolle koska niissä on paljon hyvääkin asiaa kuten esim että jotain css/js-filua joka ei päivity ei tarvi koko ajan olla hakemassa serveriltä kun sen voi hyvin kankuttaa selaimeenkin.
Siihen sopii esmex tällainen pätkä Nginxiin:

# JS & CSS
location ~* \.(ico|js|css|swf)$ {
  expires       max;
  add_header Pragma public;
  add_header    Cache-Control  "public, must-revalidate, proxy-revalidate";
  log_not_found off;
}


Se mitä tuo Pagespeed yrittää tehdä on esmex että se yhdistää css/js-filuja ja mikään ei takaa että se yhdistäis ne oikeassa järjestyksessä (joskushan ne pitää ladata oikeassa järjestyksessä että sivu toimis) plus että jättikokoinen filu sattaa itse asiassa hidastaa sivun latautumista verrattuna siihen että on useampi filu (testattu on). Unohtamatta että myös se jatkuva yhisteleminen PS:än toimesta syö myös serveritehoja.