sl.mpmn-digital.com
Novi recepti

Ta strežnik Qdoba je nadvse primeren za pomoč invalidnim strankam

Ta strežnik Qdoba je nadvse primeren za pomoč invalidnim strankam



We are searching data for your request:

Forums and discussions:
Manuals and reference books:
Data from registers:
Wait the end of the search in all databases.
Upon completion, a link will appear to access the found materials.


Prijaznost med delavcem Qdobe in rednim odjemalcem s posebnimi potrebami je bila ujeta s kamero v Kentuckyju

Med vojnami, lakoto, rasno obremenjenimi protesti in iztirjenimi vlaki je včasih treba le obnoviti vero v človeštvo.

Dejanje prijaznosti, ujeto s kamero v Kentuckyju Qdoba dobi naslovnice. Zlasti se je spoprijateljil z eno žensko, ki imenuje Qdoba za svoje najljubše jedišče in vedno naroči isto: solato taco z vročo omako in sirom za kosilo ter burrito z vročo omako in sirom za večerjo.

Potem ko je stranki, ki je na mobilnem stolu, pomagala pri vrsti in ji prinesla prtičke, jo je Quarles vprašal, ali potrebuje še kaj drugega. Rekla je: "Pravzaprav, gospod, če nimate nič proti, mi lahko pomagate jesti?" Quarles ni okleval. Druga stranka je ujela sladko izmenjavo s kamero, ko je Quarles potrpežljivo pomagal svoji stranki nahraniti njen burrito.

"Mislim, potrebuje pomoč, in če jaz tega ne bi storil, nihče ni bil," Quarles je povedal lokalnemu sindikatu Fox. "Kdo drug bo to storil?"

Video je od takrat postal viralen. David Jones, kupec Qdobe, ki je zapisal izmenjavo, je imel o tem nekaj misli:

"Ni nehal razmišljati:" No, ali naj ji pomagam, kajne? " Samo prišel je, si oblekel rokavice in jo začel hraniti, "Jones povedal lokalnemu sindikatu NBC. "Zdi se mi, da če bi vsi na svetu uporabili to preprosto darilo, ki ga imajo, da bi morda koristili komu drugemu, pomislite, kakšen bi bil svet."


Ta strežnik Qdoba je nadvse pomemben in pomaga invalidnim strankam - recepti

Ker se prvič prijavljate, prosimo, da svoj račun preverite. S katerim telefonom bi radi potrdili?

Kako želite prejeti potrditveno kodo?

Tukaj vnesite svojo varnostno kodo:

Prihranite 25% na vseh izdelkih doTERRAz današnjim članstvom.

Postani član

  • 25% popust na izdelek
  • Zaslužite točke in brezplačen izdelek
  • Pridobite mesečno pošiljko svojih najljubših izdelkov
  • Prejmite začetni komplet (vrednost 35 USD!)

Gost

Navdušite se. naslednjič, ko se prijavite, bo z našo novo nadgrajeno izkušnjo prijave prek vašega e -poštnega naslova! Za spodnji posnetek si oglejte spodnji posnetek zaslona.


Vsako soboto »Dale in Ma«, kot ju pokliče natakar Joe Thomas, pride v Springfield, Illinois, IHOP, kjer dela. Ko je mož svoji ženi pomagal pri pripravi, se je njegov zajtrk ohladil - dokler Thomas ni priskočil na pomoč in rekel: "To imam."

To je bilo pred petimi leti in Thomas, ki je že skoraj 12 let v IHOP -u, od takrat pomaga paru. Izkazalo se je, da ženska trpi za Huntingtonovo boleznijo, razmeroma redko dedno motnjo, ki prizadene živčne celice v možganih, kar vpliva na gibanje in kognicijo. Sposobna je jesti recimo grozdje ali rezine jabolk, vendar se bori s priborom.

44 -letni Thomas je pred kratkim vzel nekaj minut časa za zajtrk in se pogovarjal z TODAY Food: "Vedno sem pomagal ljudem, ne glede na to, kdo je," pravi.

Sočutje je v njegovi naravi: prej je Thomas delal kot rehabilitacijski tehnik in je posameznikom s kognitivnimi in razvojnimi težavami pomagal pri prehodu v samostojno življenje. Skrbel je tudi za svojo mamo, ki je trpela za sladkorno boleznijo, dokler ni umrla pred skoraj 10 leti.

Vsakdo, ki je kdaj skrbel za drugo osebo, ki potrebuje dodatno pomoč, ve, kako težka so lahko najmanjša vsakodnevna opravila, zato je verjetno internet skupaj potočil solzo, potem ko je ta teden Thomasova fotografija postala viralna.

Druga stranka, Keshia Dotson, je fotografirala, potem ko je pred kratkim opazila Thomasovo prijazno dejanje.

Storitve drugih miz niso vplivale, medtem ko je Thomas pomagal starejši stranki. "Komentirala je celo, kako sladko se ji je zdelo."

Ker podjetja slišijo le, ko gre kaj narobe, je Dotson dejala, da želi izpostaviti nekaj dobrega. "Moj motiv pri objavi fotografije je bil poskusiti pomagati prepoznati natakarja v njegovem podjetju," je dejala, "ponavadi poskušam priti, ko doživim ali opazim dobro storitev za stranke."

Dotson v svojem življenju deluje kot koordinator programov za odrasle in ozaveščevalna oseba za knjižnico Rochester v Rochesterju v Illinoisu, kjer si po njenih besedah ​​osebje prizadeva dobro vplivati ​​na lokalno skupnost.

"Enako poskušamo narediti tudi v svojem osebnem življenju, kar me je deloma spodbudilo k fotografiranju."

Tiskovna predstavnica IHOP -a, Stephanie Peterson, je za TODAY Food povedala, da sta se podjetje in lokalni dajalec franšize Larry McDonald "dotaknila Thomasovega prijaznega dejanja" in dodala: "Od vsega, kar smo slišali o Joeju, je v njegovi naravi, da gre za njegove goste in ta gesta preprosto odraža, kdo je. Kot blagovna znamka smo neverjetno ponosni na takšne srčne trenutke, ki se v naših restavracijah dogajajo vsak dan. "

Kar zadeva Thomasa, so ga celo obiskali glede prihodnosti v zdravstveni negi, odkar je fotografija postala viralna. Še vedno ni povsem prepričan, kaj bo njegov naslednji korak, čeprav pravi, da bi se nekega dne rad vrnil na delo rehabilitacijskega tehnika.

Vmes namerava še naprej pomagati Daleu in Maju in vesel je, da je tako dobro spoznal redne goste. "Oh ja, gremo daleč nazaj," je rekel. "Lep par sta. Lepi ljudje."


Ta strežnik Qdoba je nadvse pomemben, da pomaga invalidu - recepti

Grof Aleksander
Homewood Suites Keystone na križanju

Matt Anderson
Otroški muzej v Indianapolisu

Ryann Ayers
Francosko letovišče Lick & amp casino

Carlos Bartlett
St. Elmo Steak House

Joe Billerman
Indianapolis Public Transportation Corporation

Hector Bolanos
Velika rešetka

Arturo Boyzo
Restavracija Ram & amp pivovarna

Emily Bristol
Restavracija Rock Bottom & amp pivovarna

Nina Britton
Westin Indianapolis

Delbert Brooks
Embassy Suites Downtown

Nancy Brunner
Crowne Plaza na postaji Historic Union

Broch Buchanan
Premešajte Crazy Greenwood

Chris Burgdoefer
Izposoja in uprizoritev Markey & rsquos

Michael Burns
Zrezek Shula & rsquos

Bobby Cassingham
Hilton Indianapolis

Laurie Christie
Živalski vrt Indianapolis

Alvin Clark
Restavracije Levy/Conseco Fieldhouse

Roderick Coleman
Indianapolis Marriott North

Cornelius Cooper
Restavracije Levy/Conseco Fieldhouse

Floren Dedeaux
Klub Skyline

Gene Dotts
Klub Columbia

Kenny Duff
Indianapolis Marriott North

Susana Galarza
Holiday Inn Express Hotel & amp; Suites City Center

Jeffrey Dugger
Bynum & rsquos Steakhouse

Debbie Flemming
Embassy Suites North

Faustino Flores
Courtyard by Marriott Northwest

Janezov ulomek
Indianapolis Marriott Downtown

Clifford Fraser
Hoosier Park Racing & amp casino

Zeke Garcia
Velika rešetka

Kevin Gearhart
Indiana v živo! Igralnica

Melissa Genrich
Sheraton Indianapolis City Center

Evan Gibbons
Indiana Sports Corporation

Ramon Gonzalez
Mortonov Steakhouse Indianapolis

Joe Graham
Bynumov Steakhouse

Sara Grimes
Francosko letovišče Lick & amp casino

Fred Griswold
Scotty's Brewhouse

Sean Hankerson
14 West Restaurant & amp Suites

West Hardy
Indianapolis Public Transportation Corporation

Rosa Hernandez
Residence Inn Northwest

Jerri Herr
Hampton Inn & amp Suites

Melissa Highbaugh
Holiday Inn Express South

Jeff Hilbert
Sistem Free Enterprise System, Inc.

Eric Hinkle
Eiteljorg muzej ameriških Indijancev in zahodne umetnosti

Sandie Horner
Interaktivni zgodovinski park Conner Prairie

Kat Houston
Rajska pekarna in kavarna

Linda Huotilainen
Otroški muzej Indianapolisa

Emma Johnson
Steak N Shake

Louis Kattie
Enterprise Rent A Car

Pamela Kennson
Muzej umetnosti Indianapolis

Amanda Kirby
Hoosier Park Racing & amp casino

Jake Klinger
Conrad Indianapolis

Carol Knight
Hilton Garden Inn

Kevin Kosanke
Conrad Indianapolis

Andrew Lannerd
Simfonični orkester Indianapolis

Alice Laskowski
Pacers Sports & amp Entertainment

Joe Liddy
Carey limuzine iz Indiane

Andrew Meyers
Scotty's Brewhouse

Carissa Miller
Francosko letovišče Lick & amp casino

Kim Mills
Hyatt Regency Indianapolis

Monica Miranda
Hotel Omni Severin

Scott Moore
Mo's. Mesto za zrezke

Wilma Moore
Zgodovinsko društvo Indiana

Deb Novo
Drum Corp International

Jim Nutt
Poudarek na Indianapolisu

Herschel Parr
Letališče Crowne Plaza Indianapolis

Rachel Radez
Holiday Inn Express Northwest Indianapolis

Irma Rodarte
Hotel Omni Severin

Russell Roth
Hilton Indianapolis

Dave & quot; Rudy & quot; Ruschhaupt
Sistem Free Enterprise System, Inc.

Clara Sanchez
Hampton Inn Downtown

Natalie Scheiter
Indianapolis Marriott East

Rennie Schervish
Towne Park

Heidi Spencer
Steak N Shake

Garth Stapleton
Indy Hostel

Amy Stewart
Harry & amp; Izzy's

Megan Stuerenberg
Apartmaji Cambria

Brad Takamura
Noro premešajte - Castleton

Kenneth Taylor
Cracker sod

Jessica Taylor
Pivovarna Alcatraz

Ahmed Touil
National Car Rental & amp Alamo Rent a Car

Christina Tsui
Ruth's Chris Steak House

Milo Vanek
Indiana Sports Corporation

Betty Jo Vanek
Indiana Sports Corporation

Pansey Weaver
Indiana v živo! Igralnica

Jill Whelan
Interaktivni zgodovinski park Conner Prairie

Frank Wilson
Segway of Indiana, LLC

Jason Woolridge
Renaissance Indianapolis North Hotel

Dawn Young
Storitve elektronskega spremljanja

Alvin & quotBlue & quot Clark & mdash Svinjski kuhar
Restavracije Levy/Conseco Fieldhouse

Prejemnik ROSE Alvin & quotBlue & quot Clark bi se lahko uvrstil med enega najslajših fantov, ki jih poznate. To & rsquos, ker so njegova posebnost sladice. In čeprav ni neposredno na prvi liniji storitev, ni dvoma, da so njegove kulinarične kreacije skozi leta nasmejale obraze tisočev obiskovalcev in prebivalcev. Ker - upoštevajte to - to je njegovo 53. leto v gostinstvu. To je bilo pravo potovanje. Clark je pecivo začel izdelovati pri 17 letih, a zaradi pomanjkanja formalne izobrazbe ni mogel brati, zaradi česar si je zapomnil več kot 600 receptov. Pri 35 letih sta mu žena in pet otrok pomagala pri branju. Njegova kariera ga je na koncu pripeljala do restavracij Levy v Conseco Fieldhouse, kjer je bil zadnjih pet let vodilni slaščičar, pri čemer je vse svoje sladice delal iz nič. Clark zdaj služi kot mentor mlajšemu osebju in jim vliva strast do svoje obrti, ponos ustvarjanja in zadovoljstvo strank. Leta 1976 je bil Clark certificiran kot prvi afriško-ameriški kuhar v ZDA. Ameriška kulinarična zveza ga je razglasila tudi za kuharja leta.
& lt nazaj na vrh & gt

Jeff Hilbert in Dave & quot; Rudy & quot; Ruschhaupt & mdash Glavni trenerji
Motorno avtobusno podjetje sistema Free Enterprise System

(Na sliki levo je Tonia Taylor-Hilbert, žena Jeffa Hilberta, z Rudyjem Ruschhauptom.) Prejemnika nagrade ROSE Jeff Hilbert in Dave & Rudy & quot; Rusy & quot; Ruschhaupt imata isti naslov: Glavni trenerji. Mojstri, res. Dinamični dvojec zasluži pohvale vseh, s katerimi pride v stik. Izrazi in stavki, kot so & quotprofessional, & quot & quotfriendly, & quot & quotcourteous, & quota joy, & quot & quotout the top in customer service & quot, & quotalways presegajo pričakovanja, & quot; in predvsem & quotafe & quot - so med množico pozitivnih komentarjev, ki so jih prejeli služiti. Ne glede na to, ali gre za atletske ekipe, šolske izlete, mladinske skupine, izlete, dnevne čarterje ali daljša potovanja na oddaljene lokacije, Ruschhaupt in Hilbert vedno znova presegata vrhunske storitve. Izkazali so se kot veliko več kot vozniki, vendar vodniki, spremljevalci, svetovalci, komunikatorji, zaščitniki, upravljavci prtljage in reševalci težav. Njihova predlagateljica, direktorica prodaje Charter Kathey Morgan, pravi: "Naš cilj je navdušiti stranke in ti fantje počnejo prav to. Wow! & Quot; Hilbert je za Free Enterprise že več kot devet let, medtem ko je Rudy z Free Enterprise že več kot 12 let.
& lt nazaj na vrh & gt

Charles & quotEric & quot Hinkle & mdash koordinator izobraževalnih storitev
Eiteljorg muzej ameriških Indijancev in zahodne umetnosti

Muzeji so lahko statično mesto. Se pravi, dokler se vrata ne odprejo.
Potem lahko zavlada kaos. Toda na Eiteljorgu je prejemnik nagrade ROSE Eric Hinkle obtožen, da je blaznosti prinesel norost, njegov uspeh pri tem pa si je prislužil zgledne pohvale obiskovalcev, prostovoljcev in sodelavcev. Hinkle nadzira več kot 70 muzejskih vodnikov. Ujema vodnike po skupinah. Načrtuje, načrtuje in potrjuje na stotine potovanj za tisoče obiskovalcev, od vrtca do študentov do odraslih. Usklajuje urnike obiskov umetnikov, da se lahko uredijo ozaveščeni izleti v šole in skupnosti. On & rsquos na prvi liniji klicev in posredovanja informacij. In vse to počne z nasmehom. Njegova predlagateljica, direktorica izobraževanja Cathy Burton, pravi, da vse počne z dobrim humorjem, kar je značilnost, ki jo je ena oseba, s katero sem govoril, omenjala pred vsem drugim. Se nasmehne sam pri sebi. Navdušen je nad predložitvijo dobro zastavljenega načrta za obiske skupin. In če bi se ta načrt razveljavil, vedno najde način, kako pripraviti boljši načrt. & Rdquo Hinkle je rutinsko pohvaljen zaradi takojšnje pozornosti na zahteve in temeljitega spremljanja in nadaljnjega izvajanja. Ne glede na to, ali gre za vozovnico za avtobus, informacije o kosilu za šolsko skupino ali programsko gradivo, je Hinkle pripravljen odgovoriti na vse potrebe. Še bolje, je veleposlanik za Indianapolis na splošno in zlasti za druge mestne znamenitosti. Medtem ko je Hinkle zadnjih pet let delal za Eiteljorg, ima 20 let v gostinstvu, tako da je za vse življenje prejel nagrado ROSE.
& lt nazaj na vrh & gt

Louis Kattie & mdash Pomočnik upravitelja
Enterprise Rent A Car, mednarodno letališče Indianapolis

Ena zgodba pove vse o dostojnosti prejemnika nagrade ROSE Louis Kattie. To & rsquos, ker je & rsquos precej zgodba o izjemnih storitvah za stranke. Decembra lani je stranka prišla na Enterprise Rent A Car na mednarodnem letališču Indianapolis. Prišel je na obisk k svojemu mlademu sinu. Ker je invalid, je kupec zahteval avtomobil z ročnim upravljanjem pospeševanja in zaviranja. Na žalost zaradi zmede rezervacij ob prihodu stranke tak avto ni bil na voljo. In ker je bila sobota zvečer, so mu povedali, da nobena ne bo na voljo vsaj do ponedeljka. Razumljivo je, da je bila stranka razburjena. Razumljivo je, da bi bil brez posebej opremljenega avtomobila dejansko obtičal in ne bi mogel začeti svojega obiska s tem sinom. To je bilo tisto, ko je Kattie izvedela za situacijo in stopila naprej. Dejal je, da bo namesto prevoza, ki je na voljo stranki, postal ta prevoz strank & rsquos. Najprej se je dogovoril za taksi službo do doma v Mooresvilleu, kjer bo bivala stranka. Naslednje popoldne, v nedeljo, je Kattie prispela v tisti dom v Mooresvilleu, da bi pobrala stranko. Snežilo je in ceste so bile zahrbtne, toda Kattie je stranko odpeljala v Plainfield po sina, nato pa je do poznega večera služila kot njihova šoferka. Naslednje jutro je bil nameščen posebej opremljen avto. Kattie se je spet odpeljala v Mooresville, pobrala stranko in jo vrnila v Enterprise, kjer je avto čakal. Kattie nikoli ni omenila, da je dejansko živel v Noblesvilleu, približno 35 milj od Mooresvillea. Ko je stranka izvedela, da je pomočnik vodje opravil 70-kilometrski povratni obisk, v nedeljo prostega dne, v slabih razmerah na cesti, pa je treba reči, da ga je ta raven storitev za stranke ganila. Kattie Louis je v podjetju Enterprise Rent a Car dve leti in po besedah ​​njegovega menedžerja praviloma in ne kot izjema zagotavlja izjemne storitve za stranke.
& lt nazaj na vrh & gt

Pamela Kennson & mdash Docent
Muzej umetnosti Indianapolis

Dobitnica nagrade ROSE Pamela Kennson ima ključno vlogo pri izboljševanju izkušenj za tisoče obiskovalcev letno v eni izmed najbolj priljubljenih znamenitosti območja Indianapolisa in rsquosa, Muzeju umetnosti Indianapolis. Zaradi njenih prizadevanj se je število javnih obiskov IMA skoraj štirikrat povečalo. Kennson je to dosegel tako, da je razširil podatke o javnem koledarju, da bi zagotovil posebne opise ogledov in razstav. Toda njena storitev presega zgolj številke. Čeprav nadzira ta muzejski in prostovoljni program docentov - mimogrede, docentka je vodilo - vedno hitro stopi naprej in sama vstopi v vlogo docentke. Nadzirala je tudi uporabo videoposnetkov, kar je docentom omogočilo snemanje njihovih izobraževalnih sej. To pa je docentom omogočilo, da so bolje obveščeni o novih eksponatih in idejah za potovanja. Kennson se je tudi zavzemal za dostopnost, zlasti za osebe z okvaro sluha, pri čemer je zagotovil razvoj in zagotavljanje naprav, ki bi pomagale pri poslušanju. Pamela je z IMA 11 let.
& lt nazaj na vrh & gt

Andrew Meyers & mdash Strežnik, gostitelj, gostinstvo
Scotty's Brewhouse, 96. ulica

Andrew Meyers je bil v enem letu s Scotty & rsquos Brewhouse priznan kot zaposleni v tednu in zaposleni v mesecu. Zdaj tem razlikam dodaja nagrado ROSE. Generalni direktor Scotty & rsquos John Cavanaugh pohvali Meyersja zaradi njegovega nenehno optimističnega odnosa, ki obremenjuje sodelavce, menedžerje in zlasti stranke. Medtem ko je delal predvsem kot strežnik in gostitelj, je Meyers pozitivno vplival tudi na gostinsko dejavnost podjetja Scotty & rsquos. On & rsquos je navedel kot ključni razlog za 400 -odstotno povečanje poslovanja. Rekla je ena stranka: "Resnično ima veliko pozornosti do detajlov, vedno ima nasmeh na obrazu in super odnos, kako vam lahko pomagam." Tukaj je še nekaj komentarjev strank: & quotOdlično se je odrezal.Več ljudi je komentiralo njegovo osupljivost. & Quot & & quot; Izglasovani ste za MVP tedna. & Quot; Meyers je eno leto pri Scotty & rsquos, v gostinstvu pa več kot šest. Cavanaugh pravi, da "če Andrew & rsquot ni imel ambicij obiskovati IU pravne šole, ga & & rsquod napredujem v menedžerja."
& lt nazaj na vrh & gt

Kim Mills & mdash Strežnik za hrano in pijačo
Hyatt Regency Indianapolis

Prejemnik ROSE Kim Mills je bil leta 2009 imenovan za sodelavca leta Hyatt Regency Indianapolis. V hotelu je tudi ekipa zvezdnikov, ki priznava odličnost storitev. Mills je bila v svoji 26-letni karieri najmanj 18-krat izbrana v to ekipo zvezdnikov. Prav tako je enostavno razumeti, zakaj. Kot vodilni trener za strežnike in primarni trener za vse nove zaposlitve, Mills presega osnove, da prenese svojo strast, spretnost in znanje o delu. Napisal je eden od njenih pripravnikov: »Iz restavracije postaneš del svoje družine in z vsemi ravnaš, kot da so tvoji otroci. Imaš tako skrbno srce in to kažeš vsak dan. & Quot Nedavno je hotelsko restavracijo obiskal skrivni kupec, ki se je po svojih najboljših močeh potrudil, da je Millsa razburkal na naporno jutro. Vse je bilo brez uspeha. Tajni kupec je pozneje storitev Mills & rsquo opisal kot brezhibno in dejal, da je bila zlasti Mills "izvrstna." Pravi vodja Laurie Butler, "ponazarja vodstvo." Iskrenost njene skrbi za goste in sodelavce je resnično neverjetna. Z restavracijo se obnaša, kot da bi bila njen dom. & Quot Kot strežnik v Hyatt Regency Indianapolis od leta 1984 se Mills kvalificira kot doživljenjski prejemnik nagrade ROSE.
& lt nazaj na vrh & gt

Rachel Radez & mdash agent za storitve gostovanja/koordinator za posebne dogodke
Holiday Inn Express Northwest - Indianapolis

Pomočnica generalnega direktorja Brandy McClaren je pri imenovanju Rachel Radez za nagrado ROSE 2010 dejala, da problem ne prihaja do posebnih primerov njene odličnosti storitev. Težava je bila določiti, med katerim izbrati. McClaren je navedel mladoporočenca z omejenim proračunom, ki si nista mogla privoščiti razkošnih medenih tednov v oddaljenem letovišču. Tako so rezervirali sobo v Holiday Inn Express. To je bila le standardna soba, niti apartma za medene tedne. Toda Radez se je ob rezervaciji odločil, da "prilagodi sobo" ne bi zadostoval. Za začetek je zagotovila, da bo nekaj sodelavcev ob njihovem prihodu veselo sprejelo. Potem, čeprav je bil njen prost dan, je prispela, da bi par pozdravila z vinom, rožami in nekaterimi drugimi romantičnimi izdelki, vse pa je plačala z lastnim denarjem. Potem je tu pogost gost, ki ima tako duševne kot telesne motnje. Radez poskrbi, da potuje do cilja in nazaj. Včasih mu prinese doma pripravljene jedi in upošteva njegove posebne želje. Še en gost s podaljšanim bivanjem je bil na sprejemu domačih jedi, ki jih je dostavil Radez. Zakaj, je vprašal gost? Radez & rsquos odgovori: & quot; Vem, da & rsquos je že dolgo minilo, odkar ste vi & rsquove doma, in vsak bi moral občasno imeti doma pripravljen obrok. & Quot Kako priljubljena je Radez med gosti hotela & rsquos? Pomislite na to Ö na njeno poroko se je udeležilo veliko gostov ali so poslali voščilnice in darila. Tudi ob prijavi je prvo vprašanje, ki si ga mnogi gostje pogosto zastavijo: & quot; Kje je Rachel? & Quot; In če ni na dolžnosti, želijo vedeti, kdaj bo prišla, da jo lahko obiščejo, preden odide. Vodstvo hotelov pravi, da je bil Radez sestavni del povečanja skupne ocene zadovoljstva gostov za več kot 10 odstotkov v letu, ko je bila zaposlena.
& lt nazaj na vrh & gt

Irma Rodarte & mdash sobni uslužbenec
Hotel Omni Severin

Lahko bi govorili o skoraj 10 letni službi Irme Rodarte & rsquos kot spremljevalke sobe za goste v hotelu Omni Severin. Lahko bi govorili o tem, kako kadar koli izpolni potrebo zaradi bolezni ali pomanjkanja osebja. Lahko bi govorili o tem, kako gre poleg čiščenja sob za goste, dela v preddverju, pospravljanja posode ali pranja perila. Lahko bi govorili o njenem optimističnem odnosu, o tem, da je bila pet let zapored imenovana za prvaka v hotelskih storitvah, ali da bi računali na usposabljanje novih spremljevalcev. Lahko bi celo govorili o dejstvu, da več gostov, ki se letno vračajo na odmevne dogodke v Indianapolisu, redno zahtevajo Rodarteja kot spremljevalca sobe. Samo ti bi Rodarteja lahko prejeli kot prejemnika nagrade ROSE. Potem pa je tu tudi rsquos. Lani je pomagala rešiti življenje gostom. Rodarte je nekega dne med dežurstvom zaslišal čudne zvoke, ki so prihajali iz sobe. Med preiskavo je odkrila gosta, ki je padel v diabetično komo. Hitro je poklicala nujno pomoč in ostala pri gostu do prihoda zdravnika. Prava oseba. Pravo mesto. Pravi čas. Rešeno življenje. John Billstrand, direktor človeških virov, pravi, da sta Omni Severin in Indianapolis boljša mesta, ker ali Irma & rsquos srce za storitev in pristne povezave, ki jih ima z obiskovalci. Nesebičnost Rodarte & rsquos se razteza tudi na njeno domače življenje, kjer z veseljem pripravlja obroke za tiste, ki jih potrebujejo, ali pa po potrebi opazuje sosede in otroke rsquo.
& lt nazaj na vrh & gt

Russ Roth & mdash Valet/Beat Captain
Hilton Indianapolis

Predstavljajte si stisko in razburjenje družine, ki je na božični dan bivala v Hilton Indianapolisu, da bi bila v bližini svojega sina, ki je prejšnji dan operiral raka. Ko se je družina odpravila v bolnišnico do svojega vozila, so odkrili, da je bilo vozilo uničeno, z razbitimi okni. Ker niso vedeli, kaj naj naredijo, so se obrnili na služabnika/kapetana Russa Rotha, prejemnika nagrade ROSE 2010. V nekaj minutah je uredil stekleno podjetje za popravilo vozila, čeprav je bil božič. Poklical je sodelavca pri vzdrževanju, ki je posesal razbito steklo iz vozila. Medtem ko je družina čakala na popravilo, je dal vozilo parkirati pod streho hotela, da bi bilo zaščiteno pred padajočim snegom. Veliko hitreje, kot je bilo pričakovati, je bila družina na poti v bolnišnico. To je le ena od zgodb, ki sestavljajo pričevanje za Rotha. Tam je bila ekipa NBA, katere avtobus je imel mehanske težave, ki so grozile, da bo odložil odhod v Conseco Fieldhouse. Hitro ukrepanje Roth & rsquos je zagotovilo nadomestni prevoz in pravočasen prihod. Drugi samoopisani svetovni popotnik navaja Roth & rsquos & quotex izjemno storitev in pripravljenost na kakršen koli način pomagati. & Quot Pravi njegov predlagatelj, & quot Čeprav je njegov naziv kapitan služabnika/zvonca, ga boste morda našli pri shranjevanju prtljage, urejanju prevoza, pomoči gostu v poslovnem središču, na recepciji preverja vstop in izstop gostov in celo parkira avtomobile. Nenehno je prevzel pobudo, da bi prečkal vlak na vseh področjih gostoljubja, ki so mu dosegljivi. & Quot; Roth je dve leti v Hilton Indianapolisu in že dvakrat napredoval. Hilton Indianapolis pravi, da je delo Russ & rsquos omogočilo hotelu, da poveča zadovoljstvo gostov in zvestobo.
& lt nazaj na vrh & gt

Kenneth & quotKT & quot Taylor & mdash strežnik
Cracker Barrel Old Country Store

Ko boste prišli v trgovino Old Country Cracker Barrel na ulici North Michigan Road, če boste imeli srečo, da boste sedeli v določenem oddelku, boste & rsquot dobili samo hrano. Zabaval vas bo pevski strežnik. To je blagovna znamka prejemnika nagrade ROSE Kenneth & quotKT & quot Taylor. Morda ste & rsquove slišali za petje za večerjo? No, KT to obrne. Zapel bo skupaj z vašim zajtrkom. Obstaja celo video dokaz. Ena skupina žensk je v šali prosila Taylor, naj jim poje. Ko je res zapel, je ena od žensk to posnela na svoj I-telefon in objavila na You Tube. Videoposnetek je naslovljen & quotNajboljši zajtrk doslej. & Quot Kot se pogosto zgodi, je virusni učinek videoposnetka prevzel vlogo, zato ga KT rutinsko zahteva od strank. V Cracker Barrelu je zaposlen 3-1/2 leti.
& lt nazaj na vrh & gt

Jason Woolridge & mdash Banketna nastavitev in strežnik
Renesančni Indianapolis sever

Včasih se reče, da se mladost zapravlja za mlade. To ne bi veljalo za prejemnika nagrade ROSE Jasona Woolridgea. V nekaj več kot enem letu, odkar je diplomiral na univerzi Purdue, se je Wooldridge s tem odnosom, delovno etiko in usmerjenostjo k storitvam izkazal za stranke in sodelavce. Medtem ko so njegove glavne naloge priprava banket in večino dneva preživi v hiši & quotback, & quot, kar Woolridgeu ni preprečilo, da bi naredil vtis vnaprej. En banket, na katerem je delal, je ustvaril kar 50 kart s komentarji, ki so mu peli pohvale. Njegova predlagateljica, direktorica za kadre Erin Hayek, ugotavlja, da se vse začne s obeti, češ da je njegov temperament »150 odstotkov pozitiven« in da je pozitiven odnos »nalezljiv«. «Hayek nadaljuje,« njegova storitev gostom je vsak dan odlična, njegova služba sodelavcem in menedžerji so v vsakem trenutku odlični. Odličnost storitev opredeljuje s svojo pozitivnostjo, predanostjo popolnosti, zanesljivostjo in visoko stopnjo odgovornosti. Rodil se je za to nagrado. & Quot
& lt nazaj na vrh & gt


Namizna medicinska sestra Ashley Jacobs, ‘To nikoli ne postane dolgočasno ’

Delo na medicinskem področju je bilo za Ashley Jacobs vedno brez težav. S petimi leti zdravstvene nege 26-letnica napoveduje dolgo in čudovito pot pomoči ljudem, izgradnji odnosov in še več.

Jacobs je ena izmed številnih medicinskih sester, ki jih je vodja časopisa častil za teden medicinskih sester. Nominirala jo je njena mama Angie, ki je dejala, da hči nadvse skrbi tiste, za katere skrbi.

“Ona je medicinska sestra, ki si jo vedno želite za svojo družino, "je v svojem pismu o imenovanju zapisala Angie. “Ona je prijazna, sočutna in v pomoč tako svojim pacientom kot svojim sodelavcem. Vsak dan daje 100%. ”

Trenutno Jacobs dela kot medicinska sestra v vasi Wesley Village v Pittstonu. Priznala je, da je prvotno načrtovala, da bo postala nevrokirurg, in povedala, da se je zaradi različnih razlogov, med drugim zaradi želje, da bi bila bolj pripravljena na paciente, obrnila na zdravstveno nego.

Poleg vsakodnevnih interakcij s pacienti in zagotavljanja, da vse v ozadju poteka nemoteno, je Jacobs opozoril, da je zdravstvena nega področje, ki ponuja številna vrata za odpiranje. Kot medicinska sestra se lahko odloči za delo kjer koli na svetu z različnimi posebnostmi.

“ Resnično lahko greste kamor koli in kot medicinska sestra počnete karkoli, od srčne do pediatrije. To je poklic, ki nikoli ne postane dolgočasen, «je opisala na tem področju.

Jacobs je priznal, da nima posebne zgodbe ali spomina, ki bi ji ostal. Namesto tega vidi vso svojo negovalno kariero kot trenutke ponosa, bolečine in vsega vmes.

“V svoji karieri imam toliko družin, prebivalcev, sodelavcev in obiskovalcev, ki se mi dotaknejo srca, da ne morem izbrati samo ene. Delala sem noči in odšla domov z zlomljenim srcem za stanovalca, za katerega bi si želela, da bi imela še en dan, in opazovala sem, kako so bolniki na rehabilitaciji odšli skozi vrata in pred njimi dolgo zdravo življenje, ” je pojasnila .

V času, ko je poklic v zadnjih letih postal središče številnih naslovnic, je Jacobs dejala, da je počaščena in hvaležna za priložnost, da pokaže, kaj vse počnejo medicinske sestre.

Za študente, ki se pripravljajo na vstop na teren, je bil njen nasvet, naj se še naprej trudijo, pridno študirajo in ne odlašajo. Še nasvet? Ostani prijazna in sočutna, je dejala, da bo vsak dan pripomogla k spremembi.

Na splošno je vstop na področje zdravstvene nege učil Jacobsa, da šteje vsaka sekunda.

“Budi hvaležen za to, kar imaš, toliko ljudi ima v življenju tako malo in imajo še vedno razlog, da nadaljujejo, "je dejala. “Če vidite ljudi na najnižji ravni, vas lahko ozemlji, vendar si vzamete vsak dan enega in drugega časa in če se oni lahko nasmehnejo –, lahko tudi jaz. ”

Ashley Jacobs je medicinska sestra v vasi Wesley v mestu Jenkins.

Butch Comegys | Za Times Leader

Ashley Jacobs je rehabilitacijska medicinska sestra v vasi Wesley v mestu Jenkins. Fotografija Butch Comegys / For Times Leader


Resolucija

Če si želite ogledati 32-bitne datoteke pomoči s pripono datoteke .hlp v sistemu Windows, boste morali prenesti in namestiti WinHlp32.exe iz Microsoftovega centra za prenose.

Pomembne opombe za prenos tega programa

Odprite povezave z Internet Explorerjem.

Če se ob odprtju strani za prenos prikaže sporočilo "Zahtevana potrditev", kliknite Nadaljuj, nato pa sledite navodilom na zaslonu.

Ko boste pozvani, da prenesete datoteko, izberite ime datoteke, ki vsebuje »x64« za 64-bitne različice sistema Windows ali »x86« za 32-bitne različice sistema Windows. Za izbiro uporabite naslednje podatke za samodejno zaznavanje.

Program Windows Help ni podprt v sistemu Windows Server 2012 ali novejših različicah strežnika Windows Server.

Če naletite na težave pri namestitvi WinHlp32.exe ali uporabi pomoči, pojdite na razdelek »Več informacij«.


Samo za zunanjo uporabo. Izogibajte se neposrednemu stiku z očmi. Če pride do draženja kože, prekinite uporabo.

  • Eterična olja CPTG iz kadila, havajske sandalovine, sivke, mire, Helichrysuma in vrtnice igrajo temeljno vlogo pri podpori zdrave kože.
  • Kompleks lipidov presega tipično vlažilno kremo z uporabo lipidov, podobnih tistim, ki jih naravno najdemo v koži na vrhuncu.
  • Globoko vlaži, da zmanjša videz drobnih linij in gub.
  • Napredna formula združuje lipide olja olja, jojobe in makadamije, da ustvari neverjetno mehko in gladko kožo.

Najboljši trenutek za podporo strankam na WDW

Walt Disney World je znan po (večinoma) neverjetnih storitvah za stranke. In rad bi slišal nekaj vaših najljubših trenutkov, ko se je CM potrudil in vam pomagal narediti vaše potovanje še bolj nepozabno.

Zato bom seveda začel s svojim. Jaz, moji starši in moj 2 -letni (pravkar posvojeni) brat sva imela jutranje rezervacije karakterjev v Cape May Cafe in malo smo čakali, zato smo se iz našega letovišča usedli na avtobus in se odpravili v Epcot na avtobus za povezavo do restavracije. Nismo našli avtobusne postaje v letoviščih, zato smo se odpravili na transportno pisarno za navodila, povedali smo ji, kaj počnemo, in rekla je, da nas bo odpeljala v terenski terenec podjetja. Ko smo bili v avtu, smo izvedeli, da je direktorica prevoza družbe epcot. Bil sem šokiran, ker si je vzela čas za pomoč. Pri nas ni težav

FettFan

Znani član

Res ne WDW. vendar bi se lahko štelo, saj smo bili na posestvu letovišča. Večerjali smo v kavarni Rainforest zunaj živalskega sveta. Naš strežnik je bil Larry. Bil je ODLIČEN, mojemu invalidnemu dedku je celo pomagal krmariti po meniju. Po večerji, ko nam je prinesel račun, se je postavil z nami za nekaj slik.

Larry in ostalo osebje kavarne Rainforest sta bili na vrhu igre in mislim, da je njihova storitev dejansko premagala nekatere restavracije v parku. (Gledam vas Sci-Fi Dine In)

NemoRocks78

Zaseženo

Pumbas Nakasak

Na poti proti velikemu pobegu.

Woody98

Aktivni član

JIMINYCR

Znani član

Steviej

Znani član

Rcapolete

Aktivni član

Bethymouse

Znani član

Bethymouse

Znani član

Veliki Phil

Znani član

Leta 1995 je moj oče izgubil klobuk na Splash Mountain. Bil je eden tistih starih klobukov tipa John Deere, ki je bil ničvreden, a je vseeno upal, da ga bo dobil nazaj. Ko se je konec noči odpravljal, se je ustavil v mestni hiši, da bi to sporočil. Dva tedna kasneje klobuk pride po pošti. Leta 2009 se je isto zgodilo moji ženi. Verjamemo, da je prav na Pirati izgubila sončna očala. Tudi to ni pomemben posel, vendar sem ji vseeno rekel, naj to prijavi in ​​jih je vrnila po pošti.

Na osebni ravni sem zelo užival v pogovoru z mladim gospodom v sanjah enega človeka. Bil sem res navdušen nad količino informacij in spominov v delu pred predstavo. Poiskala sem ga in ga vprašala, če ve, kje bi lahko našli enega od prvotnih zemljevidov iz leta 1971. Ni vedel, vendar mi je svetoval, naj poiščem na Googlu. Nato je dolgo govoril o odprtju parka leta 1971. Bil je zelo dobro podkovan v vse to in mislim, da ni imel več kot 20 let. Od njega sem izvedel, da so bili Pirati prisiljeni leta 1973 zaradi velikih pritožb, da ga nimajo. Pravi, da so preveč hiteli, zaradi česar je bil tisti v Disneylandu veliko boljši. Bilo je le veliko kapljic informacij, ki jih je delil, in tega mi ni bilo treba početi z mano. Sčasoma so me morali od začetka oddaje odvleči stran od Disneyjevega pogovora

DizneyPryncess

Znani član

Stlbobby

Znani član

To sem že objavil, vendar se mi zdi dober kraj za ponovitev.

Pred nekaj leti, mislim, da je bilo leto 2006, sem letel iz St. Bil sem zelo vznemirjen in tudi po pogovoru z vodjo spremljevalca in prazničnem potovanju v čarobni ekspres v moje letovišče. Bil sem še vidno razburjen.

Med prijavo v SS me je CM vprašal, če je kaj narobe, in rekel sem ji, naj za to ne skrbi, da je kriv letalski prevoznik. Še naprej je spraševala o tem in zagotovil sem ji, da to ni Disneyjeva krivda ali problem, vendar sem ji dal kratko različico.

Moja soba ni bila pripravljena, zato sem šel v center mesta na kosilo in nakupoval. Ko sem približno tri ure kasneje končno prišel v svojo sobo, je bila majhna darilna košarica in opomba, v kateri je pisalo, da vodstvo SS -a ne želi, da bi se moje počitnice začele slabo, zato so upale, da bodo dobrote pomagale.

Priboljški so res pomagali in počitnice so se mi takoj izboljšale. Moje vprašanje ni bilo popolnoma povezano z vsem, kar je storil Disney, a vseeno so zame prinesli malo čarovnije.

Potrdila bom, da sem imela srečo in da sem dobila enega najboljših CM -jev, rada bi si zapomnila njeno ime in tovrstne stvari niso 100%, pa tudi niso popolnoma izginile, tako pogosto se oglašuje.

Ta ženska je bila le ena od mnogih velikih CM -jev, ki sem jih srečal na svojih obiskih. Imam še nekaj drugih neverjetnih zgodb, ki jih bom delil kasneje, če bo ta dobro sprejeta.

To zgodbo sem hotel samo deliti, ker mi je takrat toliko pomenila in se me dotika še danes.

Zapihati

Znani član

Nekajkrat sem pisal o odličnih izkušnjah. Imel sem 3 leta in prisežem, da je Pepelka mahala z gradu, moj brat pa je kričal Pepelko - moja sestra vas želi spoznati. Nekaj ​​minut kasneje so me odpeljali, da bi se srečal s CInderelo v zasebnem M & ampG. Bil sem otrok, toda če pogledam nazaj, predvidevam, da je to čarovnija CM.

Nekoč, ko je moja družina z Nemom zapuščala morja, moja najmlajša pa je jokala, da bi želela nadaljevati. Nameraval sem se vrniti v vrsto, ko je CM vprašal mojo 3 -letno, kaj bi jo razveselilo, in rekla je, da se vrne na vožnjo. No, CM nas je odpeljal nazaj do sprednje strani vrstice. Moja hči se je nasmehnila od ušesa do ušesa.

Drugič smo bili v lepem M & ampG -u in si ogledali vile v starem mestu Toon. Ko smo prišli na fronto, smo vprašali, katere vile so tam in katere smo pravkar videli. CM me je vprašal, koga želimo videti, in rekel sem ji Fawn ali Irridescia. Poklicala me je na stran in mi povedala, da bo Fawn prišel po naslednjem premoru in mi dala kartico, da se vrnem na zadnjo pot, da bom ena prvih spoznala Fawn - moje hčere so se počutile kot člani kraljeve družine.

Nekega jutra so na POFQ -u avtobusi vozili ZELO ZADNJE - bilo je 4 avtobusa b2b HS, vendar smo želeli EPCOT. CM je povabil klic za prevoz in nato odprl čarobno škatlo z drobnarijami, ki jih je ponudila mojim hčeram, da bi bile srečne.

Na božični večer smo šli iz POFQ v CS na večerjo. Z avtobusom smo se odpeljali do AK in nato prestopili v CS. Avtobus AK se je ustavil in bili smo edini ljudje. Omenili smo, kam gremo, in voznik avtobusa nas je pripeljal naravnost v CS.

Mislim, da jih imam še na stotine!

Taylor

Znani član

Weather_Lady

Znani član

To zgodbo sem povedal v drugi temi, če pa na kratko povem:

Z možem sva skupaj, sestra in njen mož ter moji starši skupaj odšli na potovanje v WDW leta 2005. Rezervirali smo tedenski paket in bivali v Coronado Springsu pri uglednem lokalnem potovalnem agentu. Rezervacije smo naredili skoraj leto vnaprej in v celoti plačali precej pred datumom zapadlosti. Na žalost agentka ni imela pojma, kaj počne. Nikoli nam ni poslala nobenega Mickeyja Mail (niti tega nismo vedeli zahtevati): le knjižico stvari v obliki kupona, ki jih je natisnila v pisarni, v kateri so bili navedeni podatki o naši rezervaciji, za katere je povedala, da so vse, kar potrebujemo. Naše potovanje je potekalo brez težav, toda ko smo prišli v Coronado Springs, da se prijavimo, je CM na mizi rekel, da nikoli ni videl ničesar podobnega & quotcoupons & quot, ki smo ga imeli, in ne ve, kaj bi z njimi. Tudi v sistemu ni našla naše rezervacije. Potem, ko je poskusila nekaj ur (vendar je bilo verjetno 15 minut), je poklicala upravitelja, ki je poskušal po telefonu stopiti v stik z našo potovalno agencijo (vendar ni uspelo, saj je bila sobota in je potovalna pisarna zaprta.) šest nas je stalo v solzah, obdanih s prtljago, in mislilo, da počitnice, ki smo jih skoprnile in prihranile, izhlapijo pred našimi očmi.

Takrat je upravitelj rešil dan. Pregledala je natisnjene izdelke našega potovalnega agenta, podatke vnesla v računalnik kot novo rezervacijo, nam dala ključne kartice z naloženimi vstopnicami in nam rekla, naj gremo razpakirati v sobe in se odpravimo uživati ​​v parkih, da bo sama poskrbela za vse pri naši potovalni agenciji in bi nas kontaktirala, če bi prišlo do težav. Kolikor sem lahko ugotovil, je dobesedno vzela besedo šestih izčrpanih ljudi z nekaj nesmiselnimi izpisi iz potovalne agencije, ki smo jih dejansko rezervirali in plačali za počitnice!

Upravitelj je bil zvest svoji besedi. V ponedeljek nas je poklicala, da je končno stopila v stik z našim agentom in dobila potrditvene številke, potrebne za potrditev rezervacije. (Mislim, da je agent napačno napisal priimek mojega očeta ali kaj podobnega, kar je onemogočilo rezervaciji, da bi ga prijavitelj CM našel.) Vse, kar vem, je, da je ta upravitelj nočno moro z dopusta spremenil v popoln problem. pometanje njene roke (ki je bila morda polna piksi prahu). Za njeno milost bom večno hvaležen njej in Disneyju nasploh.


Ali napišete natakarju, ko polnite pridelovalca?

Lahko govorim samo o tem, kako so stvari tukaj. Skoraj edini kraji, ki napolnijo rastlinjake, so pivnice. Svojega piva ne distribuirajo v steklenicah, zato je rejač edini način, da si domov vzameš malo sodčka, kar pa je morda nerodno dobiti (nikoli nisem poskusil ... lol).

Če sem v gostilni in pijem nekaj pijač in želim odnesti pridelovalca domov, potem ja, zagotovo bom dal napitnino. Če se samo prijavljam na zalogaj za pridelovalca, verjetno ne in razlog je preprost. Osebi prodajalne alkoholnih pijač ne dajem nasvetov, da mi je prodal 6er, če bi bil na voljo 6er določenega piva, verjetno ne bi napolnil pridelovalcev. Izjema je, če takoj dobim storitev in gredo čez in čez, potem bom malo napil, a ne tako, kot bi, če bi sedel v lokalu. Proizvajalci IMO so za začetek odvzeli 99% časa. (ne pomeni, da nimam lol)

Deflagratio

Znani član

GuldTuborg

Podporni član

ChillWill

Znani član

Goveji blitz

Znani član

Nočni kolesar

Znani član
Znani član

Bil sem barist, strežnik, busser, bar back in natakar. Nekateri hkrati na različnih delovnih mestih. Pri gradnji pijač so baristi daleč najtežje. Največja stvar, ki sem jo zdaj spoznal, je, da lahko s strežbo, poslovanjem ali podporno podporo vedno pobegnete strank. NE z barmanom. Rečeš pa: "No, jaz nisem eden izmed teh ljudi." Nekoč boš. Dollar pivo je pošteno za napitnino (ali manj, če je to preostala sprememba). Če vaša pijača potrebuje stresalnik ali več kot 3 sestavine, je 2 $ pošteno.

Večina ljudi se ne zaveda, da jih jemljejo ven, in sicer, da 9/10 krat ta napitek gre kuharjem. Tako je izjava, & quot; Ne dam nekoga namigovati, ker mi je dal hrano. & Quot; je popolna BS. Kaj pa, če napišete fanta, ki mu je to uspelo? Vedno lahko vprašate osebo za hrano, če gre napitnina kuharjem.

Nazadnje je celoten argument, da vas nihče ne napne pri opravljanju svojega dela, lažni IMO. Če želite nasvete, pojdite na delo v storitveno industrijo in se na vas veliko derete. Če bi bilo delo v baru odlično ali brez težav, ne bi dobili menjalnih pijač za povečanje morale.

Znani član

TO je problem celotnega sistema. Kaj na svetu bi vam prisililo nekoga, da mu ponudite manj kot popolno storitev.

Če pri svojem delu naredim manj kot & quotgood & quot ali & kvote, ki se pričakujejo & quot, prejmem opozorila, pošljem domov ali bi lahko izgubil službo-da ne omenjam dejstva, da bi me lahko, če ne sodelujem v igri, nekdo umrl.

Mlg5039

Znani član

Dogovorjeno. Namig, tudi če je storitev slaba, krepi to vedenje. Čakajoče osebje in natakarji res ne bodo skrbeli za svojo raven storitev, če jim nenehno posredujejo nasvete za **** delo.

Kot ste rekli, bi jih v skoraj vseh drugih poklicih ukorili zaradi manj kot zaželene uspešnosti.

Toda OP -ju, ja, dajem dolar dolarju prijetnemu natakarju za polnjenje svežega Growlerja.

Rycov

Znani član
Znani član

Če vašemu šefu ni všeč, kar počnete, vam NE MOGO plačati. Lahko vas pošljejo domov, brez plačila v približno 70% ameriških zveznih držav.

Tipping je nagrada za dobro delo. Dajanje namigov nekomu, ki dela ****, je tako, kot bi privoščili svojemu psu, da se **** po tleh.

Njihovo delo je zagotavljanje dobrih storitev. Če ne morejo opravljati svojega dela, od mene ne dobijo nagrade za dodatno plačilo. Če bodo uspešni, bodo dobili dober namig. Toda napitnine vam ni zagotovljeno.

Ni težko narediti dobro. Hudiča, res bi lahko zajebal, če pa rečeš samo "Žal mi je, bom popravil" namesto običajnega prenosa denarja, gre za kuharsko/barmanovo/menedžerjevo/nekoga drugega, razen mene in moje pesmi in plesa. Običajno bo še vedno precej dobro.

Oblika ali oblika v nobenem primeru niso NAVODNI nasveti, tudi če mi nudite neumne storitve. Če želite zaslužiti več kot 2 dolarja na uro (BTW, približno 50% držav zahteva plače nekje dvakrat višje od tistih, ki dobijo nasvete), potem opravite svoje grozljivo delo.

Samo polnjenje pridelovalca ne pomeni, da dobite napitnino. Čestitamo, opravili ste najosnovnejšo funkcijo svojega dela, tukaj je nagrada!

Rycov

Znani član

Deflagratio

Znani član

Divji zahod 450

Prepovedano

Vse, kar vem, je, da sem dober prekucnik, zato je prineslo veliko brezplačnih pijač in izjemno storitev. Dober donos za majhno naložbo.

ChillWill

Znani član

ReverseApacheMaster

Prepovedano

Ne strinjam se s konceptom tipping = plače, vendar se zavedam, da sistem deluje tako. Ne dajem namigov ljudem, ki jim plačilo ni dano, razen če so presegli svoje službene dolžnosti. Smešno in rahlo žaljivo se mi zdi, ko grem v restavracijo s hitro prehrano in mi na račun napišejo ali natisnejo napitnico. Če zaslužite 8 USD na uro, ne potrebujete napitnine v dveh minutah, da sestavim sendvič in ga dam v vrečko.

Prav tako ne verjamem, da slaba storitev pomeni, da bi moral kljub temu zapravljati ali izgubljati čas, da bi vodji povedal, da njegovi zaposleni ne opravljajo svojega dela. To je navsezadnje delo menedžerja - upravljanje. Neumna storitev samo pomeni, da ni napitnine. Osebno mislim, da če želite na računu za kreditno kartico postaviti vrstico, ki mi omogoča prilagajanje vsote, bi moralo delovati v obe smeri. Res slaba storitev pomeni, da bi morala od tega odšteti, namesto da seštejem. Vendar pa ga moram še preizkusiti. TAKO slabe storitve nisem imel že zelo dolgo.

Verjamem tudi, da delo, ki ga pričakujete od vas, upravičuje več napitnine. Če eno uro postrežete na moji mizi z sprejemanjem naročil, prinašanjem pijač/hrane, polnjenjem vode itd., Si zaslužite napitnino (in več napitnine) kot nekdo, ki vzame dve minuti klica za naročilo za prevzem in še dve minuti da ga pokličem. Običajno pa natakam barmane precej nad normo, če je storitev dobra. Kakovost storitev upoštevam glede na to, kako zaposlena je. Če imate v svojem razdelku vse polne tabele, lahko razumem, da morate počakati. Če sem vaša edina miza, moj kozarec za vodo ne sme ostati prazen.

Na OP, ja, bi dal nasvet za polnjenje pridelovalca, tako kot bi naročil pivo. To je približno isto.

Rycov

Znani član

Postrv

Znani član

Naj bodo trije. V zgodnjih 90 -ih sem visel pri krastači. Takrat je bil to čudovit bar in eno redkih, kjer si lahko privoščil dobro pivo. Predvidevam, da je še vedno super. Mislim, da sem danes prestar za množico Alaxander St.

Kar se tiče namigov, ja. Upoštevam tudi pravilo 1 USD/osnutek. Verjetno bi šel z roko na račun pridelovalca. Če bom nekaj časa tam, bom odprl zavihek in nakazal najmanj 10% za celo povprečno storitev. Če me čaka natakarica s koktajli, bo dobila 15%+. Če krog pijače v vrednosti 20 USD skrivnostno izgine z mojega zavihka, se na konici skrivnostno prikaže dodatnih 10 USD.

Opravil sem tudi celoten krog restavracij, vse od pomivalnega stroja do natakarja in vse vmes. Skoraj vsi, s katerimi sodelujete, delajo za precej manj od minimalne plače in se zanašajo na nasvete za plačilo svojih računov.

Center mesta3641

Znani član

Po poklicu sem reševalec. Delo opravljam zato, ker ga imam rad, in ne zato, ker pričakujem, da bom obogatel. To je dobro, ker sem plačan.

Prinašam ljudi iz mrtvih in ne morem dobiti namigov za to. Tudi jaz ne pričakujem.

Nekdo, ki vzame kozarec in mi natoči pijačo, ne dobi denarja samo zaradi truda.

ČE mi dajo dober nasvet, odlično storitev in naredijo bivanje prijetno, bom dal ok. Toda zgolj obstoj in opravljanje osnovnih nalog svojega dela jim ne dajejo posebnih pravic do napitnine.

Za opravljanje svojega dela ste plačani več kot nekaj dolarjev na uro. Vedno dajte namige, če so vsaj ustrezni. Ne zanima me, če daš namige svojemu natakarju. Ja, vendar se vsaj ne zanašajo popolnoma na nasvete.

Ne morem verjeti ljudem, ki se jim zdi, da bi morali dati strežnike, razen če so neverjetno odlični. Ostani doma.

Znani član

Kuhanje kuharjev je bilo zahtevano ali priporočljivo pri vsakem delu v restavraciji. Na splošno približno 10% nasvetov ali prodaje hrane. Če gre za prodajo hrane, potem je za natakarja res zanič, saj večina ljudi ni dala napitnine pri naročanju hrane iz lokala.

Razlika je verjetno v tem, da v OR vsi dobijo polno minimalno plačo.

ChshreCat

Znani član

Blkandrust

Znani član

Večino lokalov, kjer grem, cenim njihovo pivo po 4 dolarje za pinto, zato, če plačam v gotovini, vedno izročim petico in jo pokličem dobro. Če vodim zavihek, običajno napišem približno 5 dolarjev.

Ja, natakar samo polni kozarce, medtem ko mora natakar/natakarica narediti veliko več. Natakar pa se mora spoprijeti tudi z veliko več ljudmi, ki postanejo norci takoj, ko v njihov sistem vstopi najmanjši del alkohola, zato imam do njih naklonjenost. Še posebej v noči na petek in soboto. Poleg tega je bilo v številnih barih, ki sem jih obiskal, kar 100 ljudi, delal pa je le en natakar, zato mu razbije zadnjico. Če mu bom vzel čas, da napolni pridelovalca, mu bom zagotovo nekaj dal. Verjetno par dolarjev.

Dallasdb

Znani član

Upajmo, da nihče ni užaljen. Popolnoma se strinjam, da ne smete dati napitnin.

Ko gre za prevrnitev, pa obstajajo določena siva območja. Nedavno sem opazil tudi, da vedno več mest dodaja & quottip cup & quot pred svoj register.

V Denverju je nekaj mehiških lokalov s hitro prehrano/priložnostnimi jedilnicami, ki imajo poleg registra skodelico napitnin.

So kot podzemna železnica, vendar za Burritos in Tacos. To je pol koraka nad hitro hrano. Nimam volje, da bi napil & quotfast hrano & quot; burrito.

Zame je to sivo območje.

Thezepster

Znani član

Upajmo, da nihče ni užaljen. Popolnoma se strinjam, da ne smete dati napitnin.

Ko gre za prevrnitev, pa obstajajo določena siva območja. Nedavno sem opazil tudi vse več mest, ki pred svoj register dodajajo & quottip skodelice & quot.

V Denverju je nekaj mehiških lokalov s hitro prehrano/priložnostnimi jedilnicami, ki imajo poleg registra skodelico napitnin.

So kot podzemna železnica, vendar za Burritos in Tacos. To je pol koraka nad hitro hrano. Nimam volje, da bi napil & quotfast hrano & quot; burrito.

Zame je to sivo območje.

Norca

Znani član
Znani član

Skibb

Znani član

IffyG

Znani član

Rycov

Znani član

Kuhanje kuharjev je bilo obvezno ali priporočljivo pri vseh restavracijskih opravilih, ki sem jih imel. Na splošno približno 10% nasvetov ali prodaje hrane. Če gre za prodajo hrane, potem je za natakarja res zanič, saj večina ljudi ni dala napitnine pri naročanju hrane iz lokala.

Razlika je verjetno v tem, da v OR vsi dobijo polno minimalno plačo.

Rexbanner

Znani član

Delal sem v enem izmed najbolj obremenjenih Starbucksov v ZDA. Naenkrat je delalo šest zaposlenih-običajna trgovina z velikim obsegom ima največ 4 delavce. Linija je bila ves čas mojega dela zunaj vrat. Poskusite pripraviti 30 pijač. To je približno 30 mešanih pijač.

Od mene ne čutiš sočutja. Zaslužil sem minimalno plačo. Delala sem od 5. do 11. ure in nato hodila v razred do 4. Dobila sem NUJA napitnine, ker je bila to franšizna trgovina.

Polovica natakarjev, s katerimi sem imel opravka, je bila bodisi nagajivih deklet ali deklet, ki mislijo, da pogrešajo Kalifornijo. Prejšnji teden sem v klubu poskušal kupiti vodo za 5 dolarjev. Neumna psička mi ni povedala, da obstaja minimalni znesek 30 dolarjev, dokler je nisem vprašal, zakaj za celoten znesek ni dolarja. Ko sem ji rekel, da bom šel, na moje ime mi je dala napitnino v višini 250 dolarjev in nato ponaredila moj podpis. Pred enim mesecem me je natakar zavrnil, ker sem mu dal le 10% napitnine pri prvi pijači, ki sem jo naročil. Na fakulteti je bil bar, kjer so vas odrezali, če ste dali znak, da želite naročiti na kakršen koli način, obliko ali obliko.

**** TO. Vsem natakarjem dajem 20% standard. Natakarji bi morali biti hvaležni za vse, kar jim podarim. Vedno dajem napitnine med 10-20%. Hočeš več? Bodi prijazen. Ne bodi vražji. Naslednjič, ko bo imel eden od teh idiotov težave, jih bom resno poskušal odpustiti.

Znani član

Če mi res želite jokati, kako težko je biti strežnik, predlagam, da se spoprimete z realnostjo. Ko odrasteš in dobiš službo velikega fanta, se lahko pogovarjamo o težkih službah in se dotaknemo okoliščin.

Ali je vaše delo kdaj povzročilo življenje ali smrt nekoga zgolj na podlagi vašega odločanja?

Vaša naloga je, da greste v službo, sprejmete naročilo, vrnete navedeno naročilo in obrišete **** mizo. STFU.

Če želite napitnino, si jo prislužite. In če se v takšnih nastavitvah razburjate o tem, je verjetneje, da bo več ljudi preprečilo namigovanje.

Qhrumphf

Ostanite nesramni, ostanite uporni, ostanite ostri

Iaefebs

Prepovedano

Edb23

Znani član

saj so itak vsi zunaj teme.

Kot delovni kuhar je moje mnenje o natakarjih precej nizko. skoraj vsak strežnik, ki je delal v moji kuhinji (že nekaj časa delam na tem mestu in sem videl, da veliko strežnikov prihaja in odhaja), je absolutni idiot. naročila se izgubijo vsak dan, vložijo vstopnice za napačno stvar in me potem krivijo, ko skuham, kar so prosili, itd itd.

Kot rečeno, vsaka oseba, ki dela v restavraciji, se premika čim hitreje in si razbije rit, zlasti v času dneva, ko verjetno jeste. Ne glede na to, ali so dobri pri svojem delu, je bolj odvisno od njihove sposobnosti za to kot od njihovega truda. Zlasti v primeru avtobusnih prevoznikov (ki so odvisni od nasvetov, ki jih dajete prav toliko kot strežniki), to delo opravljajo ne zato, ker bi to želeli, ampak običajno zato, ker so v slabem finančnem položaju in je to prvo delo, ki ga prišel naokrog. ne glede na to, ali se s tem strinjate ali ne, vsak Američan (in tudi večina Evropejcev) ve, da se pričakuje napitnina in ne dajanje namigov nekomu, ker ni mogel dobiti vašega posebnega naročila ali pa vam ni napolnil kozarca za vodo, ko ste ga končali je grozno početje. ti ljudje si razbijajo rit, da bi se potrudili, da se imaš lepo. okolje ne dopušča lenarjenja, zato bi lahko, če se nekdo počasi premika, imel kaj drugega. samo zato, ker trenutno ni gneče, ne pomeni, da kuharji nimajo petdeset vstopnic, na katerih delajo. in če se vam zdi, da vam nekdo daje odnos, je to lahko zato, ker jih je kuhar, kot sem jaz, pravkar prežvečil, ker je izgubil vstopnico, ali ker je danes že dvanajstič neka stranka naročila srednje redek zrezek, dobila srednje redek zrezek, vztrajal, da je v resnici srednje ali celo nekaj smešnega, na primer dobro opravljeno (to se je zgodilo danes), nato pa ga poslal nazaj in ni dal napitnine, ker so na svojem zrezku dobili "napačno". namigajte svojemu strežniku

Znani član

saj so itak vsi zunaj teme.

Kot delovni kuhar je moje mnenje o natakarjih precej nizko.skoraj vsak strežnik, ki je delal v moji kuhinji (že nekaj časa delam na tem mestu in sem videl, da veliko strežnikov prihaja in odhaja), je absolutni idiot. naročila se izgubijo vsak dan, vložijo vstopnice za napačno stvar in me potem krivijo, ko skuham, kar so prosili, itd itd.

Kot rečeno, vsaka oseba, ki dela v restavraciji, se premika čim hitreje in si razbije rit, zlasti v času dneva, ko verjetno jeste. Ne glede na to, ali so dobri pri svojem delu, je bolj odvisno od njihove sposobnosti za to kot od njihovega truda. Zlasti v primeru avtobusnih prevoznikov (ki so odvisni od nasvetov, ki jih dajete prav toliko kot strežniki), to delo opravljajo ne zato, ker bi to želeli, ampak običajno zato, ker so v slabem finančnem položaju in je to prvo delo, ki ga prišel naokrog. ne glede na to, ali se s tem strinjate ali ne, vsak Američan (in tudi večina Evropejcev) ve, da se pričakuje napitnina in ne dajanje namigov nekomu, ker ni mogel dobiti vašega posebnega naročila ali pa vam ni napolnil kozarca za vodo, ko ste ga končali je grozno početje. ti ljudje si razbijajo rit, da bi se potrudili, da se imaš lepo. okolje ne dopušča lenarjenja, zato bi lahko, če se nekdo počasi premika, imel kaj drugega. samo zato, ker trenutno ni gneče, ne pomeni, da kuharji nimajo petdeset vstopnic, na katerih delajo. in če se vam zdi, da vam nekdo daje odnos, je to lahko zato, ker jih je kuhar, kot sem jaz, pravkar prežvečil, ker je izgubil vstopnico, ali ker je danes že dvanajstič neka stranka naročila srednje redek zrezek, dobila srednje redek zrezek, vztrajal, da je v resnici srednje ali celo nekaj smešnega, na primer dobro opravljeno (to se je zgodilo danes), nato pa ga poslal nazaj in ni dal napitnine, ker so na svojem zrezku dobili "napačno". namigajte svojemu strežniku

Nikoli nisem rekel, da ne dajem napitnin, ker se zgodijo napake ali ker je zaposlen ali počasen.

Ne bom dal napitnine nekomu, ki mi nudi neumne storitve. Vsekakor ne bo.

To nima nobene zveze s kakovostjo hrane, časom, ki ga je treba postreči, ali s tem, da je pravilno. Nekateri moji največji nasveti so ostali po tem, ko sem narobe pokvaril. Enkrat in samo enkrat v življenju sem prosil za pogovor z menedžerjem in to ni bilo zato, ker je bilo naročilo narobe. To je bilo zato, ker je bil strežnik kurac. Če bi ga videl v baru, bi ga udaril v čeljust.


Na primer: veliko hodim z ženo v HuHot. Všeč ji je smešna hrana, mislim, da je smešno, da nekomu plačam 14 dolarjev, da lahko opravim večino dela. Strežnik ne obravnava nobenega glavnega obroka. Odlični so, sprejemajo naročila pijač in prinašajo soli/riž. Vedno znova je ista rutina. Toda vsakič, ko grem tja, dobim drug strežnik (pričakujem, da je promet zelo velik) in vsakič, ko je storitev neumno slaba. Pijače 15 minut sedijo suhe (tudi potem, ko zahtevate polnjenje. Razumem, da tečete naokrog, če pa kdo to zahteva, pač to storite), se riž ohladi (to je iz kuhalnika za riž, zato če je mrzlo, kar pomeni, da so ga pustili predolgo sedeti. In popolnoma pričakujem, da ga strežnik popravi, tako kot večina mest za prilogo solat in podobno), ali pa je moja pijača napačna stvar.


Če strežniku ni všeč njihovo delo, pojdite naprej. Trgovine z živili in tovornjaki za smeti potrebujejo tudi zaposlene.

Nekoč sem že dolgo nazaj delal kot kuhar, strežnik in celo pomivalni stroj v nekaj restavracijah-od picerij do restavracij s štirimi zvezdicami. Dejansko vam lahko povem, da sem zaslužil veliko več denarja, ko sem dobro opravljal svoje delo, kot ko sem bil neroden kurac.


Če bi radi videli vznemirljivo vzdušje, bi vam ponudil, da se z mano odpravite v dolgo izmeno in morda bomo v večjem trgovskem centru dobili večjo travmo zaradi več žrtev ali srčni zastoj.


Če bi le nekdo potegnil pipo in mi izročil pridelovalca, bi lahko dobil razliko v dolarju. Če mi bodo dali dober nasvet glede priprave piva, ponudili dobre zamenjave za najljubšo ali nasvete o nečem novem, bi lahko dobili nekaj dolarjev.

Če se počutim, kot da nisem samo še en denar, bodo verjetno obilno nagrajeni. Če se mi zdijo, kot da bi moral denar porabiti drugje, bom verjetno.


Kontrolni seznam delovanja sprednjega dela 2021

Ta priročnik so prijazno podprli naši prijatelji v storitvi LogRocket, ki združuje spremljanje delovanja zunanjih naprav, ponovitev sej in analitika izdelkov, ki vam pomagajo zgraditi boljše uporabniške izkušnje. LogRocket sledi ključnim meritvam, vklj. DOM dokončan, čas do prvega bajta, prvi vhodni zamik, odjemalčev procesor in poraba pomnilnika. Brezplačno preizkusite LogRocket še danes.

Spletna uspešnost je težavna zver, kajne? Kako pravzaprav vemo, kje smo glede uspešnosti in kaj točno so naša ozka grla pri uspešnosti? Je drag JavaScript, počasno dostavo spletnih pisav, težke slike ali počasno upodabljanje? Ali smo dovolj optimizirali s tresenjem dreves, dviganjem obsega, delitvijo kod in vsemi domišljijskimi vzorci nalaganja z opazovalnikom presečišč, postopno hidracijo, namigi strank, HTTP/3, uslužbenci in & mdash oh & mdash edge delavci? In kar je najpomembneje, kje sploh začnemo izboljševati uspešnost in kako dolgoročno vzpostavimo kulturo uspešnosti?

Nekoč je bila predstava pogosto zgolj zgolj naknadna misel. Pogosto odloženo do samega konca projekta, bi se to zmanjšalo na pomanjšanje, združevanje, optimizacijo sredstev in potencialno nekaj drobnih prilagoditev v konfiguracijski datoteki strežnika. Če pogledamo nazaj, se zdi, da so se stvari precej spremenile.

Uspešnost ni le tehnična skrb: vpliva na vse, od dostopnosti do uporabnosti do optimizacije iskalnikov, pri vpenjanju v delovni tok pa je treba oblikovalske odločitve upoštevati glede na njihove učinke. Učinkovitost je treba stalno meriti, spremljati in izboljševatiin vse večja zapletenost spleta postavlja nove izzive, zaradi katerih je težko spremljati meritve, saj se bodo podatki močno razlikovali glede na napravo, brskalnik, protokol, vrsto omrežja in zakasnitve (CDN -ji, ponudniki internetnih storitev, predpomnilniki, pooblaščenci, požarni zidovi, izravnalniki obremenitve in strežniki imajo pomembno vlogo pri zmogljivosti).

Če bi torej ustvarili pregled vseh stvari, ki jih moramo upoštevati pri izboljšanju uspešnosti & mdash od samega začetka projekta do končne izdaje spletnega mesta & mdash, kako bi to izgledalo? Spodaj boste našli (upam, da nepristranski in objektivni) sprednji kontrolni seznam uspešnosti za leto 2021 & mdash posodobljen pregled vprašanj, ki jih boste morda morali upoštevati, da zagotovite, da so vaši odzivni časi hitri, interakcija uporabnikov nemotena in da vaša spletna mesta ne izčrpajo pasovne širine uporabnika.

Kazalo


    Kultura uspešnosti, Core Web Vitals, profili zmogljivosti, CrUX, Lighthouse, FID, TTI, CLS, naprave.
    Proračuni za uspešnost, cilji uspešnosti, okvir RAIL, proračuni 170 KB/30 KB.
    Izbira ogrodja, osnovni stroški delovanja, Webpack, odvisnosti, CDN, sprednja arhitektura, CSR, SSR, CSR + SSR, statično upodabljanje, vnaprejšnje upodabljanje, vzorec PRPL.
    Brotli, AVIF, WebP, odzivne slike, AV1, nalaganje prilagodljivih medijev, stiskanje videa, spletne pisave, Googlove pisave.
    Moduli JavaScript, vzorec modula/nomodula, tresenje dreves, deljenje kode, dvig obsega, Webpack, diferencialno streženje, spletni delavec, WebAssembly, svežnji JavaScript, React, SPA, delna hidracija, uvoz pri interakciji, tretje osebe, predpomnilnik.
    Leno nalaganje, opazovalec križišč, odloži upodabljanje in dekodiranje, kritični CSS, pretakanje, namigi na vire, premiki postavitve, uslužbenec.
    OCSP spenjanje, EV/DV certifikati, embalaža, IPv6, QUIC, HTTP/3.
    Revizija poteka dela, brskalniki proxy, 404 strani, pozivi za soglasje piškotkov GDPR, CSS za diagnostiko delovanja, dostopnost.

(Lahko tudi prenesete kontrolni seznam PDF (166 KB) ali naložite datoteko Apple Pages, ki jo je mogoče urejati (275 KB) ali datoteko .docx (151 KB). Vesela optimizacija, vsi!)

Priprava: Načrtovanje in meritve

Mikro optimizacije so odlične za ohranjanje uspešnosti, vendar je ključnega pomena, da imate v mislih jasno določene cilje & mdash merljivo cilje, ki bi vplivali na vse odločitve, sprejete v celotnem procesu. Obstaja nekaj različnih modelov, spodaj obravnavani pa so precej samozavestni, zato se prepričajte, da si že vnaprej določite svoje prioritete.

    Vzpostavite kulturo performansa.
    V mnogih organizacijah front-end razvijalci natančno vedo, kaj so skupne osnovne težave in katere strategije je treba uporabiti za njihovo odpravo. Dokler pa ne bo uveljavljene potrditve kulture izvajanja, se bo vsaka odločitev spremenila v bojišče oddelkov, ki bo organizacijo razpadlo v silose. Potrebujete vstop za zainteresirane strani v podjetju, da ga dobite, morate sestaviti študijo primera ali dokaz koncepta o tem, kako hitrost-zlasti Core Web Vitals ki jih bomo podrobneje obravnavali kasneje - meritve koristi in ključni kazalniki uspešnosti (KPI -ji) jim je mar.

Na primer, da bi bila uspešnost bolj oprijemljiva, lahko izpostavite vpliv na uspešnost prihodkov tako, da prikažete korelacijo med stopnjo konverzije in časom do nalaganja aplikacije ter upodobite uspešnost. Ali stopnja iskanja po iskalnem botu (PDF, strani 27–50).

Brez močne usklajenosti med ekipami za razvoj/oblikovanje in podjetji/trženje uspešnost ne bo dolgoročno vzdržala. Preučite pogoste pritožbe, ki prihajajo v službo za stranke in prodajno skupino, preučite analitiko za visoke stopnje obiskov ene strani in padce konverzij. Raziščite, kako lahko izboljšanje učinkovitosti odpravi nekatere od teh pogostih težav. Argument prilagodite glede na skupino zainteresiranih strani, s katerimi govorite.

Izvedite poskuse uspešnosti in merite rezultate & mdash tako v mobilnih napravah kot v namiznih računalnikih (na primer z Google Analytics). Pomagal vam bo pri izdelavi študije primera, prilagojene podjetju, z resničnimi podatki. Poleg tega bo uporaba podatkov iz študij primerov in poskusov, objavljenih na WPO Stats, pripomogla k večji občutljivosti za podjetja, zakaj je uspešnost pomembna in kakšen vpliv ima na uporabniško izkušnjo in poslovne meritve. Navedba, da je samo uspešnost pomembna, pa tudi mdash morate določiti nekaj merljivih in sledljivih ciljev ter jih sčasoma opazovati.

Kako priti do tja? V svojem govoru o dolgoročni izgradnji uspešnosti Allison McKnight deli obsežno študijo primera, kako je pomagala vzpostaviti kulturo performansa v Etsyju (diapozitivi). V zadnjem času je Tammy Everts govorila o navadah zelo učinkovitih skupin za uspešnost tako v majhnih kot v velikih organizacijah.

Med pogovorom v organizacijah je pomembno upoštevati, da je tako kot UX spekter izkušenj, tako tudi spletno delovanje distribucija. Kot je opozorila Karolina Szczur, "je pričakovanje, da bo ena številka sposobna zagotoviti oceno, ki si jo prizadeva, napačna predpostavka." Zato morajo biti cilji uspešnosti natančni, sledljivi in ​​oprijemljivi.

Če želite dobiti dober prvi vtis o uspešnosti vaših konkurentov, lahko uporabite poročilo Chrome UX (CrUX, že pripravljen nabor podatkov RUM, video uvod Ilya Grigorik in podroben vodnik Rick Viscomi) ali Treo, orodje za spremljanje RUM, ki ga poganja poročilo Chrome UX. Podatki se zbirajo od uporabnikov brskalnika Chrome, zato bodo poročila specifična za Chrome, vendar vam bodo omogočila dokaj temeljito porazdelitev uspešnosti, najpomembnejše ocene Core Web Vitals, med širokim krogom vaših obiskovalcev. Upoštevajte, da so na spletnem mestu objavljeni novi nabori podatkov CrUX drugi torek v mesecu.

Lahko pa uporabite tudi:

Opomba: Če uporabljate Page Speed ​​Insights ali Page Speed ​​Insights API (ne, ni zastarelo!), Lahko dobite podatke o uspešnosti CrUX za določene strani namesto samo agregatov. Ti podatki so lahko veliko bolj uporabni za določanje ciljev uspešnosti za sredstva, kot sta »ciljna stran« ali »seznam izdelkov«. Če uporabljate CI za preizkušanje proračunov, se morate prepričati, da se preizkušeno okolje ujema z CrUX, če ste za nastavitev cilja uporabili CrUX (hvala Patrick Meenan!).

Če potrebujete pomoč, da prikažete razloge za določanje prioritet hitrosti, ali želite vizualizirati upadanje stopnje konverzije ali povečanje stopnje obiskov ene strani s počasnejšo uspešnostjo, ali pa bi se morali v svoji organizaciji zavzeti za rešitev RUM, Sergey Chernyshev je izdelal kalkulator hitrosti UX, odprtokodno orodje, ki vam pomaga simulirati podatke in jih vizualizirati, da preusmeri vašo točko.

CrUX ustvari pregled porazdelitve zmogljivosti skozi čas, pri čemer promet zbirajo uporabniki brskalnika Google Chrome. Na nadzorni plošči Chrome UX lahko ustvarite svojega. (Velik predogled) Ravno takrat, ko morate dokazati uspešnost, da dosežete svoj cilj: UX kalkulator hitrosti vizualizira vpliv uspešnosti na stopnje obiskov ene strani, konverzije in skupni prihodek & mdash na podlagi resničnih podatkov. (Velik predogled)

Včasih boste morda želeli iti nekoliko globlje in združiti podatke, ki prihajajo iz CrUX -a, z vsemi drugimi podatki, ki jih že morate hitro ugotoviti, kje so upočasnitve, slepe pege in neučinkovitosti & mdash za vaše konkurente ali za vaš projekt. Harry Roberts je pri svojem delu uporabljal preglednico topografije hitrosti spletnega mesta, ki jo uporablja za razčlenjevanje uspešnosti po ključnih vrstah strani in spremlja, kako različne so ključne meritve na njih. Preglednico lahko prenesete kot Google Preglednice, Excel, dokument OpenOffice ali CSV.

Topografija hitrosti spletnega mesta s ključnimi meritvami za ključne strani na spletnem mestu. (Velik predogled)

In če želite iti vse Na ta način lahko izvedete revizijo zmogljivosti Lighthouse na vsaki strani spletnega mesta (prek Lightouse Parade), pri čemer je izhod shranjen kot CSV. To vam bo pomagalo ugotoviti, katere posebne strani (ali vrste strani) vaših konkurentov so slabše ali boljše, in na kaj bi se lahko osredotočili. (Za vaše spletno mesto je verjetno bolje, da podatke pošljete do končne točke analitike!).

Z Lighthouse Parade lahko zaženete revizijo delovanja Lighthouse na vsaki strani spletnega mesta z izhodom, shranjenim kot CSV. (Velik predogled)

Zberite podatke, nastavite preglednico, odstranite 20%in določite svoje cilje (proračuni za uspešnost) Na ta način. Zdaj morate preizkusiti nekaj merljivega. Če imate v mislih proračun in poskušate odpremiti le minimalno korist, da dobite hiter čas do interaktivnosti, ste na razumni poti.

Potrebujete vire za začetek?

  • Addy Osmani je napisal zelo podroben opis, kako začeti s pripravo proračuna za uspešnost, kako količinsko opredeliti vpliv novih funkcij in kje začeti, ko proračun preseže.
  • Vodnik Lare Hogan o tem, kako pristopiti k oblikovanju s proračunom za uspešnost, lahko oblikovalcem pomaga v pomoč.
  • Harry Roberts je objavil priročnik o nastavitvi Google lista za prikaz vpliva skript drugih proizvajalcev na zmogljivost z uporabo zemljevidov zahtev,
  • Kalkulator proračuna uspešnosti Jonathana Fieldinga, kalkulator proračuna proračuna Katie Hempenius in brskalniške kalorije lahko pomagajo pri ustvarjanju proračuna (zahvaljujoč Karolini Szczur za opozorilo).
  • V mnogih podjetjih proračuni za uspešnost ne bi smeli biti ambiciozni, ampak bolj pragmatični in služiti kot zadrževalni znak, da se izognete zdrsu čez določeno točko. V tem primeru lahko za prag izberete najslabšo podatkovno točko v zadnjih dveh tednih in jo vzamete od tam. Proračuni za uspešnost, Pragmatično vam pokažejo strategijo za to.
  • Naredite tudi proračun za uspešnost in trenutno uspešnost vidno z nastavitvijo nadzornih plošč z grafi, ki poročajo o velikostih gradnje. Obstaja veliko orodij, ki vam to omogočajo: nadzorna plošča SiteSpeed.io (odprtokodna koda), SpeedCurve in Calibre je le nekaj njih, več orodij pa najdete na perf.rocks.

Ko imate pripravljen proračun, jih vključite v svoj postopek gradnje z namigi o uspešnosti Webpack in Bundlesize, LI Lighthouse CI, PWMetrics ali Sitespeed CI, da uveljavite proračune na zahtevkih za vlečenje in v komentarjih za PR vnesete zgodovino rezultatov.

Če želite predstaviti proračune za uspešnost celotni skupini, vključite proračune za uspešnost v Lighthouse prek Lightwalleta ali uporabite LHCI Action za hitro integracijo Github Actions. Če potrebujete nekaj po meri, lahko za izdelavo grafikonov iz rezultatov WebPagetest uporabite webpagetest-charts-api, API končnih točk.

Zavedanje uspešnosti pa ne bi smelo izhajati samo iz proračuna za uspešnost. Tako kot Pinterest lahko tudi vi ustvarite po meri eslint pravilo, ki onemogoča uvoz iz datotek in imenikov, za katere je znano, da so odvisni od odvisnosti, in bi povečal sveženj. Nastavite seznam "varnih" paketov, ki jih lahko delite s celotno ekipo.

Razmislite tudi o kritičnih nalogah strank, ki so najbolj koristne za vaše podjetje. Preučite, razpravljajte in določite sprejemljivo časovni pragi za kritična dejanja in določiti časovne oznake uporabnikov, pripravljene za UX, ki jih je odobrila celotna organizacija. V mnogih primerih se bodo potovanja uporabnikov dotaknila dela številnih različnih oddelkov, zato bo usklajevanje glede na sprejemljiv čas pomagalo podpreti ali preprečiti razprave o uspešnosti. Prepričajte se, da so dodatni stroški dodatnih virov in funkcij vidni in razumljivi.

Usklajevanje prizadevanj za uspešnost z drugimi tehnološkimi pobudami, od novih funkcij izdelanega izdelka do preoblikovanja do doseganja nove svetovne publike. Zato je vsakič, ko se zgodi pogovor o nadaljnjem razvoju, del tega pogovora tudi uspešnost. Veliko lažje je doseči cilje uspešnosti, ko je koda sveža ali se šele preoblikuje.

Tudi, kot je predlagal Patrick Meenan, je vredno načrtujte zaporedje nakladanja in kompromise med postopkom oblikovanja. Če zgodaj določite, kateri deli so bolj kritični, in določite vrstni red, v katerem bi morali biti prikazani, boste tudi vedeli, kaj lahko zamuja. V idealnem primeru bi to naročilo odražalo tudi zaporedje uvažanja CSS in JavaScript, zato bo njihovo ravnanje med postopkom izdelave lažje. Upoštevajte tudi, kakšna bi morala biti vizualna izkušnja v "vmesnih" stanjih, ko se stran nalaga (na primer, ko spletne pisave še niso naložene).

Ko vzpostavite močno kulturo uspešnosti v svoji organizaciji, si prizadevajte biti 20% hitreje kot nekdanji jaz ohraniti prednostne naloge s časom ((hvala, Guy Podjarny!). Upoštevajte pa različne vrste in vedenje uporabe vaših strank (ki jih je Tobias Baldauf imenoval kadenca in kohorte), skupaj z botovim prometom in sezonskimi učinki.

Načrtovanje, načrtovanje, načrtovanje. Morda bi bilo skušnjava, da bi že na začetku & mdash začeli z nekaterimi hitrimi optimizacijami "nizko visečih plodov", morda pa bi bila to dobra strategija za hitre zmage & mdash, vendar bo zelo težko ohraniti uspešnost prednostno, ne da bi načrtovali in postavili realno podjetje -prilagojeni cilji uspešnosti.

Kaj to pomeni? Namesto da se osredotočite na čas nalaganja celotne strani (prek onLoad in DOMContentLoaded časovni razporedi, na primer), dajte prednost nalaganju strani po mnenju strank. To pomeni, da se osredotočite na nekoliko drugačen nabor meritev. Pravzaprav je izbira prave metrike postopek brez očitnih zmagovalcev.

Na podlagi raziskav Tima Kadleca in zapiskov Marcosa Iglesiasa v svojem govoru, tradicionalne metrike lahko združimo v nekaj sklopov. Običajno jih potrebujemo za popolno predstavo o uspešnosti, v vašem primeru pa bodo nekatere pomembnejše od drugih.

  • Meritve, ki temeljijo na količini izmerite število zahtev, težo in oceno uspešnosti. Dobro za sprožanje alarmov in spremljanje sprememb skozi čas, ni tako dobro za razumevanje uporabniške izkušnje.
  • Mejniki mejnika stanja uporabe v življenjski dobi procesa nalaganja, npr. Čas do prvega bajta in Čas do interaktivnosti. Dobro za opisovanje uporabniške izkušnje in spremljanje, ne tako dobro za poznavanje dogajanja med mejniki.
  • Upodobitev meritev podajte oceno, kako hitro se upodobi vsebina (npr. Zaženi upodabljanje čas, Indeks hitrosti). Dobro za merjenje in prilagajanje upodabljanja, vendar ne tako dobro za merjenje kdaj pomembno se prikaže vsebina in z njo lahko komunicirate.
  • Meritve po meri izmeriti določen dogodek po meri za uporabnika, npr. Twitter's Time To First Tweet in Pinterestov PinnerWaitTime. Dobro za natančno opisovanje uporabniške izkušnje, ni tako dobro za povečanje meritev in primerjavo s konkurenti.

Za dokončanje slike smo običajno iskali koristne meritve med vsemi temi skupinami. Običajno so najbolj specifični in pomembni:

    (TTI)
    Točka, na kateri ima postavitev stabilizirano, so vidne ključne spletne pisave, glavna nit pa je na voljo dovolj za rokovanje z vnosom uporabnika & mdash v bistvu časovno oznako, ko lahko uporabnik komunicira z uporabniškim vmesnikom. Ključne meritve za razumevanje, koliko počakaj uporabnik mora doživeti, da spletno mesto uporablja brez zamika. Boris Schapira je napisal podrobno objavo o tem, kako zanesljivo izmeriti TTI. (FID), oz Odzivnost vnosa
    Čas od prve interakcije uporabnika z vašim spletnim mestom do trenutka, ko je brskalnik dejansko sposoben odzvati na to interakcijo. TTI zelo dobro dopolnjuje, saj opisuje manjkajoči del slike: kaj se zgodi, ko uporabnik dejansko komunicira s spletnim mestom. Namenjeno samo kot meritev RUM. V brskalniku je knjižnica JavaScript za merjenje FID. (LCP)
    Označi točko na časovni premici nalaganja strani, ko je stran pomembne vsebine se je verjetno naložil. Predpostavka je, da je najpomembnejši element strani največji, viden v uporabniškem oknu. Če so elementi upodobljeni nad in pod pregibom, velja le vidni del. (TBT)
    Meritev, ki pomaga količinsko opredeliti resnost neinteraktivne strani preden je postala zanesljivo interaktivna (to pomeni, da je glavna nit brez nalog, ki trajajo več kot 50 ms (dolge naloge) vsaj 5 sekund). Meritev meri skupni čas med prvo barvo in časom do interakcije (TTI), kjer je bila glavna nit blokirana dovolj dolgo, da se prepreči odzivnost vnosa. Nič čudnega torej, da je nizek TBT dober pokazatelj dobrega delovanja. (hvala, Artem, Phil) (CLS)
    Meritev poudarja, kako pogosto uporabniki doživijo nepričakovano premiki postavitve (preoblikuje) pri dostopu do spletnega mesta. Preučuje nestabilno elementi in njihov vpliv na splošno izkušnjo. Nižji kot je rezultat, tem bolje.
    Meri, kako hitro se vsebina strani vizualno naseli, čim nižja je ocena, tem bolje. Ocena indeksa hitrosti se izračuna na podlagi hitrost vizualnega napredka, vendar je le izračunana vrednost. Občutljiv je tudi na velikost oglednega polja, zato morate določiti vrsto preskusnih konfiguracij, ki ustrezajo vaši ciljni publiki. Upoštevajte, da postaja vse manj pomemben, saj postaja LCP vse pomembnejša metrika (hvala, Boris, Artem!).
  • Porabljen čas procesorja
    Meritev, ki prikazuje kako pogosto in kako dolgo glavna nit je blokirana, dela na slikanju, upodabljanju, skriptiranju in nalaganju. Visok čas procesorja je jasen pokazatelj a janky ko uporabnik doživi opazen zamik med svojim dejanjem in odzivom. S programom WebPageTest lahko na zavihku "Chrome" izberete "Časovna os orodja za snemanje orodij za razvijalce", da razkrijete razčlenitev glavne niti, ki se izvaja v kateri koli napravi, ki uporablja WebPageTest.
    Tako kot pri Porabljen čas procesorja, ta metrika, ki jo je predlagal Stoyan Stefanov, raziskuje vpliv JavaScripta na procesor. Zamisel je, da bi uporabili število navodil procesorja na komponento, da bi ločeno razumeli njihov vpliv na splošno izkušnjo. Lahko se izvede z uporabo lutke in Chroma.
    Medtem ko številne zgoraj navedene meritve pojasnjujejo, kdaj se zgodi določen dogodek, FrustrationIndex Tima Vereeckeja obravnava vrzeli med meritvami, namesto da bi jih gledali posamično. Obravnava ključne mejnike, ki jih zazna končni uporabnik, na primer naslov je viden, prva vsebina je vidna, vizualno pripravljen in stran izgleda pripravljena ter izračuna rezultat, ki kaže stopnjo frustracije med nalaganjem strani. Večja je vrzel, večja je možnost, da bo uporabnik razočaran. Potencialno dober KPI za uporabniško izkušnjo. Tim je objavil podrobno objavo o FrustrationIndexu in njegovem delovanju.
    Če je vaše spletno mesto odvisno od prihodkov od oglaševanja, je koristno slediti teži kode, povezane z oglasom. Scenarij Paddyja Gantija ustvari dva URL -ja (enega običajnega in enega, ki blokira oglase), pozove k ustvarjanju primerjave videa prek WebPageTesta in poroča o delti.
    Kot so zapisali inženirji Wikipedije, podatki o tem, koliko variance obstajajo v vaših rezultatih, bi vas lahko obvestili o tem, kako zanesljivi so vaši instrumenti in koliko pozornosti morate nameniti odstopanj in odstopanj. Velika razlika je pokazatelj potrebnih prilagoditev pri nastavitvi. Pomaga tudi pri razumevanju, ali je nekatere strani težje zanesljivo izmeriti, npr. zaradi skript drugih proizvajalcev, ki povzročajo znatne razlike. Morda bi bilo dobro tudi slediti različici brskalnika, da bi razumeli povečanje zmogljivosti, ko se uvede nova različica brskalnika.
    Meritve po meri so določene glede na vaše poslovne potrebe in izkušnje strank. Zahteva, da se identificirate pomembno slikovnih pik, kritično skripte, potrebno CSS in ustrezne sredstva in izmerite, kako hitro bodo dostavljeni uporabniku. V tem primeru lahko spremljate Hero Rendering Times ali uporabite Performance API in označite posebne časovne žige za dogodke, ki so pomembni za vaše podjetje. Z WebPagetestom lahko zberete tudi meritve po meri, tako da na koncu preskusa izvedete poljuben JavaScript.

Upoštevajte, da je prva smiselna barva (FMP) ni prikazano v zgornjem pregledu. Včasih je omogočal vpogled v to, kako hitro strežnik prikaže podatke kaj podatkov. Dolg FMP je običajno označeval, da JavaScript blokira glavno nit, lahko pa je povezan tudi z zalednimi/strežniškimi težavami. Vendar je bila meritev nedavno opuščena, saj se zdi, da v približno 20% primerov ni točna. Učinkovito je bil zamenjan z LCP, ki je zanesljivejši in lažje razumljiv. V Lighthouseu ni več podprt. Dvakrat preverite najnovejše meritve uspešnosti in priporočila, ki so osredotočena na uporabnike, samo da se prepričate, da ste na varni strani (hvala, Patrick Meenan).

Steve Souders ima podrobno razlago mnogih teh meritev. Pomembno je omeniti, da medtem ko Time-To-Interactive merimo z izvajanjem avtomatiziranih revizij v ti laboratorijsko okolje, First Input Delay predstavlja dejanski uporabniška izkušnja, s dejanski pri uporabnikih opazen zaostanek. Na splošno je verjetno dobro, da oboje vedno izmerite in sledite.

Glede na kontekst vaše prijave se lahko prednostne meritve razlikujejo: npr. za uporabniški vmesnik Netflix TV so odzivnost ključnega vnosa, poraba pomnilnika in TTI bolj pomembni, za Wikipedijo pa so pomembnejše prve/zadnje vizualne spremembe in meritve porabljenega procesorja.

Opomba: FID in TTI ne upoštevata vedenja drsenja. Drsanje se lahko zgodi neodvisno, ker je zunaj glavne niti, zato so te meritve za številna mesta porabe vsebine lahko veliko manj pomembne (hvala, Patrick!).

Google za vsakega od njih priporoča vrsto sprejemljivih ciljev hitrosti. Vsaj 75% vseh ogledov strani bi morala preseči Dober domet da opravi to oceno. Te meritve so se hitro uveljavile, in ker je Core Web Vitals maja 2021 postal signal za uvrstitev v Iskanje Google (Posodobitev algoritma za razvrščanje izkušenj s strani), so se številna podjetja osredotočila na svoje rezultate.

Razčlenimo vsakega od osnovnih spletnih vitalov, enega za drugim, skupaj z uporabne tehnike in orodja da optimizirate svoje izkušnje s temi meritvami v mislih. (Treba je omeniti, da boste s splošnimi nasveti v tem članku dobili boljše ocene Core Web Vitals.)

    (LCP) & lt 2,5 s.
    Meri nalaganje strani in poroča o času upodabljanja datoteke največji slikovni ali besedilni blok to je vidno v oknu za ogled. Zato na LCP vpliva vse, kar odlaša upodabljanje pomembnih informacij, pa naj bodo to počasni odzivni časi strežnika, blokiranje CSS-ja, JavaScript med letom (prvi ali tretji), nalaganje spletnih pisav, drage operacije upodabljanja ali barvanja, leni -naložene slike, skeletni zasloni ali upodabljanje na strani odjemalca.

Za dobro izkušnjo bi se moral pojaviti LCP v 2,5 sekundah od tega, kdaj se stran začne nalagati. To pomeni, da moramo prvi vidni del strani upodobiti čim prej. To bo zahtevalo prilagojen kritični CSS za vsako predlogo, orkestriranje vrstnega reda & lthead & gt in vnaprejšnje pridobivanje kritičnih sredstev (obravnavali jih bomo kasneje).

Glavni razlog za nizek rezultat LCP so običajno slike. Za dostavo LCP v & lt2,5s na Fast 3G & mdash, ki gostuje na dobro optimiziranem strežniku, vse statično brez upodabljanja na strani odjemalca in s sliko, ki prihaja iz namenskega CDN-ja za slike & mdash, pomeni, da največja teoretična velikost slike je le okoli 144 KB. Zato so odzivne slike pomembne, pa tudi predhodno nalaganje kritičnih slik (s predhodnim nalaganjem).

Hiter namig: če želite odkriti, kaj se na strani šteje za LCP, lahko v orodju DevTools premaknete miškin kazalec nad značko LCP pod "Časi" na plošči uspešnosti (hvala, Tim Kadlec!).

(FID) & lt 100ms.
Meri odzivnost uporabniškega vmesnika, tj. koliko časa je brskalnik zaposlen z drugimi opravili, preden bi se lahko odzval na dogodek diskretnega vnosa uporabnika, kot je dotik ali klik. Zasnovan je tako, da zajame zamude, ki so posledica zasedenosti glavne niti, zlasti med nalaganjem strani.

Cilj je ostati znotraj 50–100 ms za vsako interakcijo. Če želimo priti tja, moramo identificirati dolga opravila (blokira glavno nit za & gt50ms) in jih razčleniti, kodo razdeliti na več kosov, skrajšati čas izvajanja JavaScript, optimizirati pridobivanje podatkov, odložiti izvajanje skriptov tretjih oseb, premaknite JavaScript v nit ozadja s spletnimi delavci in uporabite postopno hidracijo, da zmanjšate stroške rehidracije v POV.

Hiter namig: na splošno je zanesljiva strategija za boljši rezultat FID zmanjšajte delo na glavni niti z razbijanjem večjih svežnjev na manjše in postrežbo s tem, kar uporabnik potrebuje, ko ga potrebuje, tako da interakcije uporabnikov ne bodo zamujale. Več o tem bomo podrobneje obravnavali spodaj.

(CLS) & lt 0,1.
Ukrepi vizualna stabilnost uporabniškega vmesnika za zagotovitev nemotenih in naravnih interakcij, to je vsota vseh rezultatov posameznih premikov postavitve za vsako nepričakovano spremembo postavitve, ki se pojavi med življenjsko dobo strani. Do posameznega premika postavitve pride, kadar element, ki je bil že viden, spremeni svoj položaj na strani. Ocenjuje se glede na velikost vsebine in razdaljo, ki jo je premaknil.

Tako se vsakič, ko se pojavi premik - npr. če imajo nadomestne pisave in spletne pisave različne meritve pisav ali oglase, vdelane ali okvirne okvire, ki prihajajo pozno, ali dimenzije slike/videoposnetka niso rezervirane, ali pozno CSS preoblikuje, ali pa spremembe vnese pozni JavaScript & mdash, to vpliva na rezultat CLS. Priporočena vrednost za dobro izkušnjo je CLS & lt 0,1.

Omeniti velja, da naj bi se Core Web Vitals sčasoma razvijali skupaj z predvidljiv letni cikel. Za prvo leto posodobitve lahko pričakujemo, da bo First Contentful Paint napredoval v Core Web Vitals, znižan prag FID in boljšo podporo za enostranske aplikacije. Morda bomo opazili tudi odziv na vnose uporabnikov, potem ko bo obremenitev dobila večjo težo, skupaj z varnostjo, zasebnostjo in dostopnostjo (!).

V zvezi s Core Web Vitals obstaja veliko uporabnih virov in člankov, ki jih je vredno preučiti:

    vam omogoča, da primerjate svoje rezultate s konkurenco v mobilnih napravah, tabličnih računalnikih, namiznih računalnikih ter v 3G in 4G. , razširitev za Chrome, ki v rezultatih Googlovega iskanja prikazuje osnovne spletne podatke podjetja CrUX. ki vizualizira CLS s preprostim GIF -om (na voljo tudi iz ukazne vrstice). lahko zbira in pošilja Core Web Vitals v Google Analytics, Google Tag Manager ali katero koli drugo analitično končno točko. , v katerem Patrick Meenan raziskuje, kako WebPageTest izpostavlja podatke o Core Web Vitals. , 50-minutni videoposnetek z Addyjem Osmanijem, v katerem v študiji primera e-trgovine poudarja, kako izboljšati Core Web Vitals. in Kumulative Layout Shift v resničnem svetu sta obsežna članka Nic Jansma, ki zajemata skoraj vse o CLS -ju in njegovem povezovanju s ključnimi meritvami, kot so stopnja obiskov ene strani, čas seje ali kliki jeze. , s pregledom lastnosti ali metod, na zahtevo/klic v JavaScript, ki bo brskalnik sprožil za sinhrono izračun sloga in postavitve. prikazuje, katere lastnosti CSS sprožijo Layout, Paint in Composite. je predstavitev uporabe WebPageTesta za odkrivanje in odpravljanje težav z nestabilnostjo postavitve. , še en zelo podroben vodnik Borisa Schapire o CLS, kako se izračuna, kako meriti in kako ga optimizirati. , podroben vodnik Simona Hearna o vsaki od meritev (vključno z drugimi spletnimi pomembnostmi, kot so FCP, TTI, TBT), kdaj se pojavijo in kako se merijo.

Ali so torej Core Web Vitals vrhunske meritve, ki jim je treba slediti? Ne čisto. Res so že izpostavljeni v večini rešitev in platform RUM, vključno z Cloudflare, Treo, SpeedCurve, Calibre, WebPageTest (v pogledu filma že), Newrelic, Shopify, Next.js, vsa Googlova orodja (PageSpeed ​​Insights, Lighthouse + CI, Search Konzola itd.) In mnogi drugi.

Vendar, kot pojasnjuje Katie Sylor-Miller, so nekatere glavne težave pri Core Web Vitals pomanjkanje podpore med brskalniki, v resnici ne merimo celotnega življenjskega cikla uporabniške izkušnje, poleg tega pa je težko povezati spremembe v FID in CLS s poslovnimi rezultati.

Ker bi morali pričakovati, da se bo Core Web Vitals razvil, se zdi vedno smiselno kombinirati Spletni podatki s svojimi meritvami, prilagojenimi meri, da boste bolje razumeli, kje ste glede zmogljivosti.

Po podatkih IDC na svetovni ravni leta 2020 84,8% vseh odpremljenih mobilnih telefonov predstavljajo naprave Android. Povprečen potrošnik svoj telefon nadgradi vsaki 2 leti, v ZDA pa je cikel zamenjave 33 mesecev. Povprečno najbolje prodajani telefoni po vsem svetu bodo stali manj kot 200 USD.

Reprezentativna naprava je torej naprava Android, ki je star najmanj 24 mesecev, stane 200 USD ali manj, deluje na počasnem 3G, 400 ms RTT in 400 kbps prenosu, samo da bi bil nekoliko bolj pesimističen. To je lahko za vaše podjetje seveda zelo različno, vendar je to dovolj približna večina strank. Pravzaprav bi bilo dobro pogledati trenutne Amazon Best Sellers za vaš ciljni trg. (Hvala Timu Kadlecu, Henriju Helvetici in Alexu Russellu za napotke!).

Ko gradite novo spletno mesto ali aplikacijo, vedno najprej preverite trenutne prodajalce Amazon za vaš ciljni trg. (Velik predogled)

Kakšne testne naprave naj potem izberem? Tiste, ki se dobro prilegajo zgoraj opisanemu profilu. Dobra možnost je, da izberete nekoliko starejši Moto G4/G5 Plus, Samsungovo napravo srednjega razreda (Galaxy A50, S8), dobro napravo na srednji poti, kot so Nexus 5X, Xiaomi Mi A3 ali Xiaomi Redmi Note 7 in počasno napravo, kot sta Alcatel 1X ali Cubot X19, morda v odprtem laboratoriju za naprave. Za testiranje na počasnejših napravah s termičnim dušenjem lahko dobite tudi Nexus 4, ki stane le okoli 100 USD.

Preverite tudi nabore čipov, ki se uporabljajo v vsaki napravi, in ne predstavljajte preveč enega nabora čipov: nekaj generacij Snapdragona in Applea ter nizkocenovnega Rockchipa bi zadostoval Mediatek (hvala, Patrick!).

Če pri roki nimate naprave, posnemajte mobilno izkušnjo na namizju s preizkušanjem na omejeno omrežje 3G (npr. 300 ms RTT, 1,6 Mbps navzdol, 0,8 Mbps navzgor) z omejenim CPE -jem (5 -kratna upočasnitev). Sčasoma preklopite na navaden 3G, počasen 4G (npr. 170 ms RTT, 9 Mbps navzdol, 9 Mbps navzgor) in Wi-Fi. Če želite, da bo vpliv na zmogljivost vidnejši, lahko celo uvedete torke 2G ali v svoji pisarni nastavite omejeno omrežje 3G/4G za hitrejše testiranje.

Upoštevajte, da bi morali na mobilni napravi pričakovati upočasnitev 4 × –5 × v primerjavi z namiznimi računalniki. Mobilne naprave imajo različne grafične procesorje, procesor, pomnilnik in različne lastnosti baterije. Zato je pomembno imeti dober profil povprečne naprave in vedno testirati na takšni napravi.

Na srečo obstaja veliko odličnih možnosti, ki vam pomagajo avtomatizirati zbiranje podatkov in izmeriti uspešnost vašega spletnega mesta v skladu s temi meritvami. Upoštevajte, da dobra slika uspešnosti zajema niz meritev uspešnosti, laboratorijskih podatkov in podatkov o terenu:

  • Sintetična orodja za testiranje zbrati laboratorijski podatki v ponovljivem okolju z vnaprej določenimi nastavitvami naprave in omrežja (npr. Svetilnik, Kaliber, WebPageTest) in
  • Pravi nadzor uporabnikov (RUM) orodja neprestano ocenjujejo interakcije uporabnikov in jih zbirajo terenski podatki (npr. SpeedCurve, Nova relikvija & mdash orodja ponujajo tudi sintetično testiranje).

Prvi je še posebej uporaben v času razvoj saj vam bo to pomagalo pri prepoznavanju, izolaciji in odpravljanju težav pri delovanju med delom na izdelku. Slednje je dolgoročno uporabno vzdrževanje saj vam bo pomagal razumeti ozka grla glede uspešnosti, ki se dogajajo v živo & mdash, ko uporabniki dejansko dostopajo do spletnega mesta.

Z dotikom vgrajenih API-jev RUM, kot so čas krmarjenja, čas virov, čas barvanja, dolga opravila itd., Sintetična orodja za testiranje in RUM skupaj zagotavljajo popolno sliko o uspešnosti vaše aplikacije.Uporabite lahko Calibre, Treo, SpeedCurve, mPulse in Boomerang, Sitespeed.io, ki so odlične možnosti za spremljanje zmogljivosti. Poleg tega lahko z glavo časovnika strežnika celo spremljate delovanje vmesnika in vmesnika na enem mestu.

Opomba: Vedno je varnejša izbira dušilcev na ravni omrežja, zunaj brskalnika, saj ima na primer DevTools težave z interakcijo s potiskom HTTP/2 zaradi načina izvajanja (hvala, Yoav, Patrick!). Za Mac OS lahko uporabimo Network Link Conditioner, za Windows Windows Traffic Shaper, za Linux netem in za FreeBSD dummynet.

Ker boste verjetno testirali v Lighthouseu, upoštevajte, da lahko:

    za spremljanje rezultatov Lighthouse -a skozi čas (precej impresivno), za pridobivanje poročila Lighthouse -a ob vsakem PR -ju (preko Lightouse Parade) z izhodom, shranjenim kot CSV,
  • Če se želite poglobiti v podrobnosti, uporabite kalkulator Lighthouse Scores in merilne uteži Lighthouse.
  • Lighthouse je na voljo tudi za Firefox, vendar pod pokrovom uporablja API PageSpeed ​​Insights in ustvari poročilo na podlagi brezglavega uporabniškega agenta Chrome 79.

Vendar pa je dobra ideja tudi preučiti, katero razširitve brskalnika ki jih vaše stranke pogosto uporabljajo in preizkusijo z namenskimi profili "strank" tudi. Pravzaprav bi lahko nekatere razširitve močno vplivale na uspešnost (Poročilo o uspešnosti razširitev za Chrome za leto 2020) na vašo aplikacijo, in če jih uporabniki pogosto uporabljajo, jih boste morda morali vnaprej upoštevati. Zato so "čisti" rezultati profila preveč optimistični in jih je mogoče v resničnih scenarijih potlačiti.

Določanje realnih ciljev

  1. 100-milisekundni odzivni čas, 60 sličic na sekundo.
    Za nemoteno interakcijo ima vmesnik 100 ms, da se odzove na vnos uporabnika. Še dlje in uporabnik aplikacijo dojema kot zaostalo. RAIL, model delovanja, osredotočen na uporabnika, vam ponuja zdrave tarče: Če želite omogočiti odziv & lt100 milisekund, mora stran vrniti nadzor nazaj v glavno nit najpozneje po vsakih & lt50 milisekund. Ocenjena vhodna zakasnitev nam pove, če dosežemo ta prag, v idealnem primeru pa bi morala biti pod 50 ms. Za točke visokega pritiska, kot je animacija, je najbolje, da ne počnete ničesar drugega, kjer lahko, in absolutni minimum, kjer ne morete.

RAIL, model delovanja, osredotočen na uporabnika.

Prav tako je treba vsak okvir animacije dokončati v manj kot 16 milisekundah in s tem doseči 60 sličic na sekundo (1 sekunda in deljenje 60 = 16,6 milisekund) & mdash po možnosti pod 10 milisekund. Ker brskalnik potrebuje čas, da nariše nov okvir na zaslon, bi se morala vaša koda dokončati z izvajanjem, preden doseže oznako 16,6 milisekund. Začenjamo pogovore o 120 sličicah na sekundo (na primer zasloni iPad Pro delujejo pri 120 Hz), Surma pa je zajela nekaj rešitev za upodabljanje za 120 sličic na sekundo, vendar to verjetno ni cilj, na katerega gledamo ravnokar.

Bodite pesimistični pri pričakovanjih glede zmogljivosti, vendar bodite optimistični pri oblikovanju vmesnika in pametno uporabljajte čas mirovanja (preverite idlize, mirovanje do nujnosti in reagiranje v prostem teku). Očitno ti cilji veljajo za zmogljivost izvajalnega okolja in ne za nalaganje zmogljivosti.

(Opomba: ker TCP na splošno premalo uporablja omrežno povezavo, je Google razvil pasovno širino ozkih grl TCP in RRT (BBR), algoritem za nadzor pretoka TCP z zakasnitvijo TCP. Zasnovan za sodoben splet, se odziva na dejansko prezasedenost in ne na izgubo paketov, kot to počne TCP, bistveno hitreje, z večjo prepustnostjo in manjšo zakasnitvijo & mdash, algoritem pa deluje drugače. (hvala, Victor, Barry!)

Po drugi strani pa imamo strojne omejitve na pomnilnik in CPE zaradi časa razčlenjevanja in izvajanja JavaScript (o njih bomo podrobneje govorili kasneje). Za dosego ciljev iz prvega odstavka moramo upoštevati proračun kritične velikosti datoteke za JavaScript. Mnenja se razlikujejo glede tega, kakšen naj bi bil ta proračun (in je močno odvisen od narave vašega projekta), vendar bi za proračun 170KB JavaScript, ki je bil stisnjen v ZIP, za razčlenjevanje in sestavljanje na telefonu srednjega razreda že potreboval 1 sekundo. Ob predpostavki, da se 170KB pri dekompresiji razširi na 3 × to velikost (0,7 MB), bi to lahko že pomenilo smrt "dostojne" uporabniške izkušnje na Moto G4/G5 Plus.

V primeru spletnega mesta Wikipedia je bilo leta 2020 po vsem svetu za uporabnike Wikipedije izvajanje kode 19% hitrejše. Če torej vaše meritve spletne uspešnosti med letom ostajajo stabilne, je to običajno opozorilni znak, kakršni ste v resnici nazadovanje ker se okolje nenehno izboljšuje (podrobnosti v prispevku v spletnem dnevniku avtorja Gilles Dubuc).

Če želite ciljati na rastoče trge, kot so jugovzhodna Azija, Afrika ali Indija, boste morali preučiti zelo različne omejitve. Addy Osmani pokriva glavne omejitve telefonskih funkcij, na primer nekaj nizkocenovnih, visokokakovostnih naprav, nerazpoložljivost visokokakovostnih omrežij in drage mobilne podatke & mdash skupaj z PRPL-30 proračun in razvojne smernice za ta okolja.

Po mnenju Addyja Osmanija je priporočena velikost za leno naložene poti tudi manjša od 35 KB. (Velik predogled) Addy Osmani predlaga proračun uspešnosti PRPL-30 (30 KB gzip + pomanjšani začetni sveženj), če ciljate na funkcijski telefon. (Velik predogled)

Dejansko Googlov Alex Russell priporoča, da si kot razumno zgornjo mejo prizadevate za 130 & ndash170KB gzip. V resničnih scenarijih večina izdelkov niti približno ni blizu: povprečna velikost svežnja je danes okoli 452 KB, kar je 53,6% več kot v začetku leta 2015. Na mobilni napravi srednjega razreda to traja 12 in 20 sekund, Čas do interaktivnosti.

Merila uspešnosti procesorja Geekbench za najbolje prodajane pametne telefone po vsem svetu v letu 2019. JavaScript poudarja enojedrno zmogljivost (ne pozabite, da je sam po sebi bolj enoniten kot preostala spletna platforma) in je vezan na procesor. Iz Addyjevega članka "Hitro nalaganje spletnih strani na telefon s funkcijo 20 USD". (Velik predogled)

Lahko pa presežemo tudi proračun velikosti svežnja. Proračune za uspešnost lahko na primer nastavimo na podlagi dejavnosti glavne niti brskalnika, to je časa barvanja pred začetkom upodabljanja, ali izsledimo vmesne CPU-je. Orodja, kot so Calibre, SpeedCurve in Bundlesize, vam lahko pomagajo nadzorovati proračun in jih lahko vključite v postopek gradnje.

Končno verjetno proračun za uspešnost ne sme biti fiksna vrednost. Odvisno od omrežne povezave bi se morali prilagoditi proračuni za uspešnost, vendar je koristna obremenitev pri počasnejši povezavi veliko dražja, ne glede na to, kako se uporabljajo.

Opomba: Morda se sliši čudno, če bi tako stroge proračune nastavili v času široko razširjenih HTTP/2, prihajajočih 5G in HTTP/3, hitro razvijajočih se mobilnih telefonov in cvetočih SPA. Vendar pa zvenijo razumno, ko obravnavamo nepredvidljivo naravo omrežja in strojne opreme, vključno z vsem, od preobremenjenih omrežij do počasi razvijajoče se infrastrukture, do omejitev podatkov, brskalnikov proxy, načina shranjevanja podatkov in skrivnih stroškov gostovanja.

Opredelitev okolja

  1. Izberite in nastavite orodja za gradnjo.
    Ne bodite preveč pozorni na tiste, ki naj bi bili kul v teh dneh. Pri gradnji se držite svojega okolja, pa naj bo to Grunt, Gulp, Webpack, Parcel ali kombinacija orodij. Dokler dosegate rezultate, ki jih potrebujete, in nimate težav z vzdrževanjem procesa gradnje, ste v redu.

Med orodji za sestavljanje Rollup vedno bolj pridobiva na popularnosti, prav tako Snowpack, vendar se zdi, da je Webpack najbolj uveljavljen, saj je na voljo dobesedno na stotine vtičnikov za optimizacijo velikosti vaših zgradb. Bodite pozorni na časovni načrt Webpack 2021.

Ena najpomembnejših strategij, ki se je pojavila pred kratkim, je zrnato razčlenjevanje z Webpackom v Next.js in Gatsbyju za zmanjšanje podvojene kode. Privzeto je mogoče za poti, ki jih ne uporabljajo, zahtevati module, ki niso v skupni rabi na vsaki vstopni točki. To na koncu postane strošek, saj se prenese več kode, kot je potrebno. Z zrnatim razčlenjevanjem v Next.js lahko uporabimo datoteko datoteka manifesta gradnje strežnika določiti, katere izhodne kose uporabljajo različne vstopne točke.

Za zmanjšanje podvojene kode v projektih Webpack lahko uporabimo podrobno razčlenjevanje, ki je privzeto omogočeno v Next.js in Gatsby. Zasluga za sliko: Addy Osmani (Velik predogled)

S SplitChunksPlugin se ustvari več razdeljenih kosov, odvisno od številnih pogojev, da se prepreči pridobivanje podvojene kode na več poteh. To izboljša čas nalaganja strani in predpomnjenje med navigacijo. Odpremljeno v Next.js 9.2 in v Gatsbyju v2.20.7.

Začetek uporabe Webpacka je lahko težak. Torej, če se želite potopiti v Webpack, obstaja nekaj odličnih virov:

    & mdash je očitno & mdash dobro izhodišče, prav tako Webpack & mdash The Confusing Bits Raja Rao in Annotated Webpack Config Andrew Welch.
  • Sean Larkin ima brezplačen tečaj Webpack: The Core Concepts in Jeffrey Way je za vse objavil fantastičen brezplačen tečaj Webpack. Oba sta odličen uvod za potop v Webpack. je zelo obsežen 4 -urni tečaj s Seanom Larkinom, ki ga je izdal FrontendMasters. ima na stotine pripravljenih konfiguracij Webpack, razvrščenih glede na temo in namen. Bonus: obstaja tudi konfigurator konfiguracije Webpack, ki ustvari osnovno konfiguracijsko datoteko. je kuriran seznam uporabnih virov, knjižnic in orodij Webpack, vključno s članki, videoposnetki, tečaji, knjigami in primeri za projekte Angular, React in okvirno agnostične. je Etsyjeva študija primera o tem, kako je ekipa prešla z uporabe sistema za izdelavo JavaScripta na osnovi RequireJS na uporabo Webpack in kako so optimizirali svoje gradnje, pri čemer so upravljali več kot 13.200 sredstev v 4 min v povprečju. je nit rudnika Ivana Akulova, ki vsebuje številne nasvete, osredotočene na uspešnost, vključno s tistimi, ki so posebej osredotočeni na spletni paket. je zlati rudnik GitHub repo z uporabnimi orodji in vtičniki Webpack za zmogljivost. Vzdržuje tudi Ivan Akulov.

Pravzaprav se zdi, da s prilagajanjem prilagodljivih modulov postopno izboljšanje prehajamo na drugo raven, ki ponuja "lite" jedrne izkušnje napravam nizkega cenovnega razreda in jih izboljšujemo z bolj izpopolnjenimi funkcijami za vrhunske naprave. Postopno izboljšanje verjetno ne bo kmalu izginilo.

S proračunom 170 KB, ki že vsebuje kritično pot HTML/CSS/JavaScript, usmerjevalnik, upravljanje stanja, pripomočke, okvir in logiko aplikacije, moramo temeljito preučiti stroške prenosa omrežja, čas razčlenitve/prevajanja in stroške izvajanja. okvirja po naši izbiri. Na srečo smo v zadnjih nekaj letih opazili velik napredek pri tem, kako hitro lahko brskalniki razčlenijo in sestavijo skripte. Kljub temu je izvajanje JavaScripta še vedno glavno ozko grlo, zato je lahko zelo pozorna na čas izvajanja skripta in omrežje.

Tim Kadlec je izvedel fantastično raziskavo o uspešnosti sodobnih okvirov in jih povzel v članku "Okviri JavaScript imajo stroške". Pogosto govorimo o vplivu samostojnih okvirov, a kot ugotavlja Tim, v praksi to ni redkost v uporabi več okvirjev. Morda starejša različica jQuery, ki se počasi seli v sodobno ogrodje, skupaj z nekaj podedovanimi aplikacijami, ki uporabljajo starejšo različico Angularja. Zato je bolj smiselno raziskati kumulativni stroški bajtov JavaScript in čas izvajanja procesorja, ki lahko uporabniške izkušnje zlahka naredijo komaj uporabne, tudi na napravah višjega razreda.

Na splošno sodobni okviri ne dajejo prednost manj zmogljivim napravam, zato bodo izkušnje na telefonu in na namizju pogosto dramatično drugačne glede na predstave. Po raziskavah spletna mesta z React ali Angular porabijo več časa za CPU kot druga (kar seveda ne pomeni nujno, da je React dražji v CPU kot Vue.js).

Po Timovih besedah ​​je očitno eno: "če za izdelavo spletnega mesta uporabljate okvir, sklepate kompromis v smislu začetni nastop & mdash tudi v najboljših scenarijih. "

Kaj pa, če v celoti odstranite obstoječi okvir na kritičnih straneh? Z Gatsbyjem lahko preverite gatsby-plugin-no-javascript, ki odstrani vse datoteke JavaScript, ki jih je ustvaril Gatsby, iz statičnih datotek HTML. V Vercelu lahko dovolite tudi onemogočanje izvajalnega JavaScripta v proizvodnji za določene strani (poskusno).

Ko izberemo okvir, bomo pri njem ostali vsaj nekaj let, zato, če ga moramo uporabiti, se moramo prepričati, da je naša izbira informirana in dobro premišljena & mdash, kar velja zlasti za ključne meritve uspešnosti, ki jih mar.

Podatki kažejo, da so okvirji privzeto precej dragi: 58,6% strani React naložijo več kot 1 MB JavaScripta, 36% naloženj strani Vue.js pa ima prvo vsebinsko barvo manj kot 1,5 sekunde. Glede na študijo Ankurja Sethija, "vaša aplikacija React se nikoli ne naloži hitreje kot približno 1,1 sekunde na povprečnem telefonu v Indiji, ne glede na to, koliko ga optimizirate. Za zagon vaše aplikacije Angular bo vedno trajalo vsaj 2,7 sekunde. Uporabniki vaše aplikacije Vue bodo morali počakati vsaj 1 sekundo, preden jo bodo lahko začeli uporabljati. "Morda tako ali tako ne ciljate na Indijo kot na svoj primarni trg, vendar bodo imeli uporabniki, ki dostopajo do vašega spletnega mesta s podoptimalnimi omrežnimi pogoji, primerljivo izkušnjo.

Seveda je SPA je mogoče hitro narediti, vendar niso hitri, zato moramo upoštevati čas in trud, potreben za narediti in obdrži jih hitro. Verjetno bo lažje, če že na začetku izberete lahke osnovne stroške delovanja.

Kako torej izberemo okvir? Dobro je razmisliti vsaj skupni stroški velikosti + začetni časi izvedbe, preden izberete možnost, lahke možnosti, kot so Preact, Inferno, Vue, Svelte, Alpine ali Polymer, lahko opravijo delo odlično. Velikost vaše osnovne linije bo določila omejitve za kodo vaše aplikacije.

Kot je opozoril Seb Markbåge, je dober način za merjenje zagonskih stroškov za okvire: najprej upodobi pogled, nato ga izbriši in nato upodobi znova saj vam lahko pove, kako se okvir spreminja. Prvo upodabljanje ponavadi ogreje kopico leno prevedene kode, ki ji lahko koristi večje drevo, ko se poveča. Drugo upodabljanje je v bistvu posnemanje, kako ponovna uporaba kode na strani vpliva na značilnosti delovanja, saj stran postaja vse bolj zapletena.

Lahko bi šli tako daleč, da ocenite svoje kandidate (ali katero koli knjižnico JavaScript na splošno) po 12-točkovnem sistemu točkovanja Sacha Greifa, tako da raziščete funkcije, dostopnost, stabilnost, uspešnost, paketni ekosistem, skupnost, krivulja učenja, dokumentacija, orodja, rezultati, ekipa, združljivost, varnost na primer.

Perf Track spremlja obsežno delovanje okvirja. (Velik predogled)

Zanesete se lahko tudi na podatke, zbrane na spletu v daljšem časovnem obdobju. Perf Track na primer spremlja obsežno delovanje okvirja in prikazuje izvorno združeno Core Web Vitals rezultati za spletna mesta, vgrajena v Angular, React, Vue, Polymer, Preact, Ember, Svelte in AMP. Lahko celo določite in primerjate spletna mesta, zgrajena z Gatsby, Next.js ali Create React App, pa tudi spletna mesta, zgrajena z Nuxt.js (Vue) ali Sapper (Svelte).

Dobro izhodišče je izbira a dober privzeti sklad za vašo prijavo. Gatsby (React), Next.js (React), Vuepress (Vue), Preact CLI in PWA Starter Kit zagotavljajo razumne privzete nastavitve za hitro nalaganje iz škatle na povprečno mobilno strojno opremo. Oglejte si tudi smernice za delovanje, specifične za ogrodje web.dev za React in Angular (hvala, Phillip!).

Morda bi lahko uporabili nekoliko bolj osvežujoč pristop k popolni izdelavi enostranskih aplikacij & mdash Turbolinks, 15-KB knjižnico JavaScript, ki za upodabljanje pogledov uporablja HTML namesto JSON. Ko torej sledite povezavi, Turbolinks samodejno pridobi stran, zamenja njeno & ltbody & gt in združi njeno & lthead & gt, vse brez stroškov polnega nalaganja strani. Ogledate si lahko hitre podatke in celotno dokumentacijo o nizu (Hotwire).

Da bi se temu izognili, vedno prekini izvedbo funkcij v ločena asinhrona opravila in po možnosti uporabite requestIdleCallback. Razmislite o lenem nalaganju delov uporabniškega vmesnika s podporo za dinamični uvoz () WebPack, pri čemer se izognite stroškom nalaganja, razčlenjevanja in sestavljanja, dokler jih uporabniki res ne potrebujejo (hvala Addy!).

Kot že omenjeno, čas do interaktivnosti (TTI) nam pove čas med navigacijo in interaktivnostjo. Podrobno je meritev definirana tako, da pogledate prvo petsekundno okno po upodobitvi začetne vsebine, v katerem ne opravijo nobena opravila JavaScript daljši od 50 ms (Dolge naloge). Če pride do opravila, daljšega od 50 ms, se iskanje pet sekundnega okna začne znova. Posledično bo brskalnik najprej domneval, da je dosegel Interaktivno, samo za preklop na Zamrznjeno, samo da se na koncu preklopite nazaj Interaktivno.

Ko smo prišli Interaktivno, nato lahko & mdash na zahtevo ali kolikor čas dopušča & mdash zaženemo nebistvene dele aplikacije. Na žalost, kot je opazil Paul Lewis, ogrodja običajno nimajo preprostega koncepta prednostne naloge, ki bi ga lahko predstavili razvijalcem, zato postopnega zagona ni enostavno izvesti v večini knjižnic in okvirov.

Kljub temu smo prišli tja. Te dni lahko preučimo nekaj možnosti, Houssein Djirdeh in Jason Miller pa v svojih pogovorih o upodabljanju na spletu ter Jasonovem in Addyjevem zapisu o sodobni arhitekturi front-end ponujajo odličen pregled nad temi možnostmi. Spodnji pregled temelji na njihovem zvezdniškem delu.

    Popolno upodabljanje na strani strežnika (SSR)
    V klasičnem SSR, kot je WordPress, se vse zahteve v celoti obravnavajo na strežniku. Zahtevana vsebina se vrne kot končana stran HTML in brskalniki jo lahko takoj upodobijo. Zato aplikacije SSR v resnici ne morejo na primer uporabljati API-jev DOM. Vrzel med prvo vsebinsko barvo in časom do interakcije je običajno majhna, stran pa je mogoče upodobiti takoj, ko se HTML pretaka v brskalnik.

S tem se izognete dodatnim povratnim potovanjem za pridobivanje in predlogo podatkov odjemalca, saj se obravnava, preden brskalnik prejme odgovor. Na koncu pa končamo daljši čas razmišljanja strežnika in posledično Time To First Byte in ne uporabljamo odzivnih in bogatih funkcij sodobnih aplikacij.

Z Reactom lahko uporabimo modul ReactDOMServer na strežniku vozlišč, kot je Express, in nato pokličemo metodo renderToString za upodabljanje komponent najvišje ravni kot statični niz HTML.

Z Vue.js lahko uporabimo vue-server-renderer za upodabljanje primerka Vue v HTML z uporabo renderToString. V Angularju lahko z @nguniversal uporabniške zahteve spremenimo v popolnoma strežniške strani HTML. Popolnoma strežniško upodobljeno izkušnjo je mogoče doseči tudi z uporabo Next.js (React) ali Nuxt.js (Vue).

Pristop ima svoje pomanjkljivosti.Posledično pridobimo popolno prilagodljivost aplikacij na strani odjemalca, hkrati pa zagotavljamo hitrejše upodabljanje na strani strežnika, a na koncu dobimo tudi daljša vrzel med prvo vsebinsko barvo in časom do interakcije ter povečano zakasnitvijo prvega vnosa. Rehidracija je zelo draga in običajno sama ta strategija ne bo dovolj dobra, saj močno zamuja Time To Interactive.

V React -u lahko namesto renderToString () uporabimo renderToNodeStream () za pošiljanje odgovora in pošiljanje kosov HTML navzdol. V Vueju lahko uporabimo renderToStream (), ki ga lahko prenašamo in pretakamo. Z React Suspense bi lahko v ta namen uporabili tudi asinhrono upodabljanje.

Na strani odjemalca namesto zagona celotne aplikacije naenkrat postopno zagnati komponente. Oddelki aplikacij se najprej razčlenijo v samostojne skripte z razdelitvijo kode, nato pa se postopoma hidrirajo (v skladu z našimi prioritetami). Pravzaprav lahko kritične sestavine najprej hidriramo, preostale pa kasneje. Vlogo upodabljanja na strani odjemalca in strežnika lahko nato za vsako komponento določimo drugače. Potem lahko tudi odloži vlaženje nekaterih komponent, dokler ne pridejo na ogled ali so potrebne za interakcijo z uporabnikom ali ko brskalnik miruje.

Za Vue je Markus Oberlehner objavil vodnik o zmanjšanju časa do interakcije aplikacij SSR, ki uporablja hidracijo pri interakciji uporabnikov in vue-leni-hidracijo, vtičnik v zgodnji fazi, ki omogoča hidracijo komponent pri vidnosti ali specifični interakciji uporabnika. Ekipa Angular dela na postopni hidraciji z Ivy Universal. Delno hidracijo lahko izvedete tudi s Preact in Next.js.

Ko so uslužbenci na mestu, jih lahko uporabljamo upodabljanje strežnika za pretakanje za začetne/ne-JS navigacije, nato pa naj servisni delavec prevzame upodabljanje HTML-ja za navigacije po namestitvi. V tem primeru servisni delavec vnaprej upodobi vsebino in omogoči navigacijo v slogu SPA za upodabljanje novih pogledov v isti seji. Deluje dobro, če lahko delite isto predlogo in usmerjevalno kodo med strežnikom, stranko odjemalca in servisnim delavcem.

Z Next.js lahko uporabimo izvoz statičnega HTML -ja tako, da aplikacijo upodabljamo v statični HTML. V Gatsbyju, odprtokodnem generatorju statičnih spletnih mest, ki uporablja React, med gradnjami uporablja metodo renderToStaticMarkup namesto metode renderToString, pri čemer je glavni kos JS vnaprej naložen, prihodnje poti pa vnaprej naložene, brez atributov DOM, ki niso potrebni za preproste statične strani.

Za Vue lahko za dosego istega cilja uporabimo Vuepress. S programom Webpack lahko uporabite tudi prednapenjalnik. Navi ponuja tudi statično upodabljanje.

Rezultat je boljši čas do prvega bajta in prva vsebinska barva ter zmanjšamo vrzel med časom do interaktivne in prvo vsebinsko barvo. Tega pristopa ne moremo uporabiti, če se pričakuje, da se bo vsebina močno spremenila. Poleg tega je treba za ustvarjanje vseh strani vnaprej poznati vse URL -je. Tako se lahko nekatere komponente upodobijo s predhodnim upodabljanjem, če pa potrebujemo nekaj dinamičnega, se moramo za pridobitev vsebine zanašati na aplikacijo.

Ker ima JavaScript stroške uspešnosti, bo z naraščanjem količine JavaScripta z aplikacijo nujno agresivno ločevanje in odlaganje kode JavaScript ukrotilo vpliv JavaScript. Za take primere a upodabljanje na strani strežnika bo običajno boljši pristop, če ne bo potrebno veliko interaktivnosti. Če to ni možnost, razmislite o uporabi modela lupine aplikacij.

Torej na strani odjemalca ali na strani strežnika? Na splošno je to dobra ideja omejiti uporabo v celoti odjemalskih okvirov na strani, ki jih absolutno zahtevajo. Tudi za napredne aplikacije se ni dobro zanašati samo na upodabljanje na strani strežnika. Upodabljanje strežnika in upodabljanje odjemalcev sta katastrofa, če se izvedeta slabo.

Ne glede na to, ali se nagibate k CSR ali SSR, čim prej upodobite pomembne slikovne pike in zmanjšajte vrzel med tem upodabljanjem in Time To Interactive. Če se vaše strani ne spremenijo veliko, razmislite o vnaprejšnjem upodabljanju in po možnosti odložite zagon okvirov. Pretakajte HTML v kosih s upodabljanjem na strani strežnika in izvedite postopna hidracija za upodabljanje na strani odjemalca & mdash in hidrirajte vidnost, interakcijo ali v času mirovanja, da izkoristite najboljše iz obeh svetov.

Generatorjev statičnih spletnih mest je veliko in strani, ki jih ustvarijo, so pogosto zelo hitre. Več vsebine, ki jo lahko vnaprej pripravimo namesto ustvarjanja ogledov strani na strežniku ali odjemalcu v času zahteve, boljšo uspešnost bomo dosegli.

V gradnji delno hidratiziranih, postopno izboljšanih statičnih spletnih mest Markus Oberlehner prikazuje, kako izdelati spletna mesta s generatorjem statičnih spletnih mest in SPA, hkrati pa doseči postopno izboljšanje in minimalno velikost svežnja JavaScript. Markus uporablja Enajstdeset in Preact kot njegova orodja in pokaže, kako nastaviti orodja, dodati delno hidracijo, leno hidracijo, datoteko za vnos odjemalca, konfigurirati Babel for Preact in združiti Preact z Rollup & mdash od začetka do konca.

Ker se JAMStack v teh dneh uporablja na velikih spletnih mestih, se je pojavil nov razmislek o zmogljivosti: čas gradnje. Pravzaprav izdelava na tisoče strani z vsako novo uvedbo lahko traja nekaj minut, zato se obeta, da bomo v Gatsbyju videli postopne gradnje, ki skrajšajo čas izdelave za 60 -krat, z integracijo v priljubljene rešitve CMS, kot so WordPress, Contentful, Drupal, Netlify CMS in druge.

Inkrementalna statična regeneracija z Next.js. (Zasluga za sliko: Prisma.io) (Velik predogled)

Poleg tega je Next.js napovedal vnaprejšnjo in postopno generiranje statike, ki nam omogoča dodajanje novih statičnih strani med izvajanjem in posodabljanje obstoječih strani, potem ko so že zgrajene, tako da jih znova upodobi v ozadju, ko promet prihaja .

Potrebujete še lažji pristop? Nicola Goutay je v svojem govoru o Eleventy, Alpine and Tailwind: proti lahkemu Jamstacku pojasnil razlike med CSR, SSR in vsem vmesnim ter pokazal, kako uporabiti lažji pristop & mdash skupaj z repo GitHub, ki prikazuje pristop v praksi.

Tako kot pri dobrih starih zahtevah HTTP se tudi pri pridobivanju podatkov iz API -ja vsaka zamuda pri odzivu strežnika razširi na končnega uporabnika, zato zamujanje upodabljanja. Ko želi vir pridobiti nekatere podatke iz API -ja, bo moral zahtevati podatke od ustrezne končne točke. Komponenta, ki upodablja podatke iz več virov, na primer članek s komentarji in avtorjevimi fotografijami v vsakem komentarju, bo morda potrebovala več povratnih poti do strežnika, da pridobi vse podatke, preden jih lahko upodobi. Poleg tega je količina podatkov, vrnjenih prek REST, pogosto večja od tiste, ki je potrebna za upodobitev te komponente.

Če številni viri zahtevajo podatke iz API -ja, lahko API postane ozko grlo za uspešnost. GraphQL ponuja učinkovito rešitev teh težav. GraphQL je sam po sebi poizvedbeni jezik za vaš API in čas izvajanja na strani strežnika za izvajanje poizvedb z uporabo tipa sistema, ki ga določite za svoje podatke. Za razliko od REST lahko GraphQL prikliče vse podatke v eni sami zahtevi, odgovor pa bo natanko takšen, kot je potreben, brez konec ali Spodaj-pridobivanje podatkov, kot se običajno zgodi z REST.

Poleg tega, ker uporablja GraphQL shema (metapodatki, ki povejo, kako so podatki strukturirani), lahko že organizira podatke v želeno strukturo, zato bi na primer z GraphQL lahko odstranili kodo JavaScript, ki se uporablja za upravljanje stanja, s čimer bi ustvarili čistejšo kodo aplikacije, ki deluje hitreje na stranka.

Če želite začeti z GraphQL ali naletite na težave z zmogljivostjo, so ti članki lahko v veliko pomoč:

Navidez očitna korist teh tehnologij za uporabnike je zagotovljeno delovanje, zato bi včasih morda celo raje uporabljali povezave AMP-/Apple News/Instant Pages pred "običajnimi" in potencialno napihnjenimi stranmi. Za spletna mesta z veliko vsebino, ki obravnavajo veliko vsebine tretjih oseb, bi te možnosti lahko dramatično pospešile čas upodabljanja.

Razen če ne. Po besedah ​​Tima Kadleca je na primer "dokumenti AMP ponavadi hitrejši od svojih kolegov, vendar ne pomenijo nujno, da je stran zmogljiva. AMP ni tisto, kar naredi največjo razliko z vidika uspešnosti."

Korist za lastnika spletnega mesta je očitna: odkritje teh formatov na njihovih platformah in večja prepoznavnost v iskalnikih.

No, vsaj tako je bilo včasih. Ker AMP ni več zahteva za Najboljše zgodbe, se bodo založniki morda raje odmaknili od AMP k tradicionalnemu nizu (hvala, Barry!).

Kljub temu bi lahko tudi z uporabo AMP kot vira podatkov za vašo PWA ustvarili progresivne spletne AMP. Slaba stran? Očitno je prisotnost na obzidanem vrtu razvijalcem omogočila izdelavo in vzdrževanje ločene različice njihove vsebine, v primeru takojšnjih člankov in Apple News brez dejanskih URL -jev (hvala Addy, Jeremy!).

Upoštevajte, da lahko CDN -ji postrežejo (in raztovorijo) tudi dinamično vsebino. Zato omejitev CDN -ja na statična sredstva ni potrebna. Dvakrat preverite, ali vaš CDN izvaja stiskanje in pretvorbo (npr. Optimizacijo slike in spreminjanje velikosti na robu), ali nudi podporo za strežniške delavce, A/B testiranje, pa tudi robove, ki sestavljajo statične in dinamične dele strani na robu CDN (tj. strežniku, ki je najbližji uporabniku), in druga opravila. Preverite tudi, ali vaš CDN podpira HTTP prek QUIC (HTTP/3).

Katie Hempenius je napisala fantastičen vodnik po CDN -jih, ki ponuja vpogled v kako izbrati dober CDN, kako to popraviti in vse malenkosti, ki jih morate upoštevati pri ocenjevanju. Na splošno je dobro čim bolj agresivno predpomniti vsebino in omogočiti zmogljivosti CDN, kot so Brotli, TLS 1.3, HTTP/2 in HTTP/3.

Opomba: na podlagi raziskav Patricka Meenana in Andyja Daviesa je določanje prioritet HTTP/2 učinkovito prekinjeno pri številnih CDN -jih, zato bodite previdni pri izbiri CDN -ja. Več podrobnosti ima Patrick v svojem govoru o določanju prioritet HTTP/2 (hvala, Barry!).

CDNPerf meri hitrost poizvedb za CDN tako, da vsak dan zbere in analizira 300 milijonov testov. (Velik predogled)

Pri izbiri CDN -ja jih lahko uporabite primerjalna mesta s podrobnim pregledom njihovih lastnosti:

    , primerjalna matrika CDN za Cloudfront, Aazure, KeyCDN, Fastly, Verizon, Stackpach, Akamai in mnoge druge. meri hitrost poizvedb za CDN -je tako, da vsak dan zbere in analizira 300 milijonov testov, pri čemer vsi rezultati temeljijo na podatkih RUM uporabnikov po vsem svetu. Preverite tudi primerjavo zmogljivosti DNS in primerjavo zmogljivosti v oblaku. ponuja pregled CDN -jev za posebne teme, kot so Serve Stale, Purge, Origin Shield, Prefetch in Compression. ponuja vpogled v vrhunske ponudnike CDN, njihovo upravljanje RTT in TLS, čas pogajanj o TLS, sprejetje HTTP/2 in druge. (Na žalost so podatki le iz leta 2019).

Optimizacije sredstev

  1. Za stiskanje navadnega besedila uporabite Brotli.
    Leta 2015 je Google predstavil novo odprtokodno obliko podatkov brez izgube, odprtokodno, ki je zdaj podprta v vseh sodobnih brskalnikih. Knjižnica Brotli odprtega izvora, ki uporablja kodirnik in dekoder za Brotli, ima 11 vnaprej določenih ravni kakovosti za kodirnik, pri čemer višja raven kakovosti zahteva več CPU v zameno za boljše stiskalno razmerje. Počasnejše stiskanje bo na koncu privedlo do višjih stopenj stiskanja, vendar kljub temu Brotli hitro dekompresira. Omeniti velja, da je Brotli s stopnjo stiskanja 4 manjši in se stisne hitreje kot Gzip.

V praksi se zdi, da je Brotli veliko učinkovitejši od Gzipa. Mnenja in izkušnje so različni, če pa je vaše spletno mesto že optimizirano z Gzipom, lahko pričakujete vsaj enomestne izboljšave in v najboljšem primeru dvomestne izboljšave pri zmanjševanju velikosti in časovnem razporedu FCP. Prav tako lahko ocenite prihranke pri stiskanju Brotli za vaše spletno mesto.

Brskalniki sprejmejo Brotli le, če uporabnik obišče spletno mesto prek protokola HTTPS. Brotli je široko podprt in podpirajo ga številni CDN-ji (Akamai, Netlify Edge, AWS, KeyCDN, Fastly (trenutno samo kot prehod), Cloudflare, CDN77), Brotli pa lahko omogočite tudi na CDN-jih, ki ga še ne podpirajo. (s serviserjem).

Ulov je to zaradi stiskanja vse Sredstva z Brotlijem na visoki ravni stiskanja so draga, številni ponudniki gostovanja ga ne morejo uporabiti zaradi velikih stroškov, ki jih povzroča. Pravzaprav je Brotli na najvišji stopnji stiskanja torej počasi, da se morebitni dobički v velikosti datoteke izničijo s časom, ki je potreben, da strežnik začne pošiljati odgovor, ko čaka na dinamično stiskanje sredstva. (Če pa imate v času gradnje s statičnim stiskanjem čas, so seveda boljše višje nastavitve stiskanja.)

Primerjava zadnjega časa različnih kompresijskih metod. Ni presenetljivo, da je Brotli počasnejši od gzipa (zaenkrat). (Velik predogled)

Morda pa se to spreminja. Format datoteke Brotli vključuje vgrajen statični slovar, poleg tega, da vsebuje različne nize v več jezikih, podpira tudi možnost uporabe več transformacij za te besede, kar povečuje njegovo vsestranskost. V svoji raziskavi je Felix Hanau odkril način za izboljšanje stiskanja na stopnjah od 5 do 9 z uporabo "bolj specializirane podskupine slovarja od privzete" in zanašanjem na glavo Content-Type, da pove kompresorju, ali naj uporabi slovar za HTML, JavaScript ali CSS. Rezultat je bil "zanemarljiv vpliv na zmogljivost (1% do 3% več CPU -ja v primerjavi z 12% običajno) pri stiskanju spletne vsebine pri visokih stopnjah stiskanja z uporabo pristopa z omejeno uporabo slovarja."

Z izboljšanim slovarskim pristopom lahko hitreje stisnemo sredstva na višjih stopnjah stiskanja, hkrati pa uporabimo le 1% do 3% več CPU -ja. Običajno bi stopnja stiskanja 6 nad 5 povečala porabo procesorja do 12%. (Velik predogled)

Poleg tega lahko z raziskavami Elene Kirilenko hitro in učinkovita rekompresija Brotlija z uporabo prejšnjih artefaktov stiskanja. Kot je povedala Elena, "ko imamo sredstvo stisnjeno prek Brotlija in poskušamo med letenjem stisniti dinamično vsebino, kjer je vsebina podobna vsebini, ki nam je na voljo vnaprej, lahko dosežemo znatne izboljšave v času stiskanja. "

Kako pogosto je tako? Npr. z dostavo Podmnožice svežnjev JavaScript (na primer, ko so deli kode že predpomnjeni v odjemalcu ali z dinamičnim svežnjem, ki služi s spletnimi paketi). Ali z dinamičnim HTML-jem, ki temelji na vnaprej znanih predlogah, ali dinamično podnastavljene pisave WOFF2. Po besedah ​​Elene lahko dosežemo 5,3% izboljšanje stiskanja in 39% izboljšanje hitrosti stiskanja, ko odstranimo 10% vsebine, ter 3,2% boljše stopnje stiskanja in 26% hitrejše stiskanje, če odstranimo 50% vsebine.

Stiskanje Brotlija postaja vse boljše, zato, če se izognete stroškom dinamičnega stiskanja statičnih sredstev, je vsekakor vredno truda. Ni treba posebej poudarjati, da se lahko Brotli uporablja za katero koli vsebino v odprtem besedilu & HTML, CSS, SVG, JavaScript, JSON itd.

Opomba: od začetka leta 2021 je približno 60% odgovorov HTTP dostavljenih brez besedilnega stiskanja, 30,82% stiskanja z Gzipom in 9,1% stiskanja z Brotlijem (tako na mobilnih napravah kot na namizju). Na primer, 23,4% strani Angular ni stisnjeno (prek gzipa ali Brotlija). Vendar je pogosto vklop stiskanja ena najlažjih zmag za izboljšanje zmogljivosti s preprostim pritiskom na stikalo.

Strategija? Predhodno stisnite statična sredstva z Brotli+Gzip na najvišji ravni in stisnite (dinamični) HTML med letom z Brotlijem na ravni 4-6. Prepričajte se, da strežnik pravilno obravnava vsebino za Brotli ali Gzip.

Prihodnost odzivnih slik se lahko s širšim sprejetjem namigov odjemalcev dramatično spremeni. Namigi odjemalcev so polja glave zahteve HTTP, npr. DPR, Viewport-Width, Width, Save-Data, Accept (za določitev nastavitev oblike slike) in druge. Strežnika naj bi obvestili o posebnostih uporabnikovega brskalnika, zaslona, ​​povezave itd.

Posledično se lahko strežnik odloči, kako izpolniti postavitev slike ustrezne velikostiin prikazujejo samo te slike v želenih oblikah. Z namigi odjemalca premaknemo izbiro vira iz oznak HTML in v pogajanja med zahtevo in odzivom med odjemalcem in strežnikom.

Prilagodljivi mediji v uporabi. Uporabnikom, ki nimajo povezave, pošljemo nadomestno mesto z besedilom, uporabnikom 2G sliko z nizko ločljivostjo, uporabnikom 3G sliko z visoko ločljivostjo, uporabnikom 4G pa HD video. S hitrim nalaganjem spletnih strani na telefon s 20 USD. (Velik predogled)

Kot je že pred časom opozoril Ilya Grigorik, namigi strank dopolnijo sliko in mdash niso alternativa odzivnim slikam. "Element & ltpicture & gt zagotavlja potreben nadzor smeri umetnosti v oznaki HTML. Namigi odjemalcev vsebujejo opombe o nastalih zahtevah po slikah, ki omogočajo avtomatizacijo izbire virov. Service Worker ponuja odjemalcu popolne zmogljivosti za upravljanje zahtev in odzivov."

Storitveni delavec bi lahko na primer dodaj novemu odjemalcu namig vrednosti glav na zahtevo, znova napišite URL in zahtevo za sliko usmerite na CDN, prilagodite odziv glede na povezljivost in uporabniške nastavitve itd. Velja ne samo za slikovna sredstva, ampak tudi za skoraj vse druge zahteve.

Za stranke, ki podpirajo namige odjemalcev, bi lahko izmerili 42% prihrankov pri slikah in 1 MB+ bajtov manj za 70+ percentil. Na reviji Smashing Magazine bi lahko izmerili tudi 19-32% izboljšanje. Namigi za odjemalce so podprti v brskalnikih Chromium, v Firefoxu pa jih še vedno obravnavajo.

Če pa za namige za odjemalce vnesete običajno oznako odzivnih slik in oznako & ltmeta & gt, bo podporni brskalnik ocenil oznako odzivnih slik in zahteval ustrezen vir slike z naslovi odjemalcev HTTP.

V bistvu lahko pogojno postrežemo slike ozadja z nizko ločljivostjo z deskriptorjem 1x, slike z višjo ločljivostjo z deskriptorjem 2x in celo sliko kakovosti tiskanja z deskriptorjem 600 dpi. Pazite: brskalniki pomožni tehnologiji ne ponujajo nobenih posebnih informacij o slikah v ozadju, zato bi bile te fotografije v idealnem primeru zgolj okras.

Tako bi lahko vsaj raziskali uporabo formata WebP za svoje slike. Pravzaprav se je saga WebP lani bližala koncu, ko je Apple dodal podporo za WebP v Safariju 14. Tako je po mnogih letih razprav in razprav od danes WebP podprt v vseh sodobnih brskalnikih. Tako lahko slike WebP postrežemo z elementom & ltpicture & gt in po potrebi nadomestnim JPEG (glej delček kode Andreasa Bovensa) ali z uporabo pogajanj o vsebini (z uporabo glave Accept).

WebP ni brez njega slabosti čeprav. Velikosti slikovnih datotek WebP v primerjavi z enakovrednima Guetzlijem in Zopflijem ne podpirajo progresivnega upodabljanja, kot je JPEG, zato lahko uporabniki končno sliko vidijo hitreje z dobrim JPEG -om, čeprav lahko slike WebP postajajo hitrejše po omrežju. Z JPEG-om lahko s polovico ali celo četrtino podatkov postrežemo z "dostojno" uporabniško izkušnjo, preostale pa naložimo pozneje, namesto da bi imeli napol prazno sliko, kot je v primeru WebP.

Vaša odločitev bo odvisna od tega, kaj iščete: s programom WebP boste zmanjšali koristnost, z JPEG pa izboljšali zaznano zmogljivost. Več o WebP lahko izveste v pogovoru WebP Rewind, ki ga je napisal Googlov Pascal Massimino.

Za pretvorbo v WebP lahko uporabite WebP Converter, cwebp ali libwebp. Ire Aderinokun ima zelo podrobno vadnico o pretvorbi slik v WebP, & mdash in tudi Josh Comeau v svojem delu o sprejemanju sodobnih formatov slik.

Temeljit govor o WebP: WebP Rewind Pascala Massimina. (Velik predogled)

Sketch izvorno podpira WebP, slike WebP pa lahko izvozite iz Photoshopa z vtičnikom WebP za Photoshop. Na voljo pa so tudi druge možnosti.

Če uporabljate WordPress ali Joomla, obstajajo razširitve, ki vam bodo pomagale enostavno implementirati podporo za WebP, na primer Optimus in Cache Enabler za WordPress in Joomlina lastna podprta razširitev (prek Codyja Arsenaulta). Element & ltpicture & gt lahko tudi abstrahirate z React-om, stiliziranimi komponentami ali gatsby-image.

Ah & mdash brez sramu vtikač! & mdash Jeremy Wagner je celo objavil knjigo Smashing na WebP, ki bi jo morda želeli preveriti, če vas zanima vse okoli WebP.

Pravzaprav v primerjavi z WebP in JPEG, AVIF deluje bistveno bolje, kar daje srednji prihranek velikosti datoteke do 50% pri istem DSSIM ((ne) podobnosti med dvema ali več slikami z uporabo algoritma, ki približuje človeški vid). Malte Ubl v svojem temeljitem prispevku o optimizaciji nalaganja slik ugotavlja, da AVIF "zelo dosledno prekaša JPEG na zelo pomemben način. To se razlikuje od WebP, ki ne proizvaja vedno manjših slik kot JPEG in je lahko dejansko neto izguba zaradi pomanjkanja podpore za progresivno nalaganje. "

AVIF lahko uporabljamo kot progresivno izboljšavo, ki starejšim brskalnikom ponuja WebP ali JPEG ali PNG. (Velik predogled). Spodaj si oglejte pogled v navadnem besedilu.

Ironično je, da lahko AVIF deluje celo bolje kot veliki SVG -ji, čeprav tega seveda ne bi smeli razumeti kot zamenjavo za SVG -je. Je tudi eden prvih formatov slik, ki podpira barvno podporo HDR in ponuja večjo svetlost, barvno globino in barvne lestvice. Edina slaba stran je, da trenutno AVIF ne podpira postopnega dekodiranja slik (še?) In podobno kot Brotli je kodiranje z visoko stopnjo stiskanja trenutno precej počasno, čeprav je dekodiranje hitro.

AVIF je trenutno podprt v Chromu, Firefoxu in Operi, podpora v Safariju pa naj bi prišla kmalu (saj je Apple član skupine, ki je ustvarila AV1).

Kaj je najboljši način za serviranje slik v teh dneh potem? Za ilustracije in vektorske slike je (stisnjen) SVG nedvomno najboljša izbira. Za fotografije uporabljamo metode dogovarjanja o vsebini z elementom slike. Če je AVIF podprt, pošljemo sliko AVIF, če temu ni tako, se najprej vrnemo na WebP in če tudi WebP ni podprt, kot nadomestni način preklopimo na JPEG ali PNG (po potrebi uporabimo pogoje @media):

Iskreno povedano, bolj verjetno je, da bomo v slikovnem elementu uporabili nekatere pogoje:

Lahko grete še dlje, tako da zamenjate animirane slike s statičnimi slikami za stranke, ki se odločijo za manj gibanja z raje omejenim gibanjem:

V nekaj mesecih je AVIF pridobil kar nekaj vleka:

  • Zamenjave WebP/AVIF lahko preizkusimo na plošči Upodabljanje v orodju DevTools.
  • Za kodiranje, dekodiranje, stiskanje in pretvorbo datotek AVIF lahko uporabimo Squoosh, AVIF.io in libavif.
  • Lahko uporabimo komponento AVIF Preact Jakea Archibalda, ki dekodira datoteko AVIF pri delavcu in prikaže rezultat na platnu,
  • Za dostavo AVIF samo podpornim brskalnikom lahko za uporabo AVIF v izjavah CSS uporabimo vtičnik PostCSS skupaj s skriptom 315B.
  • S CSS in Cloudlare Workers lahko postopoma dostavljamo nove oblike slik, da dinamično spremenimo vrnjeni dokument HTML, pri čemer sklepamo iz informacij iz glave sprejema, nato pa po potrebi dodamo razrede webp/avif itd.
  • AVIF je že na voljo v oblaku (z omejitvami uporabe), Cloudflare podpira AVIF pri spreminjanju velikosti slik, AVIF pa lahko omogočite z naslovi AVIF po meri v Netlifyju.
  • Kar zadeva animacijo, AVIF deluje tako dobro kot Safarijev & ltimg src = mp4 & gt, kar na splošno presega GIF in WebP, vendar MP4 še vedno deluje bolje.
  • Na splošno za animacije AVC1 (h264) & gt HVC1 & gt WebP & gt AVIF & gt GIF, ob predpostavki, da bodo brskalniki na osnovi Chromium kdaj podpirali & ltimg src = mp4 & gt.
  • Več podrobnosti o AVIF -u najdete v pogovoru AVIF za pogovor o kodiranju slik naslednje generacije Aditye Mavlankar iz Netflixa in pogovoru o formatu slike AVIF avtorja Kornel Lesiński iz Cloudflare.
  • Odlična referenca za vse AVIF: Prispela je obsežna objava Jakea Archibalda o AVIF -u.

Tako je torej tudi prihodnji AVIF? Jon Sneyers se ne strinja: AVIF deluje 60% slabše od JPEG XL, še enega brezplačnega in odprtega formata, ki sta ga razvila Google in Cloudinary. Pravzaprav se zdi, da je JPEG XL vse bolj uspešen. Vendar je JPEG XL še vedno v zadnji fazi standardizacije in še ne deluje v nobenem brskalniku. (Ne mešajte se z Microsoftovim JPEG-XR, ki prihaja iz dobrega starega Internet Explorerja 9-krat).

Za PNG lahko uporabimo Pingo, za SVG pa SVGO ali SVGOMG. Če morate hitro predogledati in kopirati ali prenesti vsa sredstva SVG s spletnega mesta, lahko svg-grabber to stori tudi za vas.

Vsak članek o optimizaciji slik bi to navedel, vendar je vedno treba omeniti ohranjanje vektorskih sredstev čiste in tesne. Počistite neporabljena sredstva, odstranite nepotrebne metapodatke in zmanjšajte število točk poti v umetniškem delu (in s tem kodo SVG). (Hvala, Jeremy!)

Na voljo pa so tudi uporabna spletna orodja:

  • Uporabite Squoosh za stiskanje, spreminjanje velikosti in manipulacijo slik pri optimalnih stopnjah stiskanja (z izgubo ali brez izgube),
  • Uporabite Guetzli.it za stiskanje in optimizacijo slik JPEG z Guetzlijem, ki dobro deluje za slike z ostrimi robovi in ​​trdnimi barvami (vendar je lahko nekoliko počasnejše)).
  • Za avtomatizacijo optimizacije slike uporabite Odzivni generator prelomnih točk slike ali storitev, kot sta Cloudinary ali Imgix. Prav tako bo v mnogih primerih samo uporaba srcset in velikosti prinesla pomembne koristi.
  • Če želite preveriti učinkovitost odzivnega označevanja, lahko uporabite slikovno kopico, orodje ukazne vrstice, ki meri učinkovitost glede na velikost prikaza in razmerje slikovnih pik naprave.
  • V svoje delovne tokove GitHub lahko dodate samodejno stiskanje slik, tako da nobena slika ne more zadeti produkcije brez stiskanja. Dejanje uporablja mozjpeg in libvips, ki delujejo z PNG in JPG.
  • Za notranjo optimizacijo prostora za shranjevanje lahko uporabite novo obliko Dropbox Lepton za stiskanje JPEG brez izgube v povprečju za 22%.
  • Uporabite BlurHash, če želite zgodaj prikazati sliko nadomestnega mesta. BlurHash posname sliko in vam da kratek niz (samo 20-30 znakov!), Ki predstavlja nadomestni znak za to sliko. Niz je dovolj kratek, da ga je mogoče enostavno dodati kot polje v objektu JSON.

Včasih samo optimiziranje slik ne bo pomagalo. Da bi izboljšali čas, potreben za začetek upodabljanja kritične slike, lenobna obremenitev manj pomembne slike in odložijo nalaganje vseh skriptov po že upodobljenih kritičnih slikah. Najbolj neprebojni način je hibridno leno nalaganje, ko uporabljamo izvorno leno nalaganje in leno nalaganje, knjižnico, ki zazna vse spremembe vidnosti, ki se sprožijo z interakcijo uporabnika (z IntersectionObserver, ki ga bomo raziskali kasneje). Dodatno:

  • Razmislite o predhodnem nalaganju kritičnih slik, da jih brskalnik ne odkrije prepozno. Če želite slike v ozadju, če želite biti še bolj agresivne, lahko sliko dodate kot običajno sliko z & ltimg src & gt in jo nato skrijete z zaslona.
  • Razmislite o zamenjavi slik z atributom velikosti, tako da določite različne dimenzije prikaza slike glede na medijske poizvedbe, npr. za spreminjanje velikosti za zamenjavo virov v komponenti povečevalnika.
  • Preglejte nedoslednosti pri prenosu slik, da preprečite nepričakovane prenose slik v ospredju in ozadju. Bodite pozorni na slike, ki so privzeto naložene, vendar morda nikoli prikazane & mdash npr. v vrtiljakih, harmonikah in galerijah slik.
  • Na slikah vedno nastavite širino in višino. Pazite na lastnost razmerja stranic v CSS in atribut intrinsicsize, ki nam bo omogočil nastavitev razmerij in dimenzij slik, tako da lahko brskalnik vnaprej rezervira vnaprej določeno režo za postavitev, da se izogne ​​skokom postavitve med nalaganjem strani.

Če se počutite pustolovske, lahko prekinete in preuredite tokove HTTP/2 s pomočjo Edge delavcev, v bistvu filtra v realnem času, ki živi na CDN, za hitrejše pošiljanje slik po omrežju. Edge delavci uporabljajo tokove JavaScript, ki uporabljajo kose, ki jih lahko nadzorujete (v bistvu so to JavaScript, ki se izvajajo na robu CDN, ki lahko spremeni odzive pretakanja), tako da lahko nadzirate dostavo slik.

S serviserjem je prepozno, saj ne morete nadzorovati, kaj je na žici, vendar deluje z delavci Edge. Tako jih lahko uporabite poleg statičnih JPEG -jev, shranjenih postopoma za določeno ciljno stran.

Vzorec izpisa s pomočjo slikanja, orodja ukazne vrstice, ki meri učinkovitost glede na velikost okenca in razmerja slikovnih pik naprave. (Vir slike) (Veliki predogled)

Ne dovolj dobro? No, lahko tudi izboljšate zaznavno zmogljivost slik s tehniko več slik v ozadju. Upoštevajte, da lahko igranje s kontrastom in zameglitev nepotrebnih podrobnosti (ali odstranitev barv) zmanjša tudi velikost datoteke. Ah, moraš povečajte majhno fotografijo brez izgube kakovosti? Razmislite o uporabi programa Letsenhance.io.

Dosedanje optimizacije zajemajo le osnove. Addy Osmani je objavil zelo podroben vodnik o bistveni optimizaciji slike, ki sega zelo globoko v podrobnosti o stiskanju slike in upravljanju barv. Na primer, lahko zameglite nepotrebne dele slike (z uporabo Gaussovega filtra za zameglitev), da zmanjšate velikost datoteke, sčasoma pa lahko celo začnete odstranjevati barve ali spremenite sliko v črno -belo, da še dodatno zmanjšate velikost datoteke. Za slike v ozadju je lahko izvoz iz Photoshopa s kakovostjo od 0 do 10% povsem sprejemljiv.

V reviji Smashing Magazine uporabljamo postfix -opt za imena slik & mdash, na primer brotli-compression-opt.png, kadar slika vsebuje to popravo, vsi v skupini vedo, da je slika že optimizirana.

Ah, in ne uporabljajte JPEG-XR na spletu & mdash "obdelava dekodiranja programske strani JPEG-XR na CPU izniči in celo odtehta potencialno pozitiven vpliv prihrankov pri velikosti bajtov, zlasti v kontekstu SPA" (ne da se meša z Cloudinary/Googlovim JPEG XL).

Za razliko od slik brskalniki ne nalagajo vnaprej vsebine & ltvideo & gt, vendar so videoposnetki HTML5 običajno lažji in manjši od datotek GIF. Ni možnost? No, vsaj GIF -u lahko dodamo stiskanje z izgubo z Lossy GIF, gifsicle ali giflossy.

Testi Colina Bendella kažejo, da se vgrajeni videoposnetki v oznakah img v predogledu Safari Technology Preview prikažejo vsaj 20 -krat hitreje in dekodirajo 7 -krat hitreje kot ekvivalent GIF, poleg tega pa so le del velikosti datoteke. Vendar pa ni podprt v drugih brskalnikih.

V deželi dobrih novic so bili video formati množično napreduje skozi leta. Dolgo smo upali, da bo WebM postal format, ki bo vsem vladal, in WebP (ki je v bistvu ena slika znotraj video vsebnika WebM), bo nadomestil stare oblike zapisa slik. Dejansko Safari zdaj podpira WebP, vendar kljub temu, da sta WebP in WebM v teh dneh pridobila podporo, se preboj v resnici ni zgodil.

Kljub temu bi lahko WebM uporabili za večino sodobnih brskalnikov:

Morda pa bi ga lahko v celoti ponovno pregledali. Leta 2018 je Zveza odprtih medijev izdala nov obetaven video format, imenovan AV1. AV1 ima stiskanje, podobno kodeku H.265 (razvoj H.264), vendar je za razliko od slednjega AV1 brezplačen. Cene licenc H.265 so prodajalce brskalnikov spodbudile, da so namesto tega sprejele primerljivo zmogljiv AV1: AV1 (tako kot H.265) stisne dvakrat bolje kot WebM.

AV1 ima dobre možnosti, da postane vrhunski standard za video v spletu. (Zasluga za sliko: Wikimedia.org) (Velik predogled)

Pravzaprav Apple trenutno uporablja format HEIF in HEVC (H.265), vse fotografije in videoposnetki v najnovejšem sistemu iOS pa so shranjeni v teh oblikah, ne v formatu JPEG. Čeprav HEIF in HEVC (H.265) še nista ustrezno izpostavljena spletu, je AV1 & mdash in pridobiva podporo brskalnika. Zato je smiselno dodati vir AV1 v oznako & ltvideo & gt, saj se zdi, da so na njem vsi prodajalci brskalnikov.

Zaenkrat je najbolj razširjeno in podprto kodiranje H.264, ki ga strežejo datoteke MP4, zato se pred serviranjem datoteke prepričajte, da so vaši MP4 obdelani z večpasovnim kodiranjem, zamegljeni z učinkom frei0r iirblur (če obstaja) in metapodatki moov atom se premaknejo na glavo datoteke, medtem ko vaš strežnik sprejema prikazovanje bajtov. Boris Schapira ponuja natančna navodila za FFmpeg, da čim bolj optimizira videoposnetke. Seveda bi pomagalo tudi zagotavljanje formata WebM kot alternative.

Morali bi začeti upodabljati videoposnetke hitreje, vendar video datoteke so še vedno prevelike? Na primer, kadar koli imate na ciljni strani velik videoposnetek v ozadju? Običajna tehnika, ki jo je treba uporabiti, je, da najprej prikažete prvi okvir kot fotografijo ali prikažete močno optimiziran, kratek segment z zanko, ki ga je mogoče razlagati kot del videoposnetka, nato pa, kadar je video dovolj medpomnjen, začnite predvajati. dejanski video. Doug Sillars je napisal podroben vodnik po uspešnosti videa v ozadju, ki bi mu v tem primeru lahko pomagal. (Hvala, Guy Podjarny!).

Za zgornji scenarij boste morda želeli zagotoviti odzivne slike plakatov. Video elementi privzeto dovoljujejo samo eno sliko kot plakat, kar ni nujno optimalno. Uporabljamo lahko Responsive Video Poster, knjižnico JavaScript, ki vam omogoča uporabo različnih slik plakatov za različne zaslone, hkrati pa dodajate prehodno prekrivanje in popoln stilski nadzor nad ogradami za videoposnetke.

Raziskava kaže, da kakovost video toka vpliva na vedenje gledalcev. Gledalci začnejo videoposnetek opuščati, če zamuda pri zagonu presega približno 2 sekundi. Po tej točki 1-sekundno povečanje zamude povzroči približno 5,8% povečanje stopnje opustitve. Zato ni presenetljivo, da je povprečni čas začetka videoposnetka 12,8 s, pri čemer ima 40% videoposnetkov vsaj 1 zastoj in 20% vsaj 2 sekundi zastoja pri predvajanju videa. V resnici se video stojnicam pri 3G ni mogoče izogniti, saj se videoposnetki predvajajo hitreje, kot jih omrežje lahko dobavi.

Kaj je torej rešitev? Navadno naprave z majhnim zaslonom ne zmorejo 720p in 1080p, ki jih strežemo namizju. Po mnenju Douga Sillarsa lahko ustvarimo manjše različice naših videoposnetkov in uporabimo Javascript za odkrivanje vira za manjše zaslone, da zagotovimo hitro in gladko predvajanje na teh napravah. Lahko pa uporabimo tudi pretočni video. Video tokovi HLS bodo na napravo dostavili videoposnetke ustrezne velikosti in odpravili potrebo po ustvarjanju različnih videoposnetkov za različne zaslone. Prav tako se bo pogajal o hitrosti omrežja in prilagodil bitno hitrost videa hitrosti omrežja, ki ga uporabljate.

Da bi se izognili izgubi pasovne širine, bi lahko dodali samo video vir za naprave, ki dejansko lahko dobro predvajajo video. Druga možnost je, da iz video oznake v celoti odstranimo atribut samodejnega predvajanja in uporabimo JavaScript za vstavljanje samodejnega predvajanja za večje zaslone. Poleg tega moramo videoposnetku dodati preload = "none", da brskalniku povemo, naj se ne prenese kaj video datotek, dokler datoteke dejansko ne potrebuje:

Nato bi lahko samodejno predvajanje znova dodali preko določenega praga (npr. 1000 slikovnih pik):

Število stojnic glede na napravo in hitrost omrežja. Hitrejše naprave v hitrejših omrežjih praktično nimajo stojnic. Glede na raziskavo Douga Sillarsa. (Velik predogled)

Predstava predvajanja videa je zgodba zase, in če se želite podrobneje poglobiti v to, si oglejte drugo serijo Douga Sillarsa o trenutnem stanju najboljših praks dostave videa in videa, ki vključuje podrobnosti o meritvah dostave videa. , prednalaganje, stiskanje in pretakanje videa. Nazadnje lahko preverite, kako počasen ali hiter bo vaš video pretok s Stream or Not.

Podpora WOFF2 je odlična, WOFF pa lahko uporabimo kot nadomestno za brskalnike, ki je ne podpirajo & mdash ali pa bi lahko starejšim brskalnikom stregli sistemske pisave. Obstajajo veliko, veliko, veliko možnosti za nalaganje spletnih pisav, lahko pa izberemo eno od strategij iz "Celovitega priročnika o strategijah nalaganja pisav" Zacha Leathermana (delčki kode so na voljo tudi kot recepti za nalaganje spletnih pisav).

Verjetno so danes boljše možnosti za razmislek Critical FOFT s prednapetostjo in metoda "The Compromise". Oba uporabljata a dvostopenjsko slikanje za podajanje spletnih pisav v korakih & mdash najprej majhno nadnabor, potrebno za hitro in natančno upodabljanje strani s spletno pisavo, nato pa naložite preostalo družinsko asinhronizacijo. Razlika je v tem, da tehnika "Compromise" polinfillno nalaga asinhrono samo, če dogodki nalaganja pisave niso podprti, zato vam polifilma privzeto ni treba naložiti. Potrebujete hitro zmago? Zach Leatherman ima na kratko 23-minutno vadnico in študijo primera, da uredite pisave.

Na splošno bi bilo morda dobro uporabiti namig za vir prednalaganja za vnaprejšnje nalaganje pisav, vendar v svoje oznake vključite namige po povezavo do kritičnih CSS in JavaScript. Pri prednalaganju je uganka prednostnih nalog, zato razmislite o vbrizgavanju elementov rel = "preload" v DOM tik pred skripti za zunanje blokiranje. Po besedah ​​Andyja Daviesa so "viri, vbrizgani s skriptom, skriti pred brskalnikom, dokler se skript ne izvede, in s tem vedenjem lahko upočasnimo, ko brskalnik odkrije namig za prednalaganje." V nasprotnem primeru vas bo nalaganje pisave stalo pri prvem upodabljanju.

Ko je vse kritično, ni nič kritično. vnaprej naložite samo eno ali največ dve pisavi vsake družine. (Zasluga za sliko: Zach Leatherman & ndash slide 93) (Veliki predogled)

Dobro je biti selektiven in izbrati datoteke, ki so najbolj pomembne, npr. tistih, ki so ključnega pomena za upodabljanje ali bi se vam izognili vidnim in motečim preoblikovanjem besedila. Na splošno Zach svetuje, da vnaprej naložite eno ali dve pisavi vsake družine & mdash je tudi smiselno odložiti nalaganje nekaterih pisav, če so manj kritične.

Pri določanju družine pisav v pravilu @font-face je postalo precej običajno uporabljati lokalno () vrednost (ki se nanaša na lokalno pisavo po imenu):

Ideja je razumna: nekatere priljubljene odprtokodne pisave, kot je Open Sans, so vnaprej nameščene z nekaterimi gonilniki ali aplikacijami, zato brskalniku, če je pisava na voljo lokalno, ni treba prenesti spletne pisave in lahko prikaže lokalno pisavo takoj. Kot je opozoril Bram Stein, "čeprav se lokalna pisava ujema z imenom spletne pisave, je najverjetneje ni ista pisava. Veliko spletnih pisav se razlikuje od njihove "namizne" različice. Besedilo je lahko upodobljeno drugače, nekateri znaki se lahko vrnejo v druge pisave, funkcije OpenType lahko popolnoma manjkajo ali pa je višina vrstice drugačna. "

Ker se pisave sčasoma razvijajo, se lahko lokalno nameščena različica zelo razlikuje od spletne pisave, pri čemer so znaki videti zelo različni. Zato je po Bramovih besedah ​​bolje nikoli ne mešajte lokalno nameščenih pisav in spletnih pisav v pravilih @font-face. Google pisave so temu sledile in onemogočile lokalne () rezultate CSS za vse uporabnike, razen zahtev Android za Roboto.

Nihče ne mara čakati na prikaz vsebine. Z deskriptorjem CSS za prikaz pisav lahko nadzorujemo obnašanje nalaganja pisav in omogočimo branje vsebine takoj (s prikazom pisav: neobvezno) oz skoraj takoj (s časovno omejitvijo 3 sekund, dokler se pisava uspešno prenese-s font-display: swap). (No, to je nekoliko bolj zapleteno.)

Če pa želite zmanjšati vpliv preoblikovanja besedila, bi lahko uporabili datoteko API za nalaganje pisav (podprto v vseh sodobnih brskalnikih). Natančneje, to pomeni, da bi za vsako pisavo ustvarili objekt FontFace, nato jih poskušali vse pridobiti in šele nato uporabiti na strani. Na ta način, mi združi vsa prebarvanja z asinhronim nalaganjem vseh pisav in nato natančno enkrat preklopite iz nadomestnih pisav v spletno pisavo. Oglejte si Zachovo razlago, ki se začne ob 32:15, in delček kode):

Za začetek zelo zgodnjega pridobivanja pisav z API-jem za nalaganje pisav Adrian Bece predlaga, da na vrhu telesa dodate neprekinjen presledek nbsp in ga vizualno skrijete z aria-visibility: hidden in .hidden class:

To je skupaj s CSS, ki ima različne družine pisav, deklarirane za različna stanja nalaganja, s spremembo, ki jo sproži API za nalaganje pisav, ko se pisave uspešno naložijo:

Če ste se kdaj vprašali, zakaj kljub vsem vašim optimizacijam Lighthouse še vedno predlaga odpravo virov, ki blokirajo upodabljanje (pisave), Adrian Bece v istem članku ponuja nekaj tehnik, s katerimi je Lighthouse srečen, skupaj z Gatsby Omni Font Loader, zmogljivo asinhrono pisavo nalaganje in bliskavica za ravnanje z besedilom brez stika (FOUT) za Gatsby.

Zdaj mnogi od nas morda uporabljajo CDN ali gostitelja tretje osebe za nalaganje spletnih pisav. Na splošno je vedno bolje, če sami lahko gostite vsa svoja statična sredstva, zato razmislite o uporabi google-webfonts-helper, brez težav za samostojno gostiteljsko uporabo Google Fonts. Če to ni mogoče, lahko datoteke Google pisave posredujete prek izvora strani.

Omeniti pa velja, da Google kar nekaj dela opravi izven škatle, zato bo strežnik morda potreboval nekaj prilagoditev, da se izogne ​​zamudam (hvala, Barry!)

To je še posebej pomembno, saj od Chroma v86 (izdan oktobra 2020) virov med spletnimi mesti, kot so pisave, ni mogoče deliti na istem CDN-ju & mdash zaradi razdeljenega predpomnilnika brskalnika. To vedenje je bilo leta v Safariju privzeto.

Če pa to sploh ni mogoče, obstaja način, da z delčkom Harryja Robertsa pridete do najhitrejših možnih Googlovih pisav:

Harryjeva strategija je, da predhodno ogreje izvor pisav. Nato sprožimo visoko prioritetno, asinhrono pridobivanje datoteke CSS. Nato začnemo asinhrono pridobivanje z nizko prioriteto, ki se na stran uporabi šele po tem, ko je prispelo (s trikom s slogom tiskanja). Če JavaScript ni podprt, se vrnemo k prvotni metodi.

Ah, ko govorimo o Googlovih pisavah: lahko britje do 90% velikosti Googlovih pisav z navedbo samo znakov, ki jih potrebujete, z & amptext. Poleg tega je bila podpora za prikaz pisav nedavno dodana tudi Googlovim pisavam, zato jo lahko uporabljamo takoj.

Na kratko pa opozorilo. Če uporabljate font-display: neobvezno, bi bilo morda neoptimalno uporabiti tudi prednalaganje, saj bo to zahtevo za spletno pisavo sprožilo zgodaj (kar povzroči preobremenjenost omrežja če imate druge vire kritične poti, ki jih je treba pridobiti). Uporabite preconnect za hitrejše zahteve po pisavah z navzkrižnim izvorom, vendar bodite previdni pri predhodnem nalaganju, saj bodo vnaprejšnje nalaganje pisav iz drugega izvora povzročile spor v omrežju. Vse te tehnike so zajete v Zachovih receptih za nalaganje spletnih pisav.

Po drugi strani pa bi bilo dobro, če bi onemogočili spletne pisave (ali vsaj upodabljanje druge stopnje), če je uporabnik v nastavitvah za ljudi s posebnimi potrebami omogočil možnost Reduce Motion ali se odločil za Način varčevanja s podatki (glejte glavo Save-Data) ali ko ima uporabnik počasno povezljivost (prek API-ja za omrežne informacije).

Za to lahko uporabimo tudi medijsko poizvedbo CSS z raje zmanjšanimi podatki ne določite deklaracije pisav, če se je uporabnik odločil za način varčevanja s podatki (obstajajo tudi drugi primeri uporabe). Medijska poizvedba bi v bistvu razkrila, če je glava zahteve za shranjevanje podatkov iz razširitve HTTP Client Hint vklopljena/izklopljena, da omogoči uporabo s CSS. Trenutno podprto samo v brskalnikih Chrome in Edge za zastavico.

Meritve? Za merjenje uspešnosti nalaganja spletnih pisav upoštevajte Vse besedilo je vidno metrika (trenutek, ko so se vse pisave naložile in je vsa vsebina prikazana v spletnih pisavah), Time to Real Italics kot tudi Število preoblikovanja spletnih pisav po prvem upodabljanju. Očitno je, da sta nižji obe meritvi, boljša je uspešnost.

Kaj pa o spremenljive pisave, se lahko vprašate? Pomembno je omeniti, da lahko spremenljive pisave zahtevajo pomemben premislek o učinkovitosti. Dajejo nam veliko širši oblikovalski prostor za tipografske izbire, vendar gre za ceno ene same serijske zahteve v nasprotju s številnimi zahtevami posameznih datotek.

Čeprav spremenljive pisave drastično zmanjšajo skupno velikost datotek datotek s pisavami, je lahko ta ena zahteva počasna, kar blokira upodabljanje vse vsebino na strani. Tako da je nastavitev in razdelitev pisave na nabore znakov še vedno pomembna. Dobra stran pa je, da bomo s spremenljivo pisavo privzeto dobili natanko eno preoblikovanje, zato za združevanje ponovnih barv ne bo potreben JavaScript.

Kaj bi pomenilo a neprebojna strategija nalaganja spletnih pisav potem? Podnabore pisave in jih pripravite za upodabljanje v dveh stopnjah, jih razglasite z deskriptorjem prikaza pisav, uporabite API za nalaganje pisav za združevanje prebarvanj in shranjevanje pisav v predpomnilnik trajnega serviserja. Ob prvem obisku vnesite vnaprejšnje nalaganje skriptov tik pred blokiranjem zunanjih skriptov. Če je potrebno, se lahko vrnete k opazovalcu pisav Brama Steina. Če vas zanima merjenje uspešnosti nalaganja pisav, Andreas Marschke raziskuje sledenje uspešnosti s Font API in UserTiming API.

Nazadnje, ne pozabite vključiti območja unicode, da razčlenite veliko pisavo na manjše pisave, značilne za jezik, in uporabite ujemanje sloga pisave Monice Dinculescu, da zmanjšate močan premik postavitve zaradi odstopanj v velikosti. spletne pisave.

Druga možnost je, da posnemamo spletno pisavo za nadomestno pisavo, lahko z deskriptorji @font-face preglasimo meritve pisav (predstavitev, omogočena v Chromu 87). (Upoštevajte, da so prilagoditve zapletene zaradi zapletenih skladov pisav.)

Ali je prihodnost videti svetla? S postopnim obogatitvijo pisave bomo sčasoma morda lahko "naložili samo zahtevani del pisave na katero koli stran in za poznejše zahteve te pisave dinamično" popravili "prvotni prenos z dodatnimi nabori glifov, kot je potrebno na naslednji strani pogledi ", kot pojasnjuje Jason Pamental. Incremental Transfer Demo je že na voljo in je v teku.

Zgradite optimizacije

  1. Ali smo opredelili svoje prioritete?
    Dobro je vedeti, s čim se ukvarjate. Zaženite an inventar vseh vaših sredstev (JavaScript, slike, pisave, skripte drugih proizvajalcev in "dragi" moduli na strani, kot so vrtiljaki, zapletene infografike in večpredstavnostne vsebine) in jih razčlenite v skupine.

Nastavite preglednico. Določite osnovno jedro izkušnje za starejše brskalnike (tj. popolnoma dostopno osnovno vsebino), okrepljeno izkušnje za zmogljive brskalnike (tj. obogatena, popolna izkušnja) in dodatki (sredstva, ki niso nujno potrebna in jih je mogoče leno naložiti, na primer spletne pisave, nepotrebni slogi, skripti z vrtiljakom, video predvajalniki, pripomočki za družabne medije, velike slike). Pred leti smo objavili članek o "Izboljšanju uspešnosti revije Smashing", ki podrobno opisuje ta pristop.

Pri optimizaciji zmogljivosti moramo upoštevati svoje prioritete. Naložite temeljne izkušnje takoj, torej izboljšave, nato pa dodatki.

Ideja je sestaviti in služiti dva ločena svežnja JavaScript: "običajna" zgradba, tista z Babel-preoblikovanji in polipolnili, ki jih streže samo starejšim brskalnikom, ki jih dejansko potrebujejo, in drugi sveženj (ista funkcionalnost), ki nima preoblikovanj ali polipolnil.

Posledično pomagamo zmanjšati blokiranje glavne niti z zmanjšanjem količine skriptov, ki jih mora brskalnik obdelati. Jeremy Wagner je objavil izčrpen članek o diferencialnem prikazovanju in o tem, kako ga nastaviti v svojem kanalu za gradnjo, od nastavitve Babel, do sprememb, ki jih morate narediti v Webpacku, ter o koristih vsega tega dela.

Skripti izvornega modula JavaScript so privzeto odloženi, zato bo brskalnik med razčlenjevanjem HTML prenesel glavni modul.

Izvorni moduli JavaScript so privzeto odloženi. Skoraj vse o izvornih modulih JavaScript. (Velik predogled)

Eno opozorilo: vzorec modul/nomodul lahko pri nekaterih odjemalcih pride do povratnega učinka, zato razmislite o rešitvi: Jeremyjev manj tvegan diferenčni vzorec prikazovanja, ki pa zaobide bralnik prednapetosti, kar bi lahko vplivalo na delovanje na načine, ki jih morda ne pričakujete. (hvala, Jeremy!)

Dejansko Rollup podpira module kot izhodno obliko, zato lahko kodo povežemo in module uvedemo v proizvodnjo. Parcel ima podporo za module v paketu 2. Za Webpack modul-nomodule-plugin avtomatizira generiranje skriptov modul/nomodule.

Opomba: Vredno je navesti, da samo odkrivanje funkcij ni dovolj za sprejemanje premišljene odločitve o koristnem tovoru za pošiljanje v ta brskalnik. Sami ne moremo razbrati zmogljivosti naprave iz različice brskalnika. Na primer, poceni telefoni Android v državah v razvoju večinoma uporabljajo Chrome in bodo kljub omejenim zmogljivostim pomnilnika in procesorja zmanjšali gorčico.

Sčasoma bomo z glavo glave namigov odjemalca za pomnilnik naprav lahko zanesljiveje ciljali na nizkocenovne naprave. V času pisanja je glava podprta samo v programu Blink (na splošno velja za namige odjemalcev). Ker ima pomnilnik naprave tudi JavaScript JavaScript, ki je na voljo v Chromu, je ena od možnosti lahko funkcija zaznavanja na podlagi API -ja in se vrnete na vzorec modul/nomodul če ni podprto (hvala, Yoav!).

Razdelitev kod je še ena funkcija spletnega paketa, ki razdeli vašo kodno zbirko na "kose", ki se naložijo na zahtevo. Ni treba takoj prenesti, razčleniti in sestaviti vsega JavaScripta. Ko določite ločene točke v kodi, lahko Webpack poskrbi za odvisnosti in izhodne datoteke. Omogoča vam, da je začetni prenos majhen in da na zahtevo aplikacije zahteva kodo. Alexander Kondrov ima fantastičen uvod v razdelitev kod z Webpack in React.

Razmislite o uporabi vtičnika preload-webpack-plugin, ki vodi poti, ki jih delite s kodo, nato pa brskalnik pozove, naj jih vnaprej naloži z & ltlink rel = "preload" & gt ali & ltlink rel = "prefetch" & gt. Vgrajene direktive Webpack dajejo tudi določen nadzor nad prednapetostjo / prednabiranjem. (Bodite pozorni na vprašanja določanja prioritet.)

Kje določiti ločene točke? S sledenjem, kateri deli CSS/JavaScript se uporabljajo in kateri ne. Umar Hansa pojasnjuje, kako lahko za dosego tega uporabite Code Coverage iz Devtools.

Pri obravnavi aplikacij za eno stran potrebujemo nekaj časa, da aplikacijo inicializiramo, preden lahko upodobimo stran. Vaša nastavitev bo zahtevala vašo rešitev po meri, vendar bi lahko pazili na module in tehnike za pospešitev začetnega časa upodabljanja. Na primer, tukaj je, kako odpraviti napake pri React -u in odpraviti pogoste težave z zmogljivostjo React -a, in tukaj je, kako izboljšati zmogljivost v Angularju. Na splošno večina težav z zmogljivostjo izvira od začetnega časa zagona aplikacije.

Kaj je torej najboljši način za agresivno, vendar ne preveč agresivno razvrščanje kod? Po mnenju Phila Waltona "bi lahko poleg razdelitve kode z dinamičnim uvozom uporabili tudi razdelitev kod na ravni paketa, kjer se vsi uvoženi moduli vozlišč razdelijo na del glede na ime paketa. "Phil ponuja tudi vadnico o tem, kako ga zgraditi.

Eden izmed zanimivih prihaja iz niti Ivana Akulova. Predstavljajte si, da imate funkcijo, ki jo enkrat pokličete, njen rezultat shranite v spremenljivko in nato te spremenljivke ne uporabite. Tresenje dreves bo odstranilo spremenljivko, vendar ne funkcijo, ker bi jo lahko uporabili drugače. Če pa funkcije nikjer ne uporabljate, jo boste morda želeli odstraniti. V ta namen vnesite klic funkcije z /*#__ PURE __* /, ki ga podpirata Uglify in Terser & mdash done!

Če želite odstraniti takšno funkcijo, če njen rezultat ni uporabljen, vnesite klic funkcije s / * # _ _PURE _ _ * /. Via Ivan Akulov. (Velik predogled)

Tu je še nekaj drugih orodij, ki jih Ivan priporoča:

    odstrani neuporabljene razrede, še posebej, če uporabljate Bootstrap ali Tailwind.
  • Omogoči optimization.splitChunks: 'all' z vtičnikom split-chunks-plugin. Tako bo spletni paket samodejno kodiral vaše vnosne svežnje za boljše predpomnjenje. . S tem bi čas delovanja spletnega paketa premaknili v ločen kos in mdash ter izboljšali predpomnjenje. prenese datoteke pisav, zato jih lahko postrežete s strežnika. omogoča ustvarjanje servisnega delavca z nastavitvijo predpomnilnika za vsa sredstva spletnega paketa. Preverite tudi pakete servisnih delavcev, celovit vodnik po modulih, ki jih je mogoče uporabiti takoj. Ali pa uporabite preload-webpack-plugin za ustvarjanje prednalaganja / prednabiranja za vse kose JavaScript. meri hitrost izdelave vašega spletnega paketa in ponuja vpogled v to, kateri koraki procesa izdelave so najbolj zamudni. opozarja, če vaš paket vsebuje več različic istega paketa. v času sestavljanja.

    Ali lahko JavaScript naložite v spletnega delavca?
    Če želite zmanjšati negativen vpliv na Time-to-Interactive, bi bilo dobro razmisliti o prenosu težkega JavaScripta v spletnega delavca.

Ker se baza kode nenehno povečuje, se bodo pojavila ozka grla delovanja uporabniškega vmesnika, kar bo upočasnilo uporabniško izkušnjo. To je zato, ker se operacije DOM izvajajo skupaj z vašim JavaScript v glavni niti. S spletnimi delavci lahko te drage operacije premaknemo v proces v ozadju, ki teče v drugi niti. Tipični primeri uporabe za spletne delavce so vnaprejšnje pridobivanje podatkov in progresivne spletne aplikacije za nalaganje in shranjevanje nekaterih podatkov vnaprej, tako da jih lahko kasneje uporabite, ko je to potrebno. Comlink pa lahko uporabite za poenostavitev komunikacije med glavno stranjo in delavcem. Čaka nas še nekaj dela, a smo že prišli do cilja.

Obstaja nekaj zanimivih študij primerov o spletnih delavcih, ki prikazujejo različne pristope premikanja okvira in logike aplikacij do spletnih delavcev. Sklep: na splošno je še vedno nekaj izzivov, vendar je že nekaj primerov dobre uporabe (hvala, Ivan Akulov!).

Začenši s Chromom 80, a nov način za spletne delavce z zmogljivostmi JavaScript moduli so bili dobavljeni, imenovani delavci modulov. Nalaganje in izvajanje skripta lahko spremenimo tako, da se ujema s skriptom type = "module", poleg tega pa lahko uporabimo tudi dinamični uvoz za leno nalaganje kode brez blokiranja izvajanja delavca.

Kako začeti? Tu je nekaj virov, ki jih je vredno preučiti:

  • Surma je objavila odličen priročnik o tem, kako zagnati JavaScript iz glavne niti brskalnika, in tudi kdaj bi morali uporabljati spletne delavce?
  • Preverite tudi Surmin pogovor o glavni arhitekturi niti. avtorja Shubhie Panicker in Jason Miller ponujata podroben vpogled v to, kako uporabljati spletne delavce in kdaj se jim izogniti. poudarja uporabne vzorce za delo s spletnimi delavci, učinkovite načine komuniciranja med delavci, reševanje zapletene obdelave podatkov iz glavne niti ter njihovo testiranje in odpravljanje napak. omogoča premik modula v spletnega delavca, ki samodejno odraža izvožene funkcije kot asinhroni proxy.
  • Če uporabljate Webpack, lahko uporabite workerize-loader. Lahko pa uporabite tudi vtičnik za delavce.

Upoštevajte, da spletni delavci nimajo dostopa do DOM, ker DOM ni "varen za niti", kodo, ki jo izvajajo, pa je treba vsebovati v ločeni datoteki.

Seveda WebAssembly ne bi smel nadomestiti JavaScripta, lahko pa ga dopolni v primerih, ko opazite svinjske procesorje. Za večino spletnih aplikacij je JavaScript bolj primeren, za to pa je najbolje uporabiti WebAssembly računalniško intenzivne spletne aplikacije, na primer igre.

Če želite izvedeti več o WebAssembly:

  • Lin Clark je za WebAssembly napisal temeljito serijo, Milica Mihajlija pa ponuja splošen pregled, kako v brskalniku zagnati izvorno kodo, zakaj bi to morda želeli in kaj vse to pomeni za JavaScript in prihodnost spletnega razvoja. poudarja študijo primera, kako so bili počasni izračuni JavaScript zamenjani s prevedeno WebAssembly in prinesli pomembne izboljšave zmogljivosti.
  • Patrick Hamann je govoril o naraščajoči vlogi WebAssembly in razveljavil nekatere mite o WebAssemblyju, raziskal njegove izzive in jih lahko danes uporabljamo praktično v aplikacijah.
  • Google Codelabs ponuja Uvod v WebAssembly, 60 -minutni tečaj, v katerem se boste naučili, kako vzeti izvorno kodo - v C in jo zbrati v WebAssembly, nato pa jo poklicati neposredno iz JavaScripta.
  • Alex Danilo je v svojem pogovoru za Google I/O razložil WebAssembly in kako deluje. Benedek Gagyi je na WebAssembly delil tudi praktično študijo primera, natančneje, kako jo ekipa uporablja kot izhodni format za svojo kodno zbirko C ++ za iOS, Android in spletno mesto.

Še vedno nisem prepričan o tem, kdaj za dostop do grafičnega procesorja uporabiti Web Workers, Web Assembly, tok ali morda WebGL JavaScript API? Pospeševanje JavaScript je kratek, a koristen vodnik, ki pojasnjuje, kdaj kaj uporabiti in zakaj & mdash tudi s priročnim diagramom poteka in veliko uporabnimi viri.

    Ali stare kode strežimo samo starejšim brskalnikom?
    Ker je ES2017 izjemno dobro podprt v sodobnih brskalnikih, lahko uporabimo babelEsmPlugin za prenašanje le funkcij ES2017+, ki jih ne podpirajo sodobni brskalniki, na katere ciljate.

Houssein Djirdeh in Jason Miller sta pred kratkim objavila obsežen vodnik o tem, kako prenašati in uporabljati sodoben in podedovan JavaScript, ter podrobno opisati njegovo delovanje z Webpack in Rollup ter potrebno orodje. Prav tako lahko ocenite, koliko JavaScript lahko obrijete na svojem spletnem mestu ali v svežnjih aplikacij.

Moduli JavaScript so podprti v vseh večjih brskalnikih, zato z uporabo script type = "module" omogočite brskalnikom, ki podpirajo modul ES, da naložijo datoteko, starejši brskalniki pa lahko naložijo stare različice s skriptom nomodule.

Te dni lahko napišemo JavaScript, ki temelji na modulih in deluje v brskalniku brez transpilerjev ali paketov. & ltlink rel = "modulepreload" & gt glava ponuja način za začetek zgodnjega (in visoko prednostnega) nalaganja skriptov modulov. V bistvu je to odličen način, da pripomorete k čim večji porabi pasovne širine, tako da brskalniku poveste, kaj mora prinesti, da se med temi dolgimi potovanji ne bo zmotil. Prav tako je Jake Archibald objavil podroben članek s težavami in stvarmi, ki jih je treba upoštevati pri modulih ES, ki jih je vredno prebrati.

Najprej nastavite meritve, ki bodo sledile, če razmerje med klici podedovane kode ostane konstantno ali se zmanjšuje, ne pa navzgor. Skupino javno odvračajte od uporabe knjižnice in poskrbite, da bo vaša programska oprema opozorila razvijalce, če se uporablja v zahtevah za vlečenje. polyfills bi lahko pomagal pri prehodu iz podedovane kode v prepisano kodno bazo, ki uporablja standardne funkcije brskalnika.

Za programsko zbiranje pokritosti kode lahko uporabite Puppeteer. Chrome vam omogoča tudi izvoz rezultatov pokritosti s kodo. Kot je opozoril Andy Davies, boste morda želeli zbrati pokritost kode za sodobne in starejše brskalnike.

Obstaja veliko drugih primerov uporabe in orodij za Puppetter, ki bodo morda potrebovali nekoliko več izpostavljenosti:

    , kot je na primer samodejno vizualno razlikovanje ali spremljanje neuporabljenih CSS pri vsaki gradnji,,,
  • Poleg tega lahko teste celo snemate neposredno v DevTools, avtorja Nitay Neeman, s primeri in primeri uporabe.

Poleg tega vam lahko purgecss, UnCSS in Helium pomagajo odstraniti neuporabljene sloge iz CSS. In če niste prepričani, ali je kje uporabljen sumljiv del kode, lahko sledite nasvetu Harryja Robertsa: ustvarite pregleden GIF velikosti 1 & times1px za določen razred in ga spustite v mrtvi/ imenik, npr. /assets/img/dead/comments.gif.

Po tem nastavite to sliko kot ozadje na ustreznem izbirniku v CSS -ju, sedite in počakajte nekaj mesecev, če se bo datoteka prikazala v vaših dnevnikih. Če vnosov ni, nikjer ni bila upodobljena ta zapuščena komponenta: verjetno lahko nadaljujete in izbrišete vse.

Za Počutim se pustolovsko-oddelek, lahko celo avtomatizirate zbiranje neuporabljenih CSS prek nabora strani s spremljanjem DevTools z orodji DevTools.

Preverite in preglejte polipoliti ki jih pošiljate starejšim brskalnikom in sodobnim brskalnikom ter bodite do njih bolj strateški. Oglejte si storitev polyfill.io, ki sprejme zahtevo po nizu funkcij brskalnika in vrne samo večpolnila, ki jih potrebuje brskalnik, ki je zahteval.

Dodaj revizija svežnjev v svoj redni potek dela. Morda obstaja nekaj lahkih alternativ težkim knjižnicam, ki ste jih dodali pred leti, npr. Moment.js (zdaj opuščen) lahko zamenjate z:

    , z znanim API -jem in vzorci Moment.js, oz.
  • Uporabite lahko tudi Skypack Discover, ki združuje priporočila paketov, ki jih pregledajo ljudje, in kakovostno iskanje.

Raziskava Benedikta Rötscha je pokazala, da bi prehod z Moment.js na datum-fns lahko za prvo barvo 3G in mobilni telefon nizkega cenovnega razreda obrijal približno 300 ms.

Za revizijo svežnjev lahko Bundlephobia pomaga najti stroške dodajanja paketa npm v vaš paket. size-limit razširja osnovno preverjanje velikosti svežnja s podrobnostmi o času izvajanja JavaScript. Te stroške lahko celo integrirate z revizijo Lighthouse Custom Audit. To velja tudi za okvire. Z odstranitvijo ali obrezovanjem vmesnika Vue MDC (materialne komponente za Vue) se slogi zmanjšajo s 194 KB na 10 KB.

Obstaja veliko dodatnih orodij, ki vam bodo pomagala pri premišljeni odločitvi o vplivu vaših odvisnosti in izvedljivih alternativ:

Namesto pošiljanja celotnega ogrodja lahko svoj okvir obrežete in sestavite v surov sveženj JavaScript ki ne zahteva dodatne kode. To počne Svelte in vtičnik Rawact Babel, ki v času gradnje prenaša komponente React.js v izvorne operacije DOM. Zakaj? No, kot razlagajo vzdrževalci, "response-dom vključuje kodo za vsako možno komponento/element HTMLEle, ki ga je mogoče upodobiti, vključno s kodo za postopno upodabljanje, razporejanje, obravnavo dogodkov itd. Vendar obstajajo aplikacije, ki ne potrebujejo vseh teh funkcij (na začetku nalaganje strani). Za take aplikacije bi bilo morda smiselno uporabiti domače operacije DOM za izdelavo interaktivnega uporabniškega vmesnika. "

Lukas Bombach v članku "Primer delne hidratacije (z Next in Preact)" pojasnjuje, kako je ekipa za Welt.de, eno od medijskih hiš v Nemčiji, dosegla boljše rezultate z delno hidracijo. Prav tako lahko preverite repo GitHub naslednje super zmogljivosti z razlagami in odrezki kode.

Razmislite lahko tudi o alternativnih možnostih:

Jason Miller je objavil delovne predstavitve o tem, kako bi lahko progresivno hidracijo izvedli z React -om, zato jih lahko uporabite takoj: demo 1, demo 2, demo 3 (na voljo tudi na GitHubu). Poleg tega si lahko ogledate knjižnico komponent, ki so vnaprej prikazane.

Zato je tukaj strategija SPA, ki jo Jeremy predlaga za uporabo v okviru React (vendar se ne bi smela bistveno spremeniti pri drugih okvirih):

  • Preoblikovalne komponente v stanju, kot so komponente brez državljanstva ko bo mogoče.
  • Prednastavite komponente brez držav, kadar je to mogoče, da skrajšate odzivni čas strežnika. Upodabljajte samo na strežniku.
  • Za komponente s stanjem s preprosto interaktivnostjo razmislite o vnaprejšnjem upodabljanju ali upodabljanju strežnika te komponente in zamenjajte njeno interaktivnost z poslušalci dogodkov, neodvisni od okvira.
  • Če morate na stranki hidrirati komponente s stanjem, uporabite leno hidracijo za vidnost ali interakcijo.
  • Za leno hidrirane komponente razporedite njihovo hidracijo v času mirovanja glavne niti z requestIdleCallback.

Obstaja še nekaj drugih strategij, ki bi jih morda želeli slediti ali pregledati:

  • Razmišljanja o zmogljivosti za CSS-v-JS v aplikacijah React z nalaganjem polipolnih le, kadar je to potrebno, z uporabo dinamičnega uvoza in lene hidracije. , dolgotrajno 7-delno serijo o izboljšanju izzivov uporabniškega vmesnika z React in Kako profilirati React aplikacije. , fantastičen pogovor Alexa Holacheka, skupaj s diapozitivi in ​​repo GitHub (hvala za namig, Addy!). je fantastično repo za GitHub z veliko uporabnimi optimizacijami, povezanimi z zmogljivostjo, ki so specifične za Webpack. Vzdržuje Ivan Akulov. , vodnik Ivana Akulova o tem, kako izboljšati zmogljivost v React -u, z veliko uporabnimi napotki, da bi bila aplikacija približno 30% hitrejša. (poskusno) omogoča vroče ponovno nalaganje, ki ohranja stanje komponente in podpira kljuke in funkcijske komponente.
  • Bodite pozorni na komponente strežnika React strežnika velikosti nič, nove predlagane vrste komponent, ki ne bodo vplivale na velikost svežnja. Projekt je trenutno v razvoju, vendar so vse povratne informacije skupnosti zelo cenjene (odlična razlaga Sophie Alpert).

Zato vsak interaktivni element prejme verjetnostno oceno za angažma in na podlagi te ocene se odjemalski skript odloči, da bo vnaprej izbral vir vnaprej. Tehniko lahko vključite v aplikacijo Next.js, Angular in React, na voljo pa je tudi vtičnik Webpack, ki avtomatizira tudi postopek nastavitve.

Očitno boste morda brskalnik pozvali, naj porabi nepotrebne podatke in vnaprej pripravi neželene strani, zato je dobro, da ste precej konzervativni glede števila vnaprej naloženih zahtev. Dober primer uporabe bi bil vnaprejšnji vnos skriptov preverjanja veljavnosti, potrebnih pri plačilu, ali špekulativno vnaprejšnje pridobivanje, ko v vidno polje pride kritični poziv k dejanju.

Potrebujete kaj manj sofisticiranega? DNStradamus predhodno pridobi DNS za odhodne povezave, kot so prikazane v oknu za ogled. Quicklink, InstantClick in Instant.page so majhne knjižnice, ki samodejno vnaprej pridobijo povezave v oknu za ogled v času mirovanja, da bi pospešili nalaganje navigacije po naslednji strani. Quicklink omogoča vnaprejšnje pridobivanje poti React Routerja in Javascripta ter upošteva podatke, zato ne prednabire v 2G ali če je vklopljeno varčevanje s podatki. Tudi Instant.page je, če je način nastavljen za uporabo vnaprejšnje pridobivanje pogledov (kar je privzeto).

Če želite podrobno preučiti znanost napovednega vnaprejšnjega pridobivanja, ima Divya Tagtachian odličen govor o umetnosti predvidljivega vnaprejšnjega pridobivanja, ki zajema vse možnosti od začetka do konca.

Pretakanje skriptov omogoča, da se asinhronizirani ali odloženi skripti razčlenijo v ločeni niti v ozadju, ko se nalaganje začne, zato se v nekaterih primerih čas nalaganja strani izboljša za do 10%. Praktično uporabite & ltscript defer & gt v & lthead & gt, da brskalniki lahko vir odkrijejo zgodaj in ga nato razčlenijo v niti ozadja.

Opozorilo: Opera Mini ne podpira odloga skripta, zato, če se razvijate za Indijo ali Afriko, odloži bo prezrt, kar bo povzročilo blokiranje upodabljanja, dokler se skript ne ovrednoti (hvala Jeremy!).

Lahko se priključite tudi na predpomnjenje kode V8, tako da knjižnice ločite od kode z njihovo uporabo, ali obratno, združite knjižnice in njihovo uporabo v en sam skript, združite majhne datoteke skupaj in se izognete vgrajenim skriptom. Ali morda celo uporabite v8-compile-cache.

Ko gre za JavaScript na splošno, je treba upoštevati tudi nekatere prakse:

    , velika zbirka vzorcev za pisanje berljive, za večkratno uporabo in popravljivo kodo.
  • Podatke iz JavaScripta lahko stisnete z API -jem CompressionStream, npr. gzip pred nalaganjem podatkov (Chrome 80+). in Odpravljanje uhajanja pomnilnika v spletnih aplikacijah so podrobna navodila, kako najti in odpraviti zapletene uhajanja pomnilnika JavaScript. Poleg tega lahko uporabite QueryObjects (SomeConstructor) iz konzole DevTools (hvala, Mathias!). in njihovo izogibanje lahko znatno zmanjša velikost svežnja.
  • Učinkovitost drsenja lahko izboljšamo s pasivnimi poslušalci dogodkov, tako da v parametru možnosti nastavimo zastavico. Tako se brskalniki lahko takoj pomaknejo po strani, namesto po tem, ko poslušalec konča. (preko Kayce Basques).
  • Če imate poslušalce pomikanja ali dotika*, prenesite pasivno: true na addEventListener. To brskalniku pove, da v notranjosti ne nameravate poklicati event.preventDefault (), zato lahko optimizira način obravnavanja teh dogodkov. (preko Ivana Akulova)
  • Boljše načrtovanje JavaScript lahko dosežemo z isInputPending (), novim API -jem, ki poskuša premostiti vrzel med nalaganjem in odzivnostjo s koncepti prekinitev za vnose uporabnikov v spletu in omogoča, da JavaScript lahko preveri vnos, ne da bi se prepustil brskalnik.
  • Poslušalnik dogodkov lahko samodejno odstranite tudi po izvedbi.
  • Firefoxova nedavno izdana Warp, pomembna posodobitev za SpiderMonkey (na voljo v Firefoxu 83), Baseline Interpreter, na voljo pa je tudi nekaj strategij optimizacije JIT.

Zaradi varnostnih razlogov so brskalniki, da bi se izognili prstnim odtisom, uvedli ločeno predpomnjenje, ki je bilo uvedeno v Safariju leta 2013 in v Chromu lani. Če torej dve strani usmerjata na isti URL vira tretje osebe, je koda preneseno enkrat na domeno, predpomnilnik pa je zaradi posledic zasebnosti "peskovan" v to domeno (hvala, David Calhoun!). Zato uporaba javnega CDN ne bo samodejno privedla do boljše uspešnosti.

Trenutno 57% celotnega časa za izvajanje kode JavaScript porabijo za kodo drugih proizvajalcev. Mediana mobilnega spletnega mesta dostopa 12 domen tretjih oseb, pri čemer je mediana 37 različnih zahtev (ali približno 3 zahteve na vsako tretjo osebo).

Poleg tega te tretje osebe pogosto vabijo skripte drugih proizvajalcev da se pridružijo, kar ima na koncu veliko ozko grlo pri uspešnosti, včasih celo do skript osmih strank na strani. Zato lahko redno preverjanje vaših odvisnosti in upraviteljev oznak prinese draga presenečenja.

Druga težava, kot je pojasnil Yoav Weiss v svojem govoru o skriptah drugih proizvajalcev, je, da v mnogih primerih ti skripti nalagajo dinamične vire. Viri se med nalaganjem strani spreminjajo, zato ne vemo nujno, s katerih gostiteljev bodo viri naloženi in kakšni bi bili.

Odlaganje, kot je prikazano zgoraj, je lahko le začetek, saj skripti drugih proizvajalcev tudi ukradejo pasovno širino in čas CPU-ja iz vaše aplikacije. Lahko bi bili nekoliko bolj agresivni in jih naložimo šele, ko se naša aplikacija inicializira.

V fantastični objavi na temo "Zmanjšanje vpliva oznak tretjih oseb na hitrost spletnega mesta" Andy Davies raziskuje strategijo zmanjšanja odtisa tretjih oseb & mdash od opredelitve njihovih stroškov do zmanjšanja njihovega vpliva.

Andy pravi, da oznake vplivajo na hitrost spletnega mesta in mdash, za katero tekmujeta pasovno širino omrežja in čas obdelave na napravah obiskovalcev, odvisno od načina njihovega izvajanja pa lahko odložijo tudi razčlenjevanje HTML. Prvi korak je torej ugotoviti vpliv tretjih oseb s preizkušanjem spletnega mesta z in brez skripte z uporabo WebPageTest. Z zemljevidom zahtev Simona Hearna lahko na strani prikažemo tudi tretje osebe skupaj s podrobnostmi o njihovi velikosti, vrsti in tem, kar je sprožilo njihovo nalaganje.

Po možnosti samo-gostiteljsko in uporabite eno samo ime gostitelja, uporabite pa tudi zemljevid zahtev, da razkrijete klice tretjih oseb in zaznate, kdaj se skripti spremenijo. Pristop Harryja Robertsa lahko uporabite za revizijo tretjih oseb in izdelavo preglednic, kot je ta (preverite tudi Harryjev revizijski potek dela).

Nato lahko raziskujemo lahke alternative obstoječim skriptam in počasi zamenjajte dvojnike in glavne krivce z lažjimi možnostmi. Morda bi lahko nekatere skripte zamenjali z nadomestno slikovno piko za sledenje namesto s polno oznako.

Nalaganje YouTuba s fasadami, npr. lite-youtube-embed, ki je bistveno manjši od dejanskega predvajalnika YouTube. (Vir slike) (Veliki predogled)

Če to ni izvedljivo, lahko vsaj leno naložimo vire tretjih oseb s fasadami, to je statični element, ki je podoben dejanskemu vdelanemu zunanjem izdelovalcu, vendar ni funkcionalen in zato veliko manj obdavčuje nalaganje strani. Trik je torej v tem naložite dejanski vložek le pri interakciji.

Eden od razlogov, zakaj so upravitelji oznak običajno velike, je veliko sočasnih poskusov, ki se izvajajo hkrati, skupaj z mnogimi uporabniškimi segmenti, URL -ji strani, spletnimi mesti itd., Zato lahko po Andyju njihovo zmanjšanje zmanjša oba velikost prenosa in čas, potreben za izvedbo skripta v brskalniku.

In potem so izrezki proti utripanju. Tretje osebe, kot so Google Optimize, Visual Web Optimizer (VWO) in drugi, so soglasne pri njihovi uporabi. Ti delčki se običajno vbrizgajo skupaj s tekom A/B testi: da se izognejo utripanju med različnimi preskusnimi scenariji, skrijejo telo dokumenta z motnostjo: 0, nato dodajo funkcijo, ki se po nekaj sekundah pokliče, da se motnost povrne. To pogosto povzroči velike zamude pri upodabljanju zaradi velikih stroškov izvajanja na strani odjemalca.

Pri uporabi A/B testiranja so kupci pogosto videli utripanje, kot je ta. Odlomki proti utripanju to preprečujejo, vendar stanejo tudi pri zmogljivosti. Prek Andyja Daviesa. (Velik predogled)

Zato spremljajte, kako pogosto se sproži časovna omejitev proti utripanju, in skrajšajte časovno omejitev. Privzeto blokira prikaz vaše strani do 4 sekunde, kar bo uničilo stopnje konverzije. Po besedah ​​Tima Kadleca "Prijatelji ne dovolijo prijateljem, da opravijo A/B testiranje na strani odjemalca". A/B testiranje na strani strežnika na CDN -jih (npr. Edge Computing ali Edge Slice Rerendering) je vedno bolj zmogljiva možnost.

Če moraš opraviti z vsemogočnim Google Upravitelj oznak, Barry Pollard ponuja nekaj smernic za omejevanje vpliva Google Upravitelja oznak. Christian Schaefer raziskuje tudi strategije za nalaganje oglasov.

Pazite: nekateri pripomočki tretjih oseb se skrivajo pred revizijskimi orodji, zato jih je morda težje opaziti in izmeriti. Za stresne preizkuse tretjih oseb preglejte povzetke od spodaj navzgor na strani profila uspešnosti v orodju DevTools, preizkusite, kaj se zgodi, če je zahteva blokirana ali pa je za slednjo potekel rok & mdash, lahko uporabite strežnik Blackhole WebPageTest blackhole.webpagetest.org, ki ga lahko v datoteki gostiteljev pokaže na določene domene.

Kakšne možnosti imamo potem? Razmislite z uporabo storitvenih delavcev tako, da dirkate s prenosom vira s časovno omejitvijo in če se vir v določenem času ni odzval, vrnite prazen odgovor, da brskalniku naročite, naj nadaljuje z razčlenjevanjem strani. Prav tako lahko prijavite ali blokirate zahteve tretjih oseb, ki niso uspešne ali ne izpolnjujejo določenih meril. Če lahko, naložite skript tretje osebe iz svojega strežnika in ne iz strežnika prodajalca in jih leno naložite.

Druga možnost je, da vzpostavite a Politika varnosti vsebine (CSP) za omejitev vpliva skript drugih proizvajalcev, npr. prepoved prenosa zvoka ali videa. Najboljša možnost je, da vstavite skripte prek & ltiframe & gt, tako da se skripti izvajajo v kontekstu iframe in zato nimajo dostopa do DOM strani in ne morejo izvajati poljubne kode v vaši domeni. Iframe lahko dodatno omejite z atributom peskovnika, zato lahko onemogočite vse funkcije, ki jih iframe lahko naredi, npr. preprečiti izvajanje skriptov, preprečiti opozorila, oddajo obrazcev, vtičnike, dostop do zgornje navigacije itd.

Prav tako lahko nadzirate tretje osebe prek delovanja brskalnika, ki povezuje s pravilniki o funkcijah, relativno novo funkcijo, ki vam omogoča, da se vključite ali izključite nekatere funkcije brskalnika na vašem spletnem mestu. (Kot stransko opombo se lahko uporablja tudi za izogibanje prevelikim in neoptimiziranim slikam, medijem brez velikosti, skripti za sinhronizacijo in drugim). Trenutno podprto v brskalnikih, ki temeljijo na Blink.

Ker se mnogi skripti drugih proizvajalcev izvajajo v okvirjih iframes, boste verjetno morali biti temeljiti pri omejevanju njihovih dodatkov. Okviri iframe v peskovniku so vedno dobra ideja in vsako omejitev je mogoče odpraviti s številnimi dovoljenimi vrednostmi na atributu peskovnika.Sandboxing je podprt skoraj povsod, zato omejite skripte drugih proizvajalcev na najmanjšo možno mero tistega, kar jim je dovoljeno.

ThirdPartyWeb.Danes združuje vse skripte drugih proizvajalcev po kategorijah (analitika, družabna omrežja, oglaševanje, gostovanje, upravitelj oznak itd.) In si predstavlja, kako dolgo v povprečju traja izvajanje skriptov subjekta. (Velik predogled)

Razmislite o uporabi opazovalnika križišč, ki bi omogočal Oglasi naj bodo v okvirju medtem ko še vedno pošiljate dogodke ali pridobivate potrebne informacije od DOM (npr. vidnost oglasa). Bodite pozorni na nove politike, kot so pravilnik o funkcijah, omejitve velikosti virov in prednost CPU/pasovne širine, da omejite škodljive spletne funkcije in skripte, ki bi upočasnile brskalnik, npr. sinhroni skripti, sinhrone zahteve XHR, document.write in zastarele izvedbe.

Nazadnje, pri izbiri storitve tretje osebe razmislite o preverjanju storitve ThirdPartyWeb Patricka Hulceja. Danes storitev, ki združuje vse skripte drugih proizvajalcev po kategorijah (analitika, družabne zadeve, oglaševanje, gostovanje, upravitelj oznak itd.) in prikazuje, kako dolgo v povprečju traja izvajanje skriptov subjekta. Očitno imajo največji subjekti najslabši učinek na strani, na katerih so. Samo s listanjem strani boste dobili predstavo o uspešnosti, ki bi jo morali pričakovati.

Ah, in ne pozabite na običajne osumljence: namesto drugih pripomočkov za skupno rabo lahko namesto interaktivnih zemljevidov uporabimo statične gumbe za skupno rabo v družabnih omrežjih (na primer s pomočjo SSBG) in statične povezave do interaktivnih zemljevidov.

Na splošno je treba vire predpomniti za zelo kratek čas (če se bodo verjetno spremenili) ali za nedoločen čas (če so statični) & mdash, če je potrebno, lahko spremenite njihovo različico v URL -ju. Lahko ga imenujete strategija Cache-Forever, v kateri bi lahko naslovu Cache-Control in Expires posredovali v brskalnik, da sredstva lahko potečejo le v enem letu. Zato brskalnik niti ne bi zahteval sredstva, če ga ima v predpomnilniku.

Izjema so odzivi API (npr. /Api /user). Za preprečevanje predpomnjenja lahko uporabimo zasebno, brez trgovine in ne max-age = 0, brez trgovine:

Uporabite nadzor predpomnilnika: nespremenljiv, da se izognete ponovni veljavnosti dolgih eksplicitnih življenjskih dob predpomnilnika, ko uporabniki pritisnejo gumb za ponovno nalaganje. V primeru ponovnega nalaganja nespremenljivo shrani zahteve HTTP in izboljša čas nalaganja dinamičnega HTML -ja, saj ne tekmujejo več z množico 304 odgovorov.

Tipičen primer, kjer želimo uporabiti nespremenljivo, so sredstva CSS/JavaScript z razpršilcem v imenu. Zanje želimo verjetno čim dlje predpomniti in zagotoviti, da nikoli ne bodo ponovno potrjeni:

Glede na raziskavo Colina Bendella, nespremenljivo zmanjša 304 preusmeritve za približno 50%, saj se stranke tudi pri največji starosti še vedno ponovno potrdijo in blokirajo ob osvežitvi. Podprto je v Firefoxu, Edgeu in Safariju, Chrome pa o tem še razpravlja.

Po podatkih Web Almanaha je "njegova uporaba narasla na 3,5%in se pogosto uporablja v odzivih tretjih oseb Facebooka in Googla."

Nadzor predpomnilnika: Immutable zmanjša 304-je za približno 50%, glede na raziskavo Colina Bendella pri Cloudinary. (Velik predogled)

Se spomnite dobrega zastarelega časa med ponovnim preverjanjem? Ko določimo čas predpomnjenja z glavo odziva Cache-Control (npr. Cache-Control: max-age = 604800), bo po izteku max-age brskalnik znova pridobil zahtevano vsebino, zaradi česar se bo stran nalagala počasneje. Tej upočasnitvi se je mogoče izogniti s ponovnim preverjanjem zastarelosti, saj v bistvu določa dodatno časovno obdobje, v katerem lahko predpomnilnik uporablja zastarelo sredstvo, dokler ga v ozadju ponovno potrdi. Tako "skriva" zamude (tako v omrežju kot na strežniku) pred odjemalci.

Junija & ndashjulija 2019, Chrome in Firefox sta podprla podporo of stale-while-revalidate v glavi HTTP Cache-Control, zato bi moral zato izboljšati kasnejše zakasnitve nalaganja strani, saj zastarela sredstva niso več na kritični poti. Rezultat: nič RTT za ponavljajoče se oglede.

Bodite previdni pri razdelku glave, zlasti v zvezi s CDN -ji, in bodite pozorni na predstavitvene različice HTTP, ki se izognejo dodatnemu povratnemu potovanju za preverjanje, kadar se nova zahteva nekoliko (vendar ne bistveno) razlikuje od prejšnjih zahtev (hvala, Guy in Mark!).

Prav tako dvakrat preverite, ali ne pošiljate nepotrebnih naslovov (npr. X-powered-by, pragma, x-ua-compatible, expires, X-XSS-Protection in drugih) in ali vključujejo uporabne glave za varnost in zmogljivost (npr. kot Content-Security-Policy, X-Content-Type-Options in druge). Nazadnje, ne pozabite na stroške uspešnosti zahtev CORS v enostranskih aplikacijah.

Opomba: Pogosto domnevamo, da se predpomnjena sredstva takoj pridobijo, vendar raziskave kažejo, da lahko pridobivanje predmeta iz predpomnilnika traja na stotine milisekund. Pravzaprav je po besedah ​​Simona Hearna "včasih omrežje hitrejše od predpomnilnika, pridobivanje sredstev iz predpomnilnika pa je lahko drago zaradi velikega števila predpomnjenih sredstev (ne velikosti datoteke) in uporabnikovih naprav. Na primer: povprečno pridobivanje predpomnilnika za OS Chrome dvojice od

50 ms s 5 predpomnjenimi viri do

Poleg tega pogosto domnevamo, da velikost svežnja ni velika težava in jo bodo uporabniki enkrat prenesli in nato uporabili predpomnjeno različico. Hkrati s CI/CD -jem večkrat na dan potisnemo kodo v produkcijo, predpomnilnik se vsakič razveljavi, zato je pri predpomnjenju strateški.

Ko gre za predpomnjenje, je vredno prebrati veliko virov:

    , poglobljeno poglabljanje v vse predpomnjenje s Harryjem Robertom. , Jake Archibald, Ilya Grigorik, Jeff Posnick. avtorja Lydia Hallie je odličen razlagalec o CORS -u, kako deluje in kako ga razumeti.
  • Ko govorimo o CORS-u, tukaj je malo osvežitve o politiki istega porekla Eric Portis.

Optimizacije dostave

  1. Ali za odlaganje kritičnega JavaScript uporabljamo asinhrono?
    Ko uporabnik zahteva stran, brskalnik pridobi HTML in ustvari DOM, nato pa CSS in konstruira CSSOM ter nato ustvari drevo upodabljanja z ujemanjem DOM in CSSOM. Če je treba odpraviti kateri koli JavaScript, brskalnik ne bo začel upodabljati strani dokler se ne reši, s čimer se upočasni upodabljanje. Kot razvijalci moramo brskalniku izrecno povedati, naj ne čaka in naj začne upodabljati stran. Za skripte to storite z atributi odloži in asinhronizirajte v HTML -ju.

V praksi se izkaže, da je bolje uporabiti odložilec namesto asinhronizacije. Ah, kaj je Razlika ponovno? Po besedah ​​Steva Soudersa, ko prispejo asinhroni skripti, se takoj izvedejo & mdash, takoj ko je skript pripravljen. Če se to zgodi zelo hitro, na primer, ko je skript v predpomnilniku, lahko dejansko blokira razčlenjevalnik HTML. Z odložitvijo brskalnik ne izvaja skriptov, dokler HTML ni razčlenjen. Torej, če za zagon upodabljanja ne potrebujete JavaScripta, je bolje uporabiti odlog. Prav tako se bo več asinhronskih datotek izvajalo v nedeterminističnem vrstnem redu.

Omeniti velja, da obstaja nekaj napačnih predstav o asinhronizaciji in odložitvi. Najpomembneje je, da async ne pomeni, da se bo koda zagnala vsakič, ko je skript pripravljen, to pomeni, da se bo zagnal, ko bodo skripti pripravljeni in vsa predhodna sinhronizacija je opravljena. Po besedah ​​Harryja Robertsa: "Če za skripte za sinhronizacijo postavite asinhronski skript, je vaš asinhronski skript tako hiter kot vaš najpočasnejši sinhronizacijski skript."

Prav tako ni priporočljivo uporabljati asinhronizacije in odloga. Sodobni brskalniki podpirajo oba, toda kadar koli se uporabljata oba atributa, bo asinc vedno zmagal.

Če bi se radi poglobili v več podrobnosti, je Milica Mihajlija napisala zelo podroben vodnik o hitrejši izgradnji DOM -a, ki se ukvarja s podrobnostmi špekulativne razčlenitve, asinhronizacije in odloga.

Ta prag je odvisen od nekaj stvari, od vrste vira slike, ki se pridobiva, do učinkovite vrste povezave. Toda poskusi, ki so bili izvedeni s Chromom v sistemu Android, kažejo, da je bilo pri 4G 97,5% leno naloženih slik pod gubami v celoti naloženih v 10 ms, potem ko so postale vidne, zato bi moralo biti varno.

Atribut pomembnosti (visok ali nizek) lahko uporabimo tudi za element & ltscript & gt, & ltimg & gt ali & ltlink & gt (samo Blink). Pravzaprav je to odličen način deprioritizirajte slike v vrtiljakih, pa tudi znova dajte prednost skriptam. Včasih pa bomo morda potrebovali malo bolj natančen nadzor.

Najbolj učinkovit način za nekoliko bolj izpopolnjeno leno nalaganje je uporaba API -ja Intersection Observer, ki omogoča asinhrono opazujte spremembe v presečišču ciljnega elementa z elementom prednika ali z oknom za ogled dokumenta na najvišji ravni. V bistvu morate ustvariti nov objekt IntersectionObserver, ki prejme funkcijo povratnega klica in nabor možnosti. Nato dodamo tarčo za opazovanje.

Funkcija povratnega klica se izvede, ko je cilj postane viden ali nevidno, zato lahko, ko prestreže okno za ogled, začnete z nekaterimi dejanji, preden element postane viden. Pravzaprav imamo natančen nadzor nad tem, kdaj je treba priklicati opazovalčev povratni klic, z rootMargin (rob okoli korena) in pragom (posamezna številka ali niz številk, ki označujeta, na kakšen odstotek vidnosti cilja ciljamo).

Alejandro Garcia Anglada je objavil priročno vadnico o tem, kako jo dejansko implementirati, Rahul Nanwani je napisal podrobno objavo o lenobnem nalaganju slik v ospredju in ozadju, Google Fundamentals pa nudi tudi podroben vodič o lenobnem nalaganju slik in videoposnetkov z Intersection Observerjem.

Se spomnite umetniškega pripovedovanja dolgih branj s premikajočimi se in lepljivimi predmeti? Z Intersection Observerjem lahko izvedete tudi učinkovito scrollytelling.

Še enkrat preverite, kaj bi lahko leno naložili. Celo leno nalaganje prevodnih nizov in emoji bi lahko pomagali. S tem je Mobile Twitterju uspelo doseči 80% hitrejšo izvedbo JavaScripta iz novega kanala internacionalizacije.

Na kratko pazljivo: velja omeniti, da bi moralo biti lenobno nalaganje izjema in ne pravilo. Verjetno ni smiselno, da bi leno nalagali karkoli, kar dejansko želite, da ljudje vidijo hitro, npr. slike strani izdelkov, podobe junakov ali skript, potreben, da glavna navigacija postane interaktivna.

Mnenja so različna, če te tehnike izboljšajo uporabniško izkušnjo ali ne, vsekakor pa izboljša čas do prve vsebinske barve. Lahko ga celo avtomatiziramo z uporabo SQIP -a, ki ustvari nizko kakovostno različico slike kot nadomestni znak SVG ali Gradient Image Placeholder z linearnimi nagibi CSS.

Ta nadomestna mesta so lahko vdelana v HTML, saj se naravno dobro stisnejo z metodami stiskanja besedila. Dean Hume je v svojem članku opisal, kako je to tehniko mogoče uporabiti z uporabo Intersection Observer.

Pasti nazaj? Če brskalnik ne podpira opazovalnika presečišč, lahko še vedno leno naložimo polipol ali takoj naložimo slike. In zanj obstaja celo knjižnica.

Želite postati ljubitelj? Svoje slike lahko izsledite in uporabite primitivne oblike in robove, da ustvarite lahek nadomestni znak SVG, ga najprej naložite in nato preidete z vektorske slike nadomestnega znaka na (naloženo) slikovno sliko.

Na primer, lahko pri prvotni obremenitvi preskočite upodabljanje noge in poznih odsekov:

Upoštevajte, da vidnost vsebine: samodejno se obnaša kot prelivanje: skrito, lahko pa to popravite tako, da namesto privzetega margin-left uporabite padding-left in padding-right: auto, margin-right: auto in deklarirano širino. Oblazinjenje v bistvu omogoča, da elementi preplavijo polje z vsebino in vstopijo v polje za polnjenje, ne da bi model škatle zapustili kot celoto in se odrezali.

Upoštevajte tudi, da bi lahko uvedli nekaj CLS, ko bo sčasoma upodobljena nova vsebina, zato je dobro uporabiti vsebino-intrinzično velikost s primerno velikostjo nadomestnega mesta (hvala, Una!).

Thijs Terluin ima veliko več podrobnosti o obeh lastnostih in o tem, kako brskalnik izračuna velikost notranje velikosti, Malte Ubl prikazuje, kako jo lahko izračunate, kratek video razlagalnik Jakea in Surme pa pojasnjuje, kako vse to deluje.

In če morate biti nekoliko bolj podrobni, lahko z omejitvijo CSS ročno preskočite postavitev, slog in barvanje potomcev vozlišča DOM, če potrebujete le velikost, poravnavo ali izračunane sloge na drugih elementih & mdash ali pa je element trenutno zunaj platna.

Druga možnost je, da za slike zunaj zaslona najprej prikažemo nadomestni znak, in ko je slika v okviru prikaza, s pomočjo IntersectionObserver sprožimo omrežni klic, da se slika prenese v ozadje. Prav tako lahko odložimo upodabljanje do dekodiranja z img.decode () ali naložimo sliko, če API za dekodiranje slike ni na voljo.

Če presežete to, bo brskalnik potreboval dodatne povratne poti za pridobitev več slogov. CriticalCSS in Critical vam omogočata izpis kritičnih CSS za vsako predlogo, ki jo uporabljate. Po naših izkušnjah pa noben samodejni sistem ni bil nikoli boljši od ročnega zbiranja kritičnih CSS za vsako predlogo, in to je pristop, ki smo ga nedavno premaknili nazaj.

Nato lahko vstavite kritični CSS, preostanek pa leno naložite z vtičnikom Webpack. Če je mogoče, razmislite o uporabi pogojnega vgrajenega pristopa, ki ga uporablja skupina filamentov, ali pa pretvorite vgrajeno kodo v statična sredstva.

Če trenutno polni CSS naložite asinhrono s knjižnicami, kot je loadCSS, to v resnici ni potrebno. Z media = "print" lahko brskalnik prelisičite, da asinhrono pridobi CSS, vendar se ob nalaganju uporabi za okolje zaslona. (hvala, Scott!)

Ko zbirate vse kritične CSS za vsako predlogo, je običajno, da raziščete samo področje "nad pregibom". Za zapletene postavitve pa bi bilo dobro vključiti tudi temelje postavitve izogibajte se velikim preračunom in stroški prebarvanja, kar posledično škodi vašemu rezultatu Core Web Vitals.

Kaj pa, če uporabnik dobi URL, ki povezuje neposredno na sredino strani, vendar CSS še ni bil naložen? V tem primeru je postalo običajno skrivanje nekritičnih vsebin, npr. z motnostjo: 0 v vdelanem CSS -ju in nepreglednostjo: 1 v celotni datoteki CSS in jo prikažite, ko je CSS na voljo. Ima a velika pomanjkljivost čeprav uporabniki na počasnih povezavah morda nikoli ne bodo mogli prebrati vsebine strani. Zato je bolje, da je vsebina vedno vidna, čeprav morda ni pravilno oblikovana.

Dajanje kritičnega CSS -ja (in drugih pomembnih sredstev) v ločeno datoteko na korenski domeni ima zaradi predpomnjenja prednosti, včasih celo več kot vstavljanje. Chrome špekulativno odpre drugo povezavo HTTP do korenske domene, ko zahteva stran, kar odpravlja potrebo po povezavi TCP za pridobitev tega CSS. To pomeni, da lahko ustvarite niz kritično-CSS-datoteke (npr. kritična-domača stran.css, kritični-izdelek-stran.css itd.) in jih postrezite iz svojega korena, ne da bi jih morali vstaviti. (hvala, Filip!)

Opozorilna beseda: s protokolom HTTP/2 bi lahko kritični CSS shranili v ločeno datoteko CSS in ga dostavili prek strežniškega potiska brez napihovanja HTML -ja. Ulov je v tem, da je bilo potiskanje strežnikov težavno zaradi številnih težav in pogojev dirk po brskalnikih. Nikoli ni bil dosledno podprt in je imel nekaj težav s predpomnjenjem (glej diapozitiv 114 naprej od predstavitve Hoomana Beheshtija).

Učinek bi lahko bil dejansko negativen in bi napihnil omrežne vmesnike, kar bi preprečilo dostavo pristnih okvirjev v dokumentu. Zato ni presenetljivo, da Chrome za zdaj namerava odstraniti podporo za strežnik Push.

Izogibajte se tudi postavljanju & ltlink rel = "stylesheet" /& gt pred odrezke asinhronizacije. Če skripti niso odvisni od slogovnih listov, razmislite o postavitvi blokirajočih skriptov nad sloge blokiranja. Če se to zgodi, razdelite ta JavaScript na dva dela in ga naložite na obe strani CSS.

Scott Jehl je rešil še eno zanimivo težavo s predpomnjenjem vdelane datoteke CSS s serviserjem, pogosta težava, ki je znana, če uporabljate kritičen CSS. V bistvu elementu sloga dodamo atribut ID, tako da ga je enostavno najti z uporabo JavaScripta, nato pa majhen del JavaScripta ugotovi ta CSS in ga uporabi v predpomnilniku API za shranjevanje v predpomnilnik lokalnega brskalnika (z vrsto vsebine besedila /css) za uporabo na naslednjih straneh. Da bi se izognili vstavljanju na naslednje strani in se namesto tega sklicevali na predpomnjena sredstva od zunaj, smo pri prvem obisku spletnega mesta nastavili piškotek. Voilà!

Omeniti velja, da je lahko tudi dinamično oblikovanje drago, vendar običajno le v primerih, ko se zanašate na stotine sočasno upodobljenih sestavljenih komponent. Če torej uporabljate CSS-in-JS, se prepričajte, da vaša knjižnica CSS-in-JS optimizira izvajanje, ko vaš CSS ni odvisen od teme ali rekvizitov, in ne komponirajte preveč stiliziranih komponent. Aggelos Arvanitakis deli več vpogleda v stroške delovanja CSS-in-JS.

Lahko bi ustvarili en tok iz več virov. Na primer, namesto da bi služili prazni lupini uporabniškega vmesnika in dovolili, da jo JavaScript zapolni, lahko dovolite storitvenemu delavcu zgraditi tok kjer lupina prihaja iz predpomnilnika, telo pa iz omrežja. Kot je opozoril Jeff Posnick, če vašo spletno aplikacijo poganja CMS, ki strežnik upodablja HTML s povezovanjem delnih predlog, se ta model neposredno prevede v uporabo pretočnih odzivov, pri čemer se logika predloge podvoji v servisnem delavcu namesto v strežniku. Članek Jake Archibald Leto spletnih pretokov poudarja, kako natančno bi ga lahko zgradili. Povečanje zmogljivosti je precej opazno.

Ena pomembna prednost pretakanja celotnega odziva HTML je, da lahko HTML, upodobljen med prvotno zahtevo za krmarjenje, v celoti izkoristi brskalnikov pretočni razčlenjevalnik HTML. Kosi HTML -ja, ki so vstavljeni v dokument po nalaganju strani (kot je običajno pri vsebini, napolnjeni prek JavaScripta), ne morejo izkoristiti te optimizacije.

Podpora za brskalnik? Še vedno prihajamo z delno podporo v brskalnikih Chrome, Firefox, Safari in Edge, ki podpirajo API in delavce, ki so podprti v vseh sodobnih brskalnikih. Če se spet počutite pustolovski, lahko preverite poskusno izvedbo zahtev za pretakanje, ki vam omogoča, da začnete pošiljati zahtevo, medtem ko še vedno ustvarjate telo. Na voljo v Chromu 85.

Pravzaprav lahko zahteve za slike z visokim DPI prepišete v slike z nizkim DPI, odstranite spletne pisave, domišljijske učinke paralakse, predogled sličic in neskončno drsenje, izklopite samodejno predvajanje videa, potisne strežnike, zmanjšate število prikazanih elementov in znižate kakovost slike ali celo spremenite način prikazovanja oznak. Tim Vereecke je objavil zelo podroben članek o strategijah data-s (h) aver, ki vsebuje veliko možnosti za shranjevanje podatkov.

Kdo uporablja shranjevanje podatkov, se morda sprašujete? 18% globalnih uporabnikov Android Chroma ima omogočen poenostavljen način (z vklopljenimi shranjenimi podatki), število pa bo verjetno večje.Po raziskavi Simona Hearna je stopnja vključitve najvišja pri cenejših napravah, vendar obstaja veliko odstopanj. Na primer: uporabniki v Kanadi imajo stopnjo vključitve več kot 34% (v primerjavi z

7% v ZDA) in uporabniki najnovejšega vodilnega Samsunga imajo globalno možnost vpisa skoraj 18%.

Če je način shranjevanja podatkov vklopljen, bo Chrome Mobile zagotovil optimizirano izkušnjo, tj proxy spletna izkušnja z odloženimi skripti, prisilni prikaz pisav: zamenjava in prisilno leno nalaganje. Bolj smiselno je, da sami ustvarite izkušnjo, namesto da se za optimizacijo zanašate na brskalnik.

Glava je trenutno podprta samo v Chromiumu, v različici Chroma za Android ali prek razširitve Varčevanje podatkov v namizni napravi. Končno lahko uporabite tudi Network Information API za dostavo dragih modulov JavaScript, slik in videoposnetkov z visoko ločljivostjo glede na vrsto omrežja. API za informacije o omrežju in zlasti navigator.connection.effectiveType uporabite vrednosti RTT, downlink, efektivne vrste (in nekaj drugih) za predstavitev povezave in podatkov, s katerimi lahko upravljajo uporabniki.

V tem kontekstu Max Böck govori o komponentah, ki se zavedajo povezav, Addy Osmani pa govori o prilagodljivem delovanju modulov. Na primer, z React bi lahko napisali komponento, ki se za različne vrste povezav upodobi drugače. Kot je predlagal Max, lahko komponenta & ltMedia /& gt v članku z novicami prikaže:

  • Brez povezave: nadomestni znak z nadomestnim besedilom,
  • 2G / način shranjevanja podatkov: slika z nizko ločljivostjo,
  • 3G na zaslonu brez mrežnice: slika srednje ločljivosti,
  • 3G na zaslonih Retina: slika Retina z visoko ločljivostjo,
  • 4G: HD video.

Dean Hume ponuja praktično izvedbo podobne logike s pomočjo uslužbenca. Za videoposnetek bi lahko privzeto prikazali video plakat, nato pa na boljših povezavah prikazali ikono "Predvajaj", lupino video predvajalnika, metapodatke videoposnetka itd. Za nadomestne brskalnike bi lahko poslušali dogodek canplaythrough in uporabili Promise.race () za časovno omejitev nalaganja vira, če se dogodek canplaythrough ne sproži v 2 sekundah.

Če se želite poglobiti nekoliko globlje, je za začetek nekaj virov:

  • Addy Osmani prikazuje, kako implementirati prilagodljivo strežbo v React. ponuja delčke kode za React,
  • Netanel Basel raziskuje komponente, ki se zavedajo povezav, v Angular,
  • Theodore Vorilas deli, kako deluje Serving Adaptive Components Using Network Information API v Vue.
  • Umar Hansa so pokazali, kako selektivno prenesti/izvesti drag JavaScript.

Bonus: Umar Hansa prikazuje, kako odložiti drage skripte z dinamičnim uvozom, da bi spremenili izkušnjo glede na pomnilnik naprave, omrežno povezljivost in sočasnost strojne opreme.

Se spomnite predhodnega upodabljanja? Namig o virih je brskalnik pozval, naj celotno stran zgradi v ozadju za naslednjo navigacijo. Vprašanja pri implementacijah so bila precej problematična, od velikega pomnilniškega odtisa in uporabe pasovne širine do več registriranih zadetkov analitike in prikazov oglasov.

Ni čudno, da je bil zastarel, vendar ga je ekipa Chroma vrnila kot mehanizem NoState Prefetch. Dejansko Chrome namig za vnaprejšnje upodabljanje obravnava kot vnaprejšnje pridobivanje NoState, zato ga lahko uporabljamo še danes. Kot pojasnjuje Katie Hempenius v tem članku, "kot predhodno upodabljanje, NoState Prefetch vnaprej pridobiva vire toda za razliko od vnaprejšnjega upodabljanja ne izvaja JavaScript ali vnaprej upodobite kateri koli del strani. "

NoState Prefetch uporablja samo

Pridobljenih 45 MB pomnilnika in pod -virov bo pridobljenih z IDLE Net Priority. Od Chroma 69, NoState Prefetch doda glavo Namen: Prednabiranje na vse zahteve, tako da se razlikujejo od običajnega brskanja.

Bodite pozorni tudi na alternative za vnaprejšnje upodabljanje in portale, novo prizadevanje za vnaprejšnje upodabljanje, ki se zaveda zasebnosti, kar bo omogočilo vpogled v vsebino za nemoteno krmarjenje.

Uporaba namigov o virih je verjetno najlažji način za povečanje zmogljivosti, in res dobro deluje. Kdaj uporabiti kaj? Kot je pojasnila Addy Osmani, je smiselno vnaprej naložiti vire, za katere vemo, da bodo zelo verjetno uporabljeni na trenutni strani in za prihodnje krmarjenje čez več meja navigacije, npr. Snopi Webpack, potrebni za strani, ki jih uporabnik še ni obiskal.

Addyjev članek o "Nalaganju prednostnih nalog v Chromu" prikazuje, kako točno Chrome razlaga namige o virih, zato jim lahko, ko se odločite, katera sredstva so ključnega pomena za upodabljanje, dodelite visoko prednost. Če želite videti, kako so vaše zahteve prednostne, lahko v tabeli omrežnih zahtev Chrome DevTools (kot tudi Safari) omogočite stolpec »prednost«.

Večino teh dni bomo uporabljali vsaj preconnect in dns-prefetch, pri uporabi prefetch, preload in prerender pa bomo previdni. Upoštevajte, da ima brskalnik tudi s preconnect in dns-prefetch omejitvijo števila gostiteljev, na katere bo iskal/vzporedno vzpostavljal povezavo, zato jih lahko varno naročite glede na prednost (hvala Philip Tellis!).

Od pisave ponavadi so pomembna sredstva na strani, včasih je dobro, da od brskalnika zahtevate prenos kritičnih pisav s prednaložitvijo. Vendar dvakrat preverite, ali dejansko pomaga pri uspešnosti, saj pri vnašanju pisav obstaja uganka prednostnih nalog: ker je prednapetost zelo pomembna, lahko preskoči še bolj kritične vire, kot je kritični CSS. (hvala, Barry!)

Ker & ltlink rel = "preload" & gt sprejema medijski atribut, se lahko odločite za selektivni prenos virov na podlagi pravil poizvedbe @media, kot je prikazano zgoraj.

Poleg tega lahko uporabimo imagesrcset in imagesizes atribute za hitrejše vnaprejšnje nalaganje pozno odkritih slik junakov ali katere koli slike, ki se naloži prek JavaScript, npr. filmski plakati:

Lahko tudi vnaprej naložite JSON kot prinesi, zato je odkrit, preden ga JavaScript zahteva:

JavaScript bi lahko tudi dinamično naložili učinkovito za leno izvajanje skripta.

Nekaj ​​pomislekov: prednapetost je dobra za premik začetnega časa prenosa sredstva bližje začetni zahtevi, vendar vnaprej naložena sredstva pristanejo v pomnilniški predpomnilnik ki je vezana na stran, ki poda zahtevo. prednalaganje se dobro igra s predpomnilnikom HTTP: omrežna zahteva se nikoli ne pošlje, če je element že v predpomnilniku HTTP.

Zato je uporaben za pozno odkrite vire, podobe junakov, naložene prek slike ozadja, ki vsebujejo kritičen CSS (ali JavaScript) in vnaprej naložijo preostali CSS (ali JavaScript).

Prednaložite pomembne slike zgodaj, ni treba čakati na JavaScript, da jih odkrijete. (Zasluga za sliko: "Preload Late-Discovered Hero Images Faster" by Addy Osmani) (Veliki predogled)

Oznaka za vnaprejšnje nalaganje lahko sproži vnaprejšnje nalaganje šele, ko brskalnik prejme HTML od strežnika in razčlenjevalnik lookahead najde oznako za prednalaganje. Vnaprejšnje nalaganje prek glave HTTP je lahko nekoliko hitrejše, saj ne čakamo, da brskalnik razčleni HTML, da začne zahtevo (o tem se razpravlja).

Zgodnji namigi bodo še dodatno pomagali in omogočili vnaprejšnjo nalaganje, še preden se pošljejo odzivne glave za HTML (na načrtu v Chromiumu, Firefoxu). Poleg tega nam bodo prednostni nasveti pomagali določiti prioritete nalaganja skriptov.

Pozor: če uporabljate prednalaganje, kot mora biti definiran ali se nič ne naloži, plus vnaprej naložene pisave brez atributa crossorigin bodo dvakrat pridobljene. Če uporabljate vnaprejšnje pridobivanje, bodite pozorni na težave z glavo v starosti v Firefoxu.

Kot je predlagal Phil Walton, lahko s uslužbenci pošljemo manjše obremenitve HTML s programskim ustvarjanjem naših odgovorov. Storitveni delavec lahko od strežnika zahteva le minimalne podatke, ki jih potrebuje (npr. Delno vsebino HTML, datoteko Markdown, podatke JSON itd.), Nato pa lahko programsko preoblikovati te podatke v celoten dokument HTML. Ko uporabnik obišče spletno mesto in je nameščen servisni delavec, uporabnik nikoli več ne bo zahteval celotne strani HTML. Učinek na zmogljivost je lahko precej impresiven.

Podpora za brskalnik? Storitveni delavci so široko podprti, kljub temu pa je omrežje nadomestno. Ali to počne pomagajo povečati zmogljivost? O ja, res. In gre na bolje, npr. z možnostjo Prenos ozadja, ki omogoča nalaganje oz. prenos ozadja prek serviserja.

Za storitvenega delavca obstaja več primerov uporabe. Na primer, lahko uporabite funkcijo »Shrani za brez povezave«, upravljajte zlomljene slike, uvajajte sporočila med zavihki ali ponudite različne strategije predpomnjenja glede na vrste zahtev. Na splošno je skupna zanesljiva strategija shranjevanje lupine aplikacije v predpomnilnik uslužbenca skupaj z nekaj kritičnimi stranmi, kot so stran brez povezave, naslovna stran in vse drugo, kar bi lahko bilo v vašem primeru pomembno.

Nekaj ​​pa je treba upoštevati. Ko je servisni delavec na mestu, se moramo paziti na zahteve po obsegu v Safariju (če uporabljate Workbox za servisnega delavca, ima modul zahteve za obseg). Če ste kdaj naleteli na DOMException: presežena je kvota. napake v konzoli brskalnika, nato poiščite Gerardov članek Ko je 7KB enako 7MB.

Kot piše Gerardo: »Če izdelujete progresivno spletno aplikacijo in imate napihnjen pomnilnik, ko vaš uslužbenec predpomni statična sredstva, ki se strežejo iz CDN-jev, se prepričajte, da za vire z navzkrižnim izvorom obstaja ustrezna glava odziva CORS, ne predpomnite neprozornih odgovorov s svojim uslužbencem nenamerno vključite slikovna sredstva z navzkrižnim poreklom v način CORS tako, da atributu crossorigin dodate oznako & ltimg & gt. "

Veliko jih je velika sredstva za začetek s serviserji:

    , ki vam pomaga razumeti, kako uslužbenci delajo v ozadju, in stvari, ki jih morate razumeti pri njihovi gradnji. Chris Ferdinandi ponuja veliko število člankov o uslužbencih, ki pojasnjujejo, kako ustvariti aplikacije brez povezave in zajemajo različne scenarije, od shranjevanja nedavno ogledanih strani brez povezave do nastavitve roka veljavnosti elementov v predpomnilniku uslužbencev.

Na primer, v testih A/B, ko mora HTML spremeniti vsebino za različne uporabnike, bi lahko za obravnavo logike uporabili servisne delavce na strežnikih CDN. Prav tako bi lahko pretočno predvajali HTML, da bi pospešili spletna mesta, ki uporabljajo Googlove pisave.

Kadarkoli doživljate, odpravljanje napak pri nepotrebnem barvanju v orodjih DevTools:

    . Preverite nekaj koristnih nasvetov, kako to razumeti.
  • Za začetek si oglejte brezplačni tečaj Udacityja Paul Lewisa o optimizaciji upodabljanja brskalnika in članek Georgyja Marchuka o slikanju brskalnika in premislekih o uspešnosti spleta. v razdelku »Več orodij → Upodabljanje → Utripanje barve« v Firefox DevTools.
  • V React DevTools potrdite polje »Označi posodobitve« in omogočite »Zabeleži, zakaj je vsaka komponenta upodobljena«,
  • Uporabite lahko tudi Zakaj ste upodobili, zato vas bo pri ponovni upodobitvi komponente blisk obvestil o spremembi.

Ali uporabljate zidarsko postavitev? Imejte v mislih, da bi lahko zelo kmalu zgradili zidarsko postavitev samo z mrežo CSS.

Če se želite poglobiti v temo, je Nolan Lawson v svojem članku delil trike za natančno merjenje zmogljivosti postavitve, Jason Miller pa je predlagal tudi alternativne tehnike. Imamo tudi majhen članek Sergeja Chikuyonoka o tem, kako pravilno narediti animacijo grafičnega procesorja.

Brskalniki lahko poceni animirajo preoblikovanje in motnost. Sprožilci CSS so uporabni za preverjanje, ali CSS sproži ponovne postavitve ali prerazporeditve. (Zasluga za sliko: Addy Osmani) (Velik predogled)

Opomba: spremembe slojev, sestavljenih iz grafičnega procesorja, so najcenejše, zato, če se lahko izognete tako, da sprožite samo kompoziciranje prek motnosti in preoblikujete, boste na pravi poti. Anna Migas je v svojem govoru o odpravljanju napak pri upodabljanju uporabniškega vmesnika podala veliko praktičnih nasvetov. Če želite razumeti, kako odpraviti napake pri barvah v DevTools, si oglejte Umarjev revizijski video Paint Performance.

Kaj vse to pomeni? Med nalaganjem sredstev lahko poskušamo biti vedno korak naprej strank, zato je izkušnja hitra, medtem ko se v ozadju dogaja precej. Da bi obdržali stranko, lahko namesto nalaganja indikatorjev preizkusimo okostne zaslone (predstavitev implementacije), dodamo prehode/animacije in v bistvu goljufamo uporabniški vmesnik, ko ni ničesar za optimizacijo.

V svoji študiji primera Umetnost okostja uporabniškega vmesnika Kumar McMillan deli nekaj idej in tehnik o tem, kako simulirati dinamične sezname, besedilo in končni zaslon ter kako razmisliti. skeletno razmišljanje z React.

Pazite: skeletne zaslone je treba pred uvedbo preizkusiti, saj so nekateri testi pokazali, da lahko skeletni zasloni po vseh meritvah delujejo najslabše.

Skupnost je razvila nekaj tehnik in rešitev, da bi se izognila prelivom. Na splošno je to dobra ideja izogibajte se vstavljanju nove vsebine nad obstoječo vsebino, razen če se to zgodi kot odgovor na interakcijo uporabnika. Na slikah vedno nastavite atribute širine in višine, zato sodobni brskalniki dodeljujejo polje in privzeto rezervirajo prostor (Firefox, Chrome).

Za slike ali video posnetke lahko uporabimo oznako mesta SVG, da rezerviramo okvir zaslona, ​​v katerem bodo prikazani mediji. To pomeni, da bo območje ustrezno rezervirano, ko boste morali ohraniti tudi razmerje stranic. Za oglase in dinamično vsebino lahko uporabimo tudi nadomestna mesta ali nadomestne slike, pa tudi vnaprej razporedimo reže za postavitev.

Namesto da bi leno nalagali slike z zunanjimi skripti, razmislite o uporabi domačega lenarnega nalaganja ali hibridnega lenarnega nalaganja, ko naložimo zunanji skript le, če izvorno leno nalaganje ni podprto.

Kot je navedeno zgoraj, vedno prebarvajte spletne pisave in prehodite iz vse nadomestne pisave za vse spletne pisave naenkrat-samo poskrbite, da to stikalo ne bo preveč naglo, tako da prilagodite višino vrstice in razmik med pisavami z ujemanjem pisave.

Za preglasiti meritve pisav za nadomestno pisavo za posnemanje spletne pisave lahko uporabimo deskriptorje @font-face za preglasitev meritev pisave (predstavitev, omogočeno v Chromu 87). (Upoštevajte, da so prilagoditve zapletene zaradi zapletenih skladov pisav.)

Za pozne CSS lahko to zagotovimo CSS, pomemben za postavitev, je vgrajen v glavi vsake predloge. Še dlje: pri dolgih straneh, ko je dodana navpična drsna vrstica, se glavna vsebina premakne za 16 slikovnih pik v levo. Za zgodnji prikaz drsnega traku lahko dodamo overflow-y: scroll on html za uveljavitev drsnega traku pri prvi barvi. Slednje pomaga, ker drsne vrstice lahko povzročijo netrivialne premike postavitve zaradi preoblikovanja vsebine nad gubo, ko se spremeni širina. Največkrat bi se to moralo zgoditi na platformah z drsnimi trakovi brez prekrivanja, kot je Windows. Ampak: break position: sticky, ker se ti elementi nikoli ne bodo pomaknili iz vsebnika.

Če se ukvarjate z glavami, ki postanejo fiksne ali lepljive na vrhu strani na pomiku, rezervirajte prostor za glavo, ko postane borov, npr. z elementom nadomestnega mesta ali na vrhu vsebine. Izjema bi morale biti pasice za privolitev piškotkov, ki ne bi smele vplivati ​​na CLS, včasih pa vplivajo: odvisno je od izvedbe. V tej temi na Twitterju je nekaj zanimivih strategij in jedi.

Za komponento zavihka, ki lahko vključuje različno količino besedil, lahko preprečite premike postavitve s svežnji mreže CSS. Če postavimo vsebino vsakega zavihka na isto območje mreže in enega za drugim skrijemo, lahko zagotovimo, da vsebnik vedno vzame višino večjega elementa, zato ne pride do premikov postavitve.

Ah, seveda pa lahko neskončno drsenje in »Naloži več« povzroči tudi premike postavitve, če je pod seznamom vsebina (npr. Noga). Če želite izboljšati CLS, rezervirajte dovolj prostora za vsebino, ki bi se naložila prej uporabnik se pomakne na tisti del strani, odstrani nogo ali kateri koli element DOM na dnu strani, ki ga lahko potisne navzdol nalaganje vsebine. Prednaložite tudi podatke in slike za vsebino pod pregibom, tako da Ko se uporabnik pomika tako daleč, je že tam. Za optimizacijo dolgih seznamov lahko uporabite tudi knjižnice za virtualizacijo seznamov, kot je reakcijsko okno (hvala, Addy Osmani!).

Če želite zagotoviti, da bo vpliv preoblikovanja omejen, izmerite stabilnost postavitve z API -jem za nestabilnost postavitve. Z njim lahko izračunate kumulativni premik postavitve (CLS) rezultat in ga vključite kot zahtevo v svoje teste, zato ga lahko vsakič, ko se pojavi regresija, sledite in popravite.

Za izračun ocene premika postavitve brskalnik preveri velikost prikaza in premikanje nestabilnih elementov v oknu med dvema upodobljenima okvirjema. V idealnem primeru bi bil rezultat blizu 0. Obstaja odličen vodnik Milice Mihajlije in Philipa Waltona o tem, kaj je CLS in kako ga izmeriti. To je dobro izhodišče za merjenje in vzdrževanje zaznane uspešnosti ter preprečevanje motenj, zlasti za naloge, ki so pomembne za podjetja.

Hiter namig: če želite odkriti, kaj je povzročilo premik postavitve v orodju DevTools, lahko raziščete premike postavitve pod "Izkušnje" na plošči uspešnosti.

Bonus: če želite zmanjšati prelivanje in ponovno barvanje, si oglejte vodnik Charis Theodoulou za zmanjšanje pretoka DOM -a / razporeditve postavitve in seznam Paula Irish -a Kaj sili postavitev / preoblikovanje ter CSSTriggers.com, referenčno tabelo o lastnostih CSS, ki sprožijo postavitev, barvanje in komponiranje.

Omrežje in HTTP/2

  1. Ali je spenjanje OCSP omogočeno?
    Z omogočanjem spenjanja OCSP na strežniku lahko pospešite rokovanje s TLS. Spletni protokol stanja potrdila (OCSP) je bil ustvarjen kot alternativa protokolu seznama preklicanih potrdil (CRL). Oba protokola se uporabljata za preverjanje, ali je bilo potrdilo SSL preklicano.

Vendar protokol OCSP ne zahteva, da brskalnik porabi čas za nalaganje in nato iskanje po seznamu podatkov o certifikatu, s čimer se skrajša čas, potreben za rokovanje.

Kot piše Simon, v svetu HTTPS obstaja nekaj vrst ravni potrjevanja potrdil, ki se uporabljajo za zaščito prometa:

  • Preverjanje domene (DV) potrjuje, da je lastnik domene lastnik certifikata,
  • Validacija organizacije (OV) potrjuje, da je organizacija lastnica domene,
  • Podaljšano preverjanje (EV) potrjuje, da je organizacija lastnica domene, s strogim preverjanjem.

Pomembno je omeniti, da so vsi ti certifikati enaki v tehnološkem smislu, razlikujejo se le po informacijah in lastnostih, navedenih v teh certifikatih.

EV certifikati so dragi in zamudni saj od človeka zahtevajo, da pregleda potrdilo in zagotovi njegovo veljavnost. Potrdila DV pa so pogosto na voljo brezplačno & mdash npr. by Let’s Encrypt - odprt, avtomatiziran certifikacijski organ, ki je dobro vključen v številne ponudnike gostovanja in CDN -je. Pravzaprav v času pisanja ima več kot 225 milijonov spletnih mest (PDF), čeprav predstavlja le 2,69% strani (odprtih v Firefoxu).

V čem je potem problem? Vprašanje je v tem Potrdila EV ne podpirajo v celoti spenjanja OCSP zgoraj omenjeno. Medtem ko spenjanje omogoča strežniku, da pri overitelju potrdil preveri, ali je bilo potrdilo preklicano, in nato te podatke doda ("spenja") v potrdilo, ne da bi spenjal odjemalec opravil vse delo, kar povzroči nepotrebne zahteve med pogajanji o TLS . Pri slabih povezavah bi to lahko povzročilo opazne stroške delovanja (1000 ms+).

EV certifikati niso dobra izbira za spletno uspešnost in lahko povzročijo veliko večji vpliv na zmogljivost kot certifikati DV. Za optimalno delovanje spleta vedno servirajte OCSP speti DV certifikat. So tudi veliko cenejši od EV certifikatov in manj težav pri nakupu. No, vsaj dokler ni na voljo CRLite.

Stiskanje je pomembno: 40 in ndash43% nestisnjenih verig potrdil je preveliko, da bi se prilegalo v en sam QUIC let 3 podatkovnih gramov UDP. (Zasluga za sliko :) Hitro) (Velik predogled)

Opomba: Ko imamo pri roki QUIC/HTTP/3, je treba omeniti, da je veriga potrdil TLS ena vsebina spremenljive velikosti, ki prevladuje pri številu bajtov v rokovanju QUIC. Velikost se giblje med nekaj sto baj in več kot 10 KB.

Zato je ohranjanje potrdil TLS majhno pri QUIC/HTTP/3, saj bodo velika potrdila povzročila več rokovanj. Prav tako moramo poskrbeti, da so potrdila stisnjena, saj bi bile sicer verige potrdil prevelike, da bi se prilegale enemu letu QUIC.

Lahko najdeš način več podrobnosti in napotkov na problem in rešitve na:

Pomembno je razumeti, da HTTP/2 ni popoln in ima težave s prednostnimi nalogami, vendar je zelo dobro podprt in v večini primerov vam je bolje.

Opozorilo: HTTP/2 Server Push se odstranjuje iz Chroma, zato ga boste morda morali znova obiskati, če vaša izvedba temelji na strežniku Push Push. Namesto tega bi lahko gledali zgodnje namige, ki so že vključeni kot poskus v Fastly.

Če še vedno uporabljate HTTP, bo najbolj zamudno opravilo najprej selitev na HTTPS, nato pa prilagodite postopek izdelave tako, da bo ustrezal multipleksiranju in paralelizaciji HTTP/2. Prenos protokola HTTP/2 na Gov.uk je fantastična študija primera, kako to storiti in na tej poti najti pot skozi CORS, SRI in WPT. V preostalem delu tega članka predvidevamo, da preklapljate ali ste že prešli na HTTP/2.

Po eni strani bi se morda želeli popolnoma izogniti združevanju sredstev, namesto da bi celoten vmesnik razčlenili na številne majhne module, jih stisnili kot del procesa izdelave in jih naložili vzporedno. Za spremembo ene datoteke ni treba znova prenesti celotne slogovne liste ali JavaScripta. Prav tako skrajša čas razčlenjevanja in zmanjša nizko obremenitev posameznih strani.

Po drugi strani pa je embalaža še vedno pomembna. Z uporabo številnih majhnih skriptov, splošna kompresija bo trpela stroški pridobivanja predmetov iz predpomnilnika pa se bodo povečali. Kompresija velikega paketa bo imela koristi od ponovne uporabe slovarja, majhni ločeni paketi pa ne. Za to obstaja standardno delo, vendar je zaenkrat daleč. Drugič, brskalniki imajo še ni optimiziran za takšne tokove dela. Chrome bo na primer sprožil medprocesne komunikacije (IPC), linearne glede na število virov, zato bo vključevanje več sto virov imelo stroške delovanja brskalnika.

Če želite doseči najboljše rezultate s protokolom HTTP/2, razmislite o postopnem nalaganju CSS, kot je predlagal Jake Archibald iz Chroma.

Kljub temu lahko poskusite postopno naložiti CSS. Dejansko CSS v telesu ne blokira več upodabljanja za Chrome. Vendar obstajajo nekatere težave pri določanju prioritet, zato to ni tako preprosto, vendar je vredno eksperimentirati.

Lahko bi se izognili združevanju povezav HTTP/2, ki vam omogoča, da uporabite sharding domene, medtem ko imate koristi od HTTP/2, vendar je to v praksi težko doseči in na splošno se ne šteje za dobro prakso. Prav tako se HTTP/2 in integriteta pod -virov ne ujemata vedno.

Kaj storiti? No, če uporabljate HTTP/2, pošiljajte naokoli 6-10 paketov se zdi dostojen kompromis (in ni slab za starejše brskalnike). Eksperimentirajte in izmerite, da poiščete pravo ravnovesje za svojo spletno stran.

Če želite preveriti, ali vse zahteve uporabljajo eno samo povezavo HTTP/2 ali je kaj narobe konfigurirano, omogočite stolpec »ID povezave« v orodju DevTools → Omrežje. Na primer, tukaj imajo vse zahteve skupno povezavo (286) & mdash, razen manifest.json, ki odpre ločeno (451).

Posvetujte se z neverjetno raziskavo Pata Meenana o prednostnih nalogah HTTP/2 (video) in podporo testnega strežnika za določanje prednosti HTTP/2. Po navedbah Pat je priporočljivo omogočiti nadzor zastojev BBR in nastaviti tcp_notsent_lowat na 16 KB, da bo prednostna naloga HTTP/2 zanesljivo delovala na jedrih Linux 4.9 in novejših (hvala, Yoav!). Andy Davies je opravil podobno raziskavo za določanje prednosti HTTP/2 v brskalnikih, CDN -jih in storitvah gostovanja v oblaku.

Medtem dvakrat preverite, ali vaše jedro podpira TCP BBR in ga po možnosti omogočite. Trenutno se uporablja na platformi Google Cloud Platform, Amazon Cloudfront, Linux (npr. Ubuntu).

Prepričajte se tudi, da so vsi zunanji vtičniki in skripti za sledenje naloženi prek protokola HTTPS, da skriptiranje med spletnimi mesti ni mogoče in da sta glavi HTTP Strict Transport Security in glavi Content Security pravilni.

Za reševanje vprašanj HTTP/2 je IETF skupaj z Googlom, Akamaijem in drugimi delal na novem protokolu, ki je bil pred kratkim standardiziran kot HTTP/3.

Robin Marx je zelo dobro razložil HTTP/3, njegova razlaga pa temelji na njegovi razlagi. V svojem jedru je HTTP/3 zelo podoben HTTP/2 glede na lastnosti, vendar pod pokrovom deluje zelo drugače. HTTP/3 ponuja številne izboljšave: hitrejše rokovanje, boljše šifriranje, zanesljivejše neodvisne tokove, boljše šifriranje in nadzor pretoka. Opazna razlika je v tem, da HTTP/3 uporablja QUIC kot transportno plast, pri čemer so paketi QUIC inkapsulirani na vrhu diagramov UDP in ne TCP.

QUIC v celoti integrira TLS 1.3 v protokol, medtem ko je v TCP na vrhu. V tipičnem nizu TCP imamo nekaj časov povratnih stroškov, ker morata TCP in TLS opraviti ločena rokovanja, toda s QUIC lahko oba združeno in zaključeno v enem samem povratnem potovanju. Ker nam TLS 1.3 omogoča nastavitev šifrirnih ključev za posledično povezavo, lahko od druge povezave dalje že pošiljamo in sprejemamo podatke aplikacijske plasti v prvem krožnem izletu, ki se imenuje "0-RTT".

Prav tako je bil v celoti prepisan algoritem stiskanja glave HTTP/2 skupaj s sistemom za določanje prednosti. Poleg tega QUIC podpora selitev povezave iz Wi-Fi v mobilno omrežje prek ID-jev povezav v glavi vsakega paketa QUIC. Večina izvedb se izvaja v uporabniškem prostoru, ne v jedrskem prostoru (kot je to storjeno s TCP), zato bi morali pričakovati, da se bo protokol v prihodnosti razvijal.

Bi vse to imelo veliko razliko? Verjetno da, še posebej vpliva na čas nalaganja mobilnih naprav, pa tudi na to, kako končnim uporabnikom strežemo sredstva. Medtem ko v HTTP/2 več zahtev deli skupno povezavo, v HTTP/3 tudi zahteve delijo povezavo, vendar pretakajo neodvisno, tako da odpadli paket ne vpliva več na vse zahteve, samo na en tok.

To pomeni, da se bo z enim velikim svežnjem JavaScript obdelava sredstev upočasnila, ko se en tok ustavi, vendar bo učinek manjši, če več datotek poteka hkrati (HTTP/3). Torej embalaža je še vedno pomembna.

HTTP/3 še vedno poteka. Chrome, Firefox in Safari že imajo izvedbe. Nekateri CDN že podpirajo QUIC in HTTP/3. Konec leta 2020 je Chrome začel uporabljati HTTP/3 in IETF QUIC, pravzaprav vse Googlove storitve (Google Analytics, YouTube itd.) Že delujejo prek protokola HTTP/3. Spletni strežnik LiteSpeed ​​podpira HTTP/3, vendar ga še ne podpirata niti Apache, nginx ali IIS, vendar se bo verjetno leta 2021 hitro spremenil.

The Spodnja črta: če imate možnost uporabe HTTP/3 na strežniku in na CDN -ju, je to verjetno zelo dobra ideja. Glavna korist bo pri pridobivanju več predmetov hkrati, zlasti pri povezavah z visoko zakasnitvijo. Zaenkrat še ne vemo, saj na tem področju ni veliko raziskav, vendar so prvi rezultati zelo obetavni.

Če se želite podrobneje poglobiti v posebnosti in prednosti protokola, si oglejte nekaj dobrih izhodišč:

    , skupno prizadevanje za dokumentiranje protokolov HTTP/3 in QUIC. Na voljo v različnih jezikih, tudi kot PDF. z Danielom Stenbergom z Robinom Marxom uvaja osnovne koncepte protokolov QUIC in HTTP/3, pojasnjuje, kako HTTP/3 obravnava blokiranje vodnikov in migracijo povezav ter kako je HTTP/3 zasnovan kot zimzelen (hvala, Simon!).
  • Na spletnem mestu HTTP3Check.net lahko preverite, ali strežnik deluje prek protokola HTTP/3.

Testiranje in spremljanje

  1. Ali ste optimizirali svoj revizijski potek dela?
    Morda se ne sliši kot velika stvar, vendar vam lahko pravilne nastavitve na dosegu roke prihranijo kar nekaj časa pri testiranju. Uporabite Alfredov potek dela Tima Kadleca za WebPageTest za predložitev testa javnemu primerku WebPageTest. Pravzaprav ima WebPageTest veliko nejasnih funkcij, zato si vzemite čas, da se naučite brati tabelo s pogledom na slap WebPageTest in kako prebrati tabelo s prikazom povezave WebPageTest, da hitreje diagnosticirate in odpravite težave z zmogljivostjo.

Oglejte si nedavno izdano programsko opremo AutoWebPerf, ki omogoča samodejno zbiranje podatkov o zmogljivosti iz več virov. Na vaših kritičnih straneh lahko na primer nastavimo dnevni preizkus, da zajamemo podatke o polju iz API -ja CrUX in laboratorijske podatke iz poročila o svetilniku iz PageSpeed ​​Insights.

In če morate nekaj hitro odpraviti, vendar se zdi, da je postopek izdelave izjemno počasen, upoštevajte, da "odstranitev presledkov in uravnavanje simbolov predstavljata 95% zmanjšanja velikosti v poenostavljeni kodi za večino JavaScript in mdash, ki niso podrobno preoblikovane kode. Lahko preprosto onemogočite stiskanje, da pospešite gradnjo Uglify za 3 do 4 -krat. "

  1. Ali ste preizkusili v brskalnikih proxy in starejših brskalnikih?
    Testiranje v Chromu in Firefoxu ni dovolj. Preverite, kako vaše spletno mesto deluje v brskalnikih proxy in starejših brskalnikih. UC Browser in Opera Mini imata na primer pomemben tržni delež v Aziji (do 35% v Aziji). Izmerite povprečno hitrost interneta v državah, ki vas zanimajo, da se izognete velikim presenečenjem. Preizkusite z omejitvijo omrežja in posnemajte napravo z visokim DPI. BrowserStack je odličen za testiranje na daljavo prave naprave in ga dopolnite z vsaj nekaj resničnimi napravami v svoji pisarni & mdash je vredno.

Pomemben vidik 404 odgovorov je dejanski velikost telesa odziva ki se pošlje v brskalnik. Glede na raziskavo Matta Hobbsa na 404 straneh velika večina 404 odgovorov prihaja iz manjkajočih favicon, zahtev za nalaganje WordPressa, zlomljenih zahtev JavaScript, datotek manifestov ter datotek CSS in pisav. Vsakič, ko stranka zahteva sredstvo, ki ne obstaja, bo prejela odgovor 404 - in pogosto je ta odziv velik.

Preverite in optimizirajte strategija predpomnjenja za vaših 404 strani. Naš cilj je, da brskalniku ponudimo HTML le, ko pričakuje odgovor HTML, in vrnemo majhno obremenitev za vse ostale odgovore. Po Mattovih besedah ​​"če CDN postavimo pred svoj izvor, imamo možnost predpomniti odziv strani 404 na CDN. To je koristno, ker bi brez njega lahko pritisk na stran 404 uporabili kot vektor napada DoS prisiliti izvorni strežnik, da se odzove na vsako zahtevo 404, namesto da CDN -ju dovoli, da se odzove s predpomnjeno različico. "

Ne samo, da lahko napake 404 škodijo vaši uspešnosti, ampak lahko tudi stanejo v prometu, zato je dobro, da stran z napako 404 vključite v svoj komplet za testiranje Lighthouse in sčasoma spremljate njeno oceno.

Seveda bo dejansko soglasje verjetno spremenilo vpliv skriptov na splošno uspešnost, zato bi, kot je opozoril Boris Schapira, morda želeli preučiti nekaj različnih profilov spletne uspešnosti:

  • Soglasje je bilo v celoti zavrnjeno,
  • Soglasje je bilo delno zavrnjeno,
  • Soglasje je bilo v celoti podano.
  • Uporabnik ni ukrepal ob pozivu za soglasje (ali pa ga je blokiral blokator vsebine),

Običajno pozivi k soglasju za piškotke ne bi smeli vplivati ​​na CLS, včasih pa vplivajo, zato razmislite o uporabi brezplačnih in odprtokodnih možnosti Osano ali piškotka za soglasje.

Na splošno velja pogledati pojavno okno saj boste morali določiti vodoravno ali navpično odmik dogodka miške in pravilno postaviti pojavno okno glede na sidro. Noam Rosenthal deli znanje ekipe Wikimedia v članku Študija primera spletne uspešnosti: predogledi strani Wikipedije (na voljo tudi kot video in minute).

Npr. boste morda želeli zagotoviti, da nobena slika nad gubo ni leno naložena. Delček lahko prilagodite svojim potrebam, npr. za označevanje spletnih pisav, ki se ne uporabljajo, ali zaznavanje pisav ikon. Odlično orodje za zagotovitev, da so napake vidne med odpravljanjem napak, ali pa samo za hitro revizijo trenutnega projekta.

Ko govorimo o hitrem času do interaktivnosti, običajno mislimo na pokazatelj, kako kmalu uporabnik lahko komunicira s stranjo tako, da klikne ali se dotakne povezav in gumbov. Pri bralnikih zaslona je kontekst nekoliko drugačen. V tem primeru hiter čas do interaktivnosti pomeni, koliko čas gre mimo, dokler bralnik zaslona lahko napove navigacijo na dani strani in bralnik zaslona lahko uporabnik dejansko pritisne tipkovnico za interakcijo.

Léonie Watson je odprla oči o uspešnosti dostopnosti in zlasti o vplivu počasnega nalaganja na zamude pri objavah bralnika zaslona. Bralniki zaslona so navajeni hitrih objav in hitrega krmarjenja, zato so potencialno lahko še manj potrpežljivi kot vidni uporabniki.

Velike strani in manipulacije DOM z JavaScriptom bodo povzročile zamude pri objavah bralcev zaslona. Precej neraziskano področje, ki bi lahko uporabilo nekaj pozornosti in preizkusov, saj so bralniki zaslona na voljo dobesedno na vseh platformah (Jaws, NVDA, Voiceover, Narrator, Orca).

Preglejte uporabo rešitev RUM za spremljanje sprememb v delovanju skozi čas. Za avtomatizirana orodja za testiranje obremenitve, podobne enotnim preskusom, lahko uporabite k6 z njegovim skriptnim API-jem. Oglejte si tudi SpeedTracker, Lighthouse in Calibre.

Hitre zmage

Ta seznam je precej obsežen in dokončanje vseh optimizacij lahko traja kar nekaj časa. Kaj bi torej storili, če bi imeli le 1 uro časa za pomembne izboljšave? Zavremo vse skupaj 17 nizko visečih plodov. Očitno je, da preden začnete in ko končate, izmerite rezultate, vključno z Največjo vsebinsko barvo in Časom do interakcije na 3G in kabelski povezavi.

  1. Izmerite izkušnje iz resničnega sveta in si postavite ustrezne cilje. Prizadevajte si biti vsaj 20% hitrejši od svojega najhitrejšega tekmeca. Ostanite v največji vsebinski barvi & lt 2,5 s, zakasnitev prvega vnosa & lt 100 ms, čas do interaktivnosti & lt 5 s pri počasnem 3G, za ponavljajoče se obiske, TTI & lt 2s. Optimizirajte vsaj za prvo vsebinsko barvo in čas do interakcije.
  2. Optimizirajte slike z orodji Squoosh, mozjpeg, guetzli, pingo in SVGOMG ter strežite AVIF/WebP s slikovno CDN.
  3. Pripravite kritične CSS za svoje glavne predloge in jih vstavite v & lthead & gt vsake predloge. Za CSS/JS delujte v okviru proračuna kritične velikosti datoteke max. 170KB gzip (0,7 MB raztegnjeno).
  4. Skrajšajte, optimizirajte, odložite in leno naložite skripte. Investirajte v konfiguracijo svojega paketa, da odstranite odvečne in preverite lahke alternative.
  5. Statična sredstva vedno gostite sami in vedno raje gostite sredstva tretjih oseb. Omejite vpliv skriptov tretjih oseb. Uporabljajte fasade, naložite pripomočke pri interakciji in se pazite odrezkov proti utripanju.
  6. Pri izbiri okvirja bodite selektivni. Za aplikacije z eno stranjo prepoznajte kritične strani in jih statično strežite ali pa jih vsaj vnaprej upodabljajte ter uporabite postopno hidracijo na ravni komponent in uvozne module pri interakciji.
  7. Upodobitev samo na strani odjemalca ni dobra izbira za uspešnost. Predstrani, če se tvoje strani ne spremenijo veliko, in po možnosti odloži zagon okvirov. Če je mogoče, uporabite pretakanje na strani strežnika.
  8. Kodo podedujte samo starejšim brskalnikom z & ltscript type = "module" & gt in vzorcem modul/nomodule.
  9. Eksperimentirajte z združevanjem pravil CSS in preizkusite CSS v telesu.
  10. Dodajte namige o virih za pospešitev dostave s hitrejšim iskanjem dns, vnaprejšnjo povezavo, vnaprejšnjim pridobivanjem, vnaprejšnjim nalaganjem in vnaprejšnjim upodabljanjem.
  11. Podnabor spletnih pisav in jih naložite asinhrono ter uporabite prikaz pisav v CSS za hitro prvo upodabljanje.
  12. Preverite, ali so glave predpomnilnika HTTP in varnostne glave pravilno nastavljene.
  13. Omogoči stiskanje Brotli na strežniku. (Če to ni mogoče, se prepričajte, da je stiskanje Gzip omogočeno.)
  14. Omogočite zastoje TCP BBR, dokler vaš strežnik deluje v jedru Linuxa različice 4.9+.
  15. Omogočite spenjanje OCSP in IPv6, če je mogoče. Vedno vzemite OCSP -jevo spričevalo DV.
  16. Omogočite stiskanje HPACK za HTTP/2 in se premaknite na HTTP/3, če je na voljo.
  17. Predpomnite sredstva, kot so pisave, slogi, JavaScript in slike v predpomnilniku uslužbenca.

Prenesite kontrolni seznam (PDF, strani Apple)

Ob upoštevanju tega kontrolnega seznama bi morali biti pripravljeni na kakršen koli front-end projekt izvedbe. Prenesite PDF kontrolnega seznama, ki je pripravljen za tiskanje, in tudi urejen dokument Apple Pages če želite kontrolni seznam prilagoditi svojim potrebam:

Če potrebujete druge možnosti, lahko preverite tudi sprednji kontrolni seznam Dan Rublic, "Designer's Web Performance Checklist" Jona Yablonskega in FrontendChecklist.

Pa pojdimo!

Nekatere optimizacije morda presegajo obseg vašega dela ali proračuna ali pa so zaradi stare kode, s katero se morate spoprijeti, preprosto pretirane. To je vredu! Uporabite ta kontrolni seznam kot splošen (in upajmo izčrpen) priročnik in ustvarite lasten seznam vprašanj, ki veljajo za vaš kontekst. Najpomembneje pa je, da pred optimizacijo preizkusite in izmerite svoje projekte, da ugotovite težave. Vesele rezultate v letu 2021 vsem!

Največja zahvala Guyju Podjarnyju, Yoavu Weissu, Addyju Osmaniju, Artemu Denysovu, Denysu Mishunovu, Ilyi Pukhalskiju, Jeremyju Wagnerju, Colinu Bendellu, Marku Zemanu, Patricku Meenanu, Leonardu Losovizu, Andyju Daviesu, Rachel Andrew, Anselmu Hannemannu, Barryju Pollardku Hamann, Gideon Pyzer, Andy Davies, Maria Prosvernina, Tim Kadlec, Rey Bango, Matthias Ott, Peter Bowyer, Phil Walton, Mariana Peralta, Pepijn Senders, Mark Nottingham, Jean Pierre Vincent, Philipp Tellis, Ryan Townsend, Ingrid Bergman, Mohamed Hussain S.H., Jacob Groß, Tim Swalling, Bob Visser, Kev Adamson, Adir Amsalem, Aleksey Kulikov in Rodney Rehm za pregled tega članka, pa tudi naša fantastična skupnost, ki je delila tehnike in spoznanja iz svojega dela pri optimizaciji delovanja za vse uporaba. Resnično razbijaš!


Vedno Bodite na poti k Zunanji miški

71% odstotkov kupcev je dejalo, da bodo, če menijo, da ima blagovna znamka prednost pred dobičkom, za vedno izgubili zaupanje v to blagovno znamko. V težkih časih morate kot blagovna znamka in služba za pomoč strankam povrniti in podpreti svoje lokalne skupnosti.

Na primer v času COVID-19 so restavracije delavcem na fronti ponujale brezplačne obroke in dostavo. Nekatere trgovine so namestile tudi sanitarne postaje, ki jih lahko stranke prosto uporabljajo.

Kevin je svetovalec za vsebinsko trženje, ki podjetjem s programsko opremo pomaga graditi marketinške tokove in izvajati oglaševalske akcije z vsebinskim trženjem, da bi povečali svoje vhodne potenciale.


Poglej si posnetek: AVOCADO IN JAIL? FUNkee Bunch Gets Sneaky in Qdoba! Caught by MANAGER! #FREEGUAC