Viime aikoina on sanottu paljon staattisten kohteiden ansioista . Monissa tilanteissa kuitenkin tarvitaan dynaaminen lähestymistapa. Sisällönhallintajärjestelmän, asiakassuhdetyökalun tai verkkokaupan ansiosta loppukäyttäjät voivat ylläpitää monimutkaisia ​​sivustoja nopeasti ja johdonmukaisesti. Ja kun ne kootaan kunnolla, ne voivat kilpailee staattisia paikkoja nopeutta.

kaikki sovellukset, jotka tarvitsevat usein luku- ja kirjoitustietoja, aiheuttavat huomattavan viivästymisen

Mitä tahansa järjestelmääsi käytät, dynaamisissa kohteissa on tyypillisesti samanlaisia ​​elementtejä. Nämä ovat web-palvelimen, taustaohjelman ja sovelluksen muotoja, jotka on kirjoitettu yhdelle tai useammalle ohjelmointikielelle. Tämä komponenttien yhdistelmä antaa paljon joustavuutta, mutta jokainen edesauttaa omaa yläpuolta ja lisää latausaikaa, mitä kaikki nykyaikaiset verkkosivustot haluavat välttää. Tämä pätee erityisesti tietokantaan, minkä tahansa sovelluksen, joka tarvitsee usein luku- ja kirjoitustietoja, aiheuttaa huomattavan viivästymisen.

Siinä tapauksessa kätilöinti ja asianmukainen kätilöstestrategia auttavat sinua. Säilytyksen keskeinen tavoite on estää tarpeettoman usein puhelut sovellustietokantakerrosten välillä ja käyttää sen sijaan ennalta luotuja staattisia HTML-sivuja, jotka ovat paljon nopeampia selaimessa.

Selaimen välimuisti

Ensimmäinen välimuisti, jonka jokainen web-käyttäjä olisi huomannut, on välimuisti selaimessa. Kuinka monta kertaa kehittäjät ovat pyytäneet sinua tekemään "voima-päivityksen" nähdäksesi muutokset? Selaushakut ovat yksinkertaisia, mutta hyvä lähtökohta selvittääksesi välimuistikonsepteja. Selain tallentaa käyttäjän tietokoneessa vieraillut verkkosivut, joita päivitetään yleensä kerran istunnossa, jos sivuston muutokset havaitaan tai pakotetaan.

Proxy-välimuisti

Sivuston omistajien ja ylläpitäjien yhteinen työkalu on "käänteinen proxy-välimuisti", joka sijaitsee verkkoselaimen ja verkkosovelluksen tekemien sivupyyntöjen välillä. Se sieppaa pyyntöjä ja tekee sivujen kopiot suoraan välimuistista, mikä antaa huomattavan nopeusvahvistuksen.

On olemassa useita suuria proxy-välimuistivaihtoehtoja, jotka ovat käytettävissä itse asentamisessa tai "Software as a Service" -palveluna. (Emme huomioi pilvipalveluiden tarjoajia, jotka tyypillisesti pakkaavat kaiken tarvitsemansa tarvitsevansa itsenäiseen verkkopinoon.)

Suositut välityspalvelimen välimuistitoiminnot ovat:

  • Lakka (Katso alempaa);
  • Kalmari ;
  • nginx (yhdistetty verkkopalvelin ja proxy-välimuisti).

SaaS-välimuistiinpanovalinnat ovat yleensä sisällön toimitusverkkojen (CDN-verkko) maailmaa, jotka käyttävät käyttäjää ja verkkopinoa välimuistin sijasta käyttäjää, jotka ovat maantieteellisesti lähimpänä niitä. Se on hienovarainen ero, mutta se, joka suurille sivustoille, joilla on maailmanlaajuinen yleisö, voi tehdä merkittävän eron.

Käytä lakkaa

Lakka on saatavilla kaikissa Linux-paketinhallinnoissa, Docker-kuvana ja monissa muissa vaihtoehdoissa, lue projektin asennussivulle Lisätietoja.

Basic-lakan kokoonpano

Lakka tallentaa oletusasetustiedoston osoitteessa /usr/local/etc/varnish/default.vcl tai /etc/varnish/default.vcl , kirjoitettu VCL (Lakkausasetuskieli). Tämä kokoonpanotiedosto kootaan pieneksi ohjelmaksi C-tulkin kautta nopeuden lisäämiseksi entisestään.

Laitteen asennuksen mukaan konfiguraatiotiedosto näyttää tältä:

backend default {.host = "127.0.0.1";.port = "8000";}

Yksinkertaisimmillaan tämä määrittelee Varnishin käyttämää oletusosaa, joka määrittelee isännän ja portin, jonka pitäisi kuunnella ja kuunnella sisältöä.

Backend-kysely

Varnishin kätevä ominaisuus tarkistaa ennalta määrätyin väliajoin, jos tausta on vielä terveellinen. Se on nimeltään "Backend Polling" ja se määritetään lisäämällä koetinkomentosarja backend-ilmoitukseen:

.probe = {.url = '/';.timeout = 34ms;.interval = 1s;.window = 10;.threshold = 8;}

Yllä olevat ovat Varnishin oletusasetukset ja kerro sille, että vierailevat tiettyyn .url: iin jokaisella aikavälillä ja että jos ainakin .window- koettimien kynnysarvo , url reagoi .timeout millisekunteina, tausta on edelleen terveellinen. Kun "epäterveellistä" pidetään, sisältöä palvelee välimuistista ennalta määrätyn ajan.

Aloituslakka

Kattavat muutokset Lakka-kokoonpanoon jokaisen alustan asetuksessa, nyt tarkastelemme yleisiä vaihtoehtoja.

satamat

Aluksi verkkopalvelimesi portti tarvitsee vaihtaa oletusarvoisesti. Esimerkiksi Apache Vhost -määrityksessä vaihda portti 81 tai 8080: een.

Aloita lakkausdemoni lakkakomennolla tai palvelukääreen avulla. Demoonissa on lipun vaihtoehdot, yleisimpiä ja hyödyllisiä olentoja:

  • -f: Asettaa määritystiedoston polun.
  • -s: Välimuistiasetukset. Tämän asetusten määrittäminen RAM-muistille antaa entistä suurempia nopeuskorotuksia.

Kaikkien tarkistaminen toimii

Suorita varnishstat- komento tai käy isvarnishworking.com tarkistaa, että Varnish-palvelin on valmis ja kuuntelee pyyntöjä.

Mitä ei välimuistia

Sivustolla on joitain osia, joita emme halua välimuistia, esimerkiksi hallinnointisivut. Voimme jättää ne pois luomalla vcl_recv- aliohjelman default.vcl- tiedostossa, joka sisältää if- lauseen, joka määrittää, mitä ei välimuistia:

sub vcl_recv {# URI of admin folderif (req.url ~ "^/url/"){return (pass);}return(lookup);}

Jos käytät lakkaa 4, asiat ovat hieman erilaiset, mukaan lukien palautusarvot. Vcl_recv- funktio palauttaa nyt ahash- arvon etsinnän sijaan.

sub vcl_recv {...return(hash);}

Tämä on myös silloin, kun asetamme sivustoja tai aliverkkotunnuksia, jotka lakkautetaan , lisäämällä req.http.host ~ 'example.com' if- lauseen.

Keksit

Oletusarvoisesti lakka ei välitä evästeiden asettamista sisällön välimuistista. Vastaavasti, jos asiakas lähettää evästeen, se ohittaa Lakka suoraan taustapuolelle.

Sivustot käyttävät usein evästeitä käyttäjien toiminnan seurantaan ja käyttäjäkohtaisten arvojen tallentamiseen. Yleensä nämä evästeet ovat vain kiinnostavia asiakaspuolen koodeille, eivätkä ne ole sidoksissa taustaan ​​tai lakkaamiseen. Voimme kertoa Lakalle, että sivuutat evästeet paitsi tietyillä sivuston alueilla:

if ( !( req.url ~ ^/admin/) ) {unset req.http.Cookie;}

Tämä if -lausunto jättää evästeet huomiotta, ellet ole sivuston hallinta-alueella, jossa evästeen kulkeutuminen saattaa olla enemmän käyttökelpoista (paitsi jos todella haluat turvautua sivuston ylläpitäjiin).

Muut poikkeukset

Oletusasetuksella Varnish ei myöskään välimuistita salasanasuojattuja sivuja, GET- ja HEAD-pyyntöjä.

Käytetään lakkaa

Tarkastelemme nyt kaksi täydellistä käyttötapaa Varnish: Drupal ja Magento. Molemmat ovat erittäin dynaamisia järjestelmiä, joiden avulla ei-tekniset käyttäjät voivat tehdä monenlaisia ​​monimutkaisia ​​tehtäviä. Tämä voi johtaa tietokannan kyselyihin - raskas sivukuormat ja kiireiset sivustot tulevat huomattavasti hitaiksi. Tyypilliset sivut, jotka on rakennettu näillä järjestelmillä, sisältävät sisällön sisällön, jota päivitetään harvoin ja usein.

Drupal

Drupalilla on oletusvälimuistitoiminnot, jotka suorittavat samankaltaisia ​​toimintoja Varnishilla, mutta eivät tarjoa suuremman tai monimutkaisempien sivustojen edellyttämää joustavuutta tai nopeuskorotusta.

Todellisuudessa Drupal tavalla on a moduuli käsittely lakka integraatio tallentaa joitakin yllä kuvatuista käsikokoonpanoista.

Asenna moduuli ja varmista, että noudatat moduulin Read Me -tiedostoon sisältyviä asennusohjeita.

Varmista, että / etc / default / varnish- tiedostossa on seuraavat démonvaihtoehdot (ja sisennys on tärkeä):

DAEMON_OPTS="-a :80 -T localhost:6082 -f /etc/varnish/default.vcl -S /etc/varnish/secret -s file,/var/lib/varnish/$INSTANCE/varnish_storage.bin,128M"

Varmista, että Apache ja siihen liittyvät virtuaaliset isännät kuuntelevat portissa 8080, ei 80. Käynnistä molemmat palvelut uudelleen näiden muutosten tekemisen jälkeen.

Sinun on ehkä asetettava 'Lakka ohjausnäppäin' moduuliasetussivulle. Selvitä, mikä avain on kissa / etc / varnish / secret -komennolla ja liitä se asetussivulle. Valitse oikea Lakka-versio, tallenna asetukset ja sinun pitäisi nähdä sarja vihreitä punkkeja sivun alareunassa.

Lakka -moduuli toimii vuorovaikutuksessa Drupal-välimuistin oletusasetusten kanssa, joten varmista, että se on käytössä ja konfiguroitu käyttökohtaasi varten.

Suorita varnishstat komentoriviltä, ​​aloita navigointi sivustosta nimettömänä käyttäjänä ja sinun pitäisi nähdä tilastot muuttuvat komentotulosteessa.

Yksi poluista, joita emme halua välimuistista Drupalissa, ovat admin sivut, voimme tehdä tämän vcl_recv - alirutiinilla :

sub vcl_recv {# URI of admin folderif (req.url ~ "^/admin/"){return (pass);}unset req.http.Cookie;return(lookup);}

Haluat ehkä harkita ei-välimuistin (sisäänkirjautumista) käyttäviä sivuja, järjestelmän päivitys sivuja ja muita sivuja, jotka ovat erittäin dynaamisten moduulien, kuten lippujen, jotka käyttävät laajasti ajaxin toimintaa. Tee tämä lisäämällä lisää req.url- parametreja if- lausekkeeseen.

Magento

Magento-laitteiden oletusasennus asennetaan sisäiseen välimuistiin, joka tallentaa tietyn kansion staattiset versiot sivuston elementeistä. Järjestelmä -> Välimuistin hallinta -sivu antaa yleiskuvan nykyisestä välimuistitilasta sekä antaa sinulle mahdollisuuden tyhjentää kaikki tai yksittäiset komponenttien välimuistit. Voit tyhjentää aggregoituneet CSS- ja JS-tiedostot ja automaattisesti generoidut kuvatiedostot tältä sivulta.

Tuleva versio Magento tukee oletuksena Varnish-välimuistia, mutta nyt tarvitsemme kolmannen osapuolen laajennuksia, suosittelen Terpentin moduuli . Varmista, että luet projektin readme-tiedosto koska se huomauttaa joitain ylimääräisiä kokoonpanovaiheita, mutta sivuuttaminen saattaa rikkoa sivustosi.

Tärpätti-moduuli on erittäin konfiguroitavissa ja tekee tarvittavat muutokset vcl- tiedostoille ja Varnish configille sinulle. Joitakin asetettavia asetuksia ovat:

  • Backend Host : Varnish-isäntä oletuksena 127.0.0.1
  • Taustaportti : Sataman lakkaus on käynnissä, oletusarvo on 80
  • URL Blacklist : Luettelo URL-osoitteista, joita ei koskaan välimuistissa suhteessa Magento-juurelle. Admin- ja API-URL-osoitteet sisältyvät automaattisesti.

Tärpätin-moduuli liittyy Magento-välimuistiin, joten tyhjennysvälimuisti sivun tyhjentäminen tyhjentää asiaankuuluvat Lakka-välimuistit.

Yleiset vinkit

Sen lisäksi, että käytät lakkaa millä tahansa yllä olevista dynaamisista järjestelmistä, tässä on muutamia muita erilaisia ​​vinkkejä, jotka auttavat minkä tahansa sivuston välimuistitoimintoa.

Yhdenmukaiset URL-osoitteet

Jos käytät samaa sisältöä eri konteksteissa, sen on käytettävä samaa URL-osoitetta. Esimerkiksi älä sekoita artikkelin.html , article.htm ja artikkelin käyttöä , vaikka CMS voi sallia sen. Tämä johtaa samaan sisältöön kolmea eri välimuistissa olevaa versiota.

Käytä evästeitä säästeliäästi

Kuten edellä näimme, evästeitä on vaikea välimuistia ja ne ovat harvoin tarpeellisia, kuten ajattelemme. Yritä rajoittaa niiden käyttöä ja numeroa dynaamisille sivuille.

Tiedoston käsittely

Ladattavien kohteiden lataaminen voi olla yksi sivumoottorien eniten aikaa vievistä osista ja siinä on yksinkertaisia ​​vinkkejä tämän taakan vähentämiseksi:

CSS Image sprites -sovellusten käyttäminen ikonografialle useiden pienien tiedostojen sijaan johtaa vähemmän verkkoliikenteeseen.

Hosting CSS- ja JavaScript-kirjastot paikallisesti merkitsevät vähemmän verkkoliikennettä ja hallitsevat enemmän välimuististrategioita. Tämä voi merkitä ylläpitokustannusten nousua näiden varojen pitämiseksi ajan tasalla. Säilytä nämä varat jatkuvasti nimettyinä kansioina, joten viittaukset niihin voivat olla myös johdonmukaisia.

Nopea eteenpäin

Toivon, että dynaamisten sivustojen nopeuttaminen välimuistiin tallentamisen johdosta oli hyödyllistä. Suorituskykyhyöty on arvokasta kokoonpanoa, kokeilua ja säätämistä. Tässä aikakaudella, jossa on lyhytaikaista huomiota ja kärsimättömyyttä, mahdollinen nopeus voitto, joka voit purkaa pois asetuksistasi, tekee eron käyttäjille ja kilpailulle.

Esittelykuva, verkon välimuistikuva kautta Shutterstock.