ms.mpmn-digital.com
Resepi baru

Pelayan Qdoba ini Melangkah ke Atas dan Melebihi untuk Membantu Pelanggan yang Kurang Upaya

Pelayan Qdoba ini Melangkah ke Atas dan Melebihi untuk Membantu Pelanggan yang Kurang Upaya


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.


Perbuatan baik antara pekerja Qdoba dan pelanggan tetap yang cacat tertangkap kamera di Kentucky

Di antara peperangan, kebuluran, protes berbaur perkauman, dan kereta api tergelincir, kadang-kadang anda hanya memerlukan kepercayaan anda terhadap kemanusiaan dikembalikan.

Perbuatan baik yang ditangkap di kamera di Kentucky Qdoba menjadi tajuk utama. Khususnya, dia menjadi ramah dengan seorang wanita yang memanggil Qdoba sebagai tempat makan kegemarannya dan selalu memesan perkara yang sama: salad taco dengan sos panas dan keju untuk makan tengah hari, dan burrito dengan sos panas dan keju untuk makan malam.

Setelah menolong pelanggan, yang berada di kerusi bergerak, melalui talian dan mengambil serbetnya, Quarles bertanya kepadanya apakah dia memerlukan apa-apa lagi. Dia berkata, "Sebenarnya, tuan, jika anda tidak keberatan, bolehkah anda menolong saya makan?" Quarles tidak teragak-agak. Pelanggan lain menangkap pertukaran manis di kamera kerana Quarles dengan sabar membantu memberi makan burrito kepada pelanggannya.

"Maksud saya, dia memerlukan pertolongan, dan jika saya tidak akan melakukannya, tidak ada seorang pun," Quarles memberitahu sindiket Fox tempatan. "Siapa lagi yang akan melakukannya?"

Video tersebut sejak itu menjadi viral. Dr. David Jones, pelanggan Qdoba yang mencatatkan pertukaran, mempunyai beberapa pemikiran mengenainya:

"Dia tidak berhenti memikirkannya, 'Yah, haruskah aku membantunya, bukan?' Dia baru saja pergi, memakai sarung tangan dan mulai memberinya makan, "Jones kepada sindiket NBC tempatan. "Sepertinya saya jika semua orang di dunia ini hanya menggunakan sedikit hadiah sederhana yang mungkin mereka dapat memberi manfaat kepada orang lain, fikirkanlah bagaimana dunia ini."


Pelayan Qdoba ini Melangkah ke Atas dan Melebihi untuk Membantu Pelanggan Cacat - Resipi

Kerana ini adalah kali pertama anda masuk, sila mengesahkan akaun anda. Telefon mana yang ingin anda sahkan?

Bagaimana anda mahu menerima kod pengesahan anda?

Sila masukkan kod keselamatan anda di sini:

Jimat 25% pada semua produk doTERRAdengan menjadi ahli hari ini.

Menjadi ahli

  • Diskaun produk 25%
  • Dapatkan mata dan produk percuma
  • Dapatkan penghantaran produk kegemaran anda setiap bulan
  • Terima alat pemula (nilai $ 35!)

Tetamu

Teruja. lain kali anda log masuk dengan pengalaman masuk baru kami yang ditingkatkan menggunakan e-mel anda! Lihat tangkapan skrin di bawah untuk melihat sekilas.


Setiap hari Sabtu, "Dale dan Ma," sebagai pelayan Joe Thomas memanggil mereka, datang ke Springfield, Illinois, IHOP tempat dia bekerja. Ketika suami menolong isterinya dengan perkakasnya, sarapannya akan menjadi sejuk - sehingga Thomas melompat untuk membantu, sambil berkata, "Saya mendapat ini."

Itu lima tahun yang lalu, dan Thomas, yang telah bersama IHOP selama hampir 12 tahun, telah membantu pasangan itu sejak itu. Ternyata, wanita itu menderita penyakit Huntington, penyakit keturunan yang agak jarang berlaku yang mempengaruhi sel saraf di otak, mempengaruhi pergerakan dan kognisi. Dia mampu makan, katakan, anggur atau kepingan epal, tetapi bergelut dengan perkakas.

Thomas, 44, baru-baru ini mengambil masa beberapa minit dari pergantian sarapan yang sibuk untuk bercakap dengan TODAY Food: "Saya selalu menolong orang tanpa mengira siapa pun, apa pun," katanya.

Kasih sayang adalah sifatnya: Sebelumnya, Thomas bekerja sebagai juruteknik pemulihan, membantu individu yang kurang upaya secara kognitif dan perkembangan beralih ke situasi hidup bebas. Dia juga merawat ibunya, yang menderita diabetes, hingga dia meninggal hampir 10 tahun yang lalu.

Sesiapa yang pernah menjaga orang lain yang memerlukan pertolongan tambahan tahu betapa sukarnya tugas harian terkecil, itulah sebabnya mengapa internet secara kolektif meneteskan air mata setelah gambar isyarat Thomas menjadi viral minggu ini.

Seorang pelanggan lain, Keshia Dotson, mengambil gambar itu setelah dia melihat perbuatan Thomas baru-baru ini.

Perkhidmatan meja lain tidak terjejas semasa Thomas menolong pelanggan yang sudah tua, Dotson memberitahu TODAY Food: Pelayan lain malah masuk untuk memeriksa meja Dotson "dan nampaknya senang melakukannya," katanya. "Dia bahkan mengomentari betapa manisnya dia menyangka dia."

Kerana syarikat hanya cenderung mendengar ketika ada yang salah, Dotson mengatakan bahawa dia ingin menonjolkan sesuatu yang baik. "Motif saya dalam memposting foto itu adalah untuk mencoba dan membantu mengenali pelayan ke syarikatnya," katanya, "Saya biasanya mencuba dan menghubungi ketika saya mengalami atau melihat layanan pelanggan yang baik."

Dalam hidupnya sendiri, Dotson bekerja sebagai penyelaras program dewasa dan jangkauan untuk Perpustakaan Rochester di Rochester, Illinois, di mana, katanya, kakitangan berusaha untuk memberi kesan yang baik kepada masyarakat setempat.

"Kami juga mencuba dan melakukan hal yang sama dalam kehidupan pribadi kami, yang sebagian mendorong saya untuk mengambil gambar."

Jurucakap IHOP, Stephanie Peterson, memberitahu TODAY Food bahawa syarikat dan francaisi tempatan, Larry McDonald, "tersentuh dengan tindakan baik Thomas," sambil menambah, "Dari semua yang kita dengar mengenai Joe, adalah wajar untuk pergi di atas dan di luar untuk tetamunya dan isyarat ini hanya menggambarkan siapa dia. Sebagai jenama, kami sangat bangga dengan detik-detik menghangatkan hati seperti ini yang berlaku di restoran kami setiap hari. "

Adapun Thomas, dia bahkan didekati tentang masa depan dalam bidang kejururawatan sejak foto itu menjadi viral. Dia tidak pasti apakah langkahnya yang seterusnya, walaupun dia mengatakan bahawa dia ingin sekali kembali bekerja sebagai juruteknik pemulihan.

Sementara itu, dia berencana untuk terus menolong Dale dan Ma, dan dia gembira dapat mengetahui para reguler dengan baik. "Oh ya, kita kembali," katanya. "Mereka pasangan yang cantik. Orang cantik."


Pelayan Qdoba ini Melangkah ke Atas dan Melebihi untuk Membantu Pelanggan Cacat - Resipi

Earl Alexander
Homewood Suites Keystone di Persimpangan

Matt Anderson
Muzium Kanak-kanak & rsquos Indianapolis

Ryann Ayers
French Lick Resort & Kasino amp

Carlos Bartlett
Rumah Steak St. Elmo

Joe Billerman
Perbadanan Pengangkutan Awam Indianapolis

Hector Bolanos
The Capital Grille

Arturo Boyzo
Restoran Ram & Pembuatan Bir

Emily Bristol
Restoran Rock Bottom & Brewery

Nina Britton
The Westin Indianapolis

Delbert Brooks
Embassy Suites Downtown

Nancy Brunner
Crowne Plaza di Historic Union Station

Bros Buchanan
Kacau Greenwood Kacau

Chris Burgdoefer
Markey & rsquos Sewaan & Pementasan

Michael Burns
Shula & rsquos Steak House

Bobby Cassingham
Hilton Indianapolis

Laurie Christie
Zoo Indianapolis

Alvin Clark
Restoran Levy / Conseco Fieldhouse

Roderick Coleman
Indianapolis Marriott Utara

Cornelius Cooper
Restoran Levy / Conseco Fieldhouse

Floren Dedeaux
Kelab Skyline

Gene Dotts
Kelab Columbia

Kenny Duff
Indianapolis Marriott Utara

Susana Galarza
Holiday Inn Express Hotel & amp Pusat Bandar

Jeffrey Dugger
Bynum & rsquos Steakhouse

Debbie Flemming
Embassy Suites Utara

Faustino Flores
Courtyard by Marriott Northwest

John Fraction
Pusat Bandar Indianapolis Marriott

Clifford Fraser
Hoosier Park Racing & amp Casino

Zeke Garcia
The Capital Grille

Kevin Gearhart
Indiana Langsung! Kasino

Melissa Genrich
Pusat Bandar Sheraton Indianapolis

Evan Gibbons
Perbadanan Sukan Indiana

Ramon Gonzalez
Morton's The Steakhouse Indianapolis

Joe Graham
Restoran Steak Bynum

Sara Grimes
French Lick Resort & Kasino amp

Fred Griswold
Scotty's Brewhouse

Sean Hankerson
14 Restoran & Suite Barat

Hardy Barat
Perbadanan Pengangkutan Awam Indianapolis

Rosa Hernandez
Residence Inn Barat Laut

Jerri Herr
Hampton Inn & amp Suites

Melissa Highbaugh
Holiday Inn Express Selatan

Jeff Hilbert
Sistem Perusahaan Percuma, Inc.

Eric Hinkle
Muzium Indian Amerika Eiteljorg & Seni Barat

Sandie Horner
Taman Sejarah Interaktif Prairie Conner

Kat Houston
Paradise Bakery dan Caf & eacute

Linda Huotilainen
Muzium Kanak-kanak Indianapolis

Emma Johnson
Steak N Shake

Louis Kattie
Syarikat Sewa Kereta

Pamela Kennson
Muzium Seni Indianapolis

Amanda Kirby
Hoosier Park Racing & amp Casino

Jake Klinger
Conrad Indianapolis

Carol Knight
Hilton Garden Inn

Kevin Kosanke
Conrad Indianapolis

Andrew Lannerd
Orkestra Simfoni Indianapolis

Alice Laskowski
Sukan Pacer & Hiburan

Joe Liddy
Carey Limousines of Indiana

Andrew Meyers
Scotty's Brewhouse

Carissa Miller
French Lick Resort & Kasino amp

Kim Mills
Hyatt Regency Indianapolis

Monica Miranda
Hotel Omni Severin

Scott Moore
Mo. Tempat untuk Stik

Wilma Moore
Persatuan Sejarah Indiana

Deb Baru
Drum Corp Antarabangsa

Jim Nutt
Aksen di Indianapolis

Herschel Parr
Lapangan Terbang Crowne Plaza Indianapolis

Rachel Radez
Holiday Inn Express Indianapolis Barat Laut

Irma Rodarte
Hotel Omni Severin

Russell Roth
Hilton Indianapolis

Dave & quotRudy & quot Ruschhaupt
Sistem Perusahaan Percuma, Inc.

Clara Sanchez
Hampton Inn Downtown

Natalie Scheiter
Indianapolis Marriott East

Rennie Schervish
Taman Towne

Heidi Spencer
Steak N Shake

Garth Stapleton
Asrama Indy

Amy Stewart
Harry & amp; Izzy

Megan Stuerenberg
Cambria Suites

Brad Takamura
Kacau Gila - Castleton

Kenneth Taylor
Tong Keropok

Jessica Taylor
Syarikat Pembuatan Bir Alcatraz

Ahmed Touil
Kereta Sewa Nasional & Alamo Rent a Car

Christina Tsui
Ruth's Chris Steak House

Milo Vanek
Perbadanan Sukan Indiana

Betty Jo Vanek
Perbadanan Sukan Indiana

Pansey Weaver
Indiana Langsung! Kasino

Jill Whelan
Taman Sejarah Interaktif Prairie Conner

Frank Wilson
Segway of Indiana, LLC

Jason Woolridge
Renaissance Indianapolis North Hotel

Subuh Muda
Perkhidmatan Pemantauan Elektronik

Alvin & quotBlue & quot Clark & mdash Lead Pastry Chef
Restoran Levy / Conseco Fieldhouse

Penerima ROSE Alvin & quotBlue & quot Clark boleh layak menjadi antara lelaki paling manis yang anda kenali. Itu & rsquos kerana keistimewaannya adalah pencuci mulut. Walaupun tidak langsung berada di garis depan layanan, tidak diragukan lagi bahawa ciptaan kulinernya telah memberikan senyuman ke wajah ribuan pengunjung dan penduduk selama ini. Kerana - pertimbangkan ini - ini adalah tahun ke-53 dalam industri perhotelan. Sudah cukup perjalanan. Clark mula membuat pastri ketika berusia 17 tahun tetapi, kurang pendidikan formal, dia tidak dapat membaca, memaksanya untuk menghafal lebih dari 600 resipi. Pada usia 35 tahun, isteri dan lima anaknya membantunya belajar membaca. Kerjayanya akhirnya membawanya ke Restoran Levy di Conseco Fieldhouse, di mana dia telah menjadi chef pastri utama selama lima tahun terakhir, membuat semua pencuci mulut dari awal. Clark kini berperanan sebagai mentor kepada staf yang lebih muda, menanamkan semangat kepada kerajinannya, kebanggaan penciptaan dan kepuasan pelanggan. Pada tahun 1976, Clark disahkan sebagai Chef Pastri Afrika-Amerika pertama di Amerika Syarikat. Dia juga dinobatkan sebagai Chef of the Year oleh Persekutuan Kulinari Amerika.
& kembali ke atas & gt

Jeff Hilbert dan Dave & quotRudy & quot Ruschhaupt & mdash Master Coach Operator
Syarikat Jurulatih Motor Sistem Perusahaan Percuma

(Bergambar di sebelah kiri adalah Tonia Taylor-Hilbert, isteri Jeff Hilbert, bersama Rudy Ruschhaupt.) Penerima Anugerah ROSE Jeff Hilbert dan Dave & quotRudy & quot Ruschhaupt berkongsi tajuk yang sama: Master Coach Operators. Tuan, memang. Duo yang dinamik mendapat pujian dari semua orang yang mereka hubungi. Istilah dan frasa seperti & quot; profesional, & quot & quot & mesra & & quot & quot; & # 39; & quot; & # 39; & quot & quot; & quot; & # 39; & quot; kegembiraan kuota & & quot; & quot; & quot; yang paling tinggi dalam perkhidmatan pelanggan & quot, & quot; selalu melebihi jangkaan, & quot dan kebanyakan ñ & quotsafe & quot ñ adalah antara banyak komen positif yang mereka terima dari mereka hidang. Sama ada pasukan atletik, lawatan sekolah, kumpulan belia, lawatan keseronokan, lawatan harian atau perjalanan panjang ke lokasi yang jauh, Ruschhaupt dan Hilbert berulang kali melangkah ke atas dan seterusnya untuk memberikan perkhidmatan yang luar biasa. Mereka telah menunjukkan diri mereka lebih daripada pemandu, tetapi panduan, pendamping, kaunselor, komunikator, pelindung, pengendali bagasi dan penyelesai masalah. Kata pencalonan mereka, Pengarah Penjualan Piagam Kathey Morgan, & quot Adalah matlamat kami untuk mengejutkan pelanggan dan orang-orang ini melakukan perkara itu. Wow! & Quot Hilbert telah memacu Free Enterprise selama lebih dari sembilan tahun, sementara Rudy telah bersama Free Enterprise selama lebih dari 12 tahun.
& kembali ke atas & gt

Charles & quotEric & quot Hinkle & mdash Penyelaras Perkhidmatan Pendidikan
Muzium Indian Amerika dan Seni Barat Eiteljorg

Muzium boleh menjadi tempat yang statik. Iaitu, sehingga pintu terbuka.
Maka kekacauan dapat memerintah. Tetapi di Eiteljorg, penerima Anugerah ROSE Eric Hinkle dituduh membawa kegilaan kepada kegilaan, dan kejayaannya melakukannya telah mendapat pujian pelawat, sukarelawan dan rakan sekerja yang patut dicontohi. Hinkle mengawasi lebih daripada 70 pemandu muzium. Dia memadankan panduan dengan kumpulan. Dia merancang, menjadualkan dan mengesahkan ratusan perjalanan untuk beribu-ribu pelawat mulai dari tadika hingga pelajar kolej hingga orang dewasa. Dia menyelaraskan jadual lawatan artis sehingga perjalanan ke sekolah dan pusat komuniti dapat diatur. Dia & amp; rsquos di barisan hadapan menelefon panggilan dan memberikan maklumat. Dan dia melakukan semuanya dengan senyuman. Kata pencalonannya, Pengarah Pendidikan Cathy Burton, & ldquoDia melakukan segalanya dengan humor yang baik, sifat lebih daripada satu orang yang saya bicarakan sebelum ini. Dia tergelak sendiri. Dia gembira dapat menyediakan rancangan yang baik untuk kumpulan pelawat. Dan sekiranya rancangan itu dibatalkan, dia selalu mencari jalan untuk menghasilkan rencana yang lebih baik. & Rdquo Hinkle secara rutin dipuji kerana memperhatikan permintaan serta tindak lanjut dan tindak lanjut yang teliti. Sama ada menggunakan bas, maklumat makan tengah hari untuk kumpulan sekolah atau bahan program, Hinkle bersedia untuk memenuhi sebarang keperluan. Lebih baik lagi, dia adalah duta besar untuk Indianapolis pada amnya dan tarikan-tarikan di pusat bandar lain khususnya. Walaupun Hinkle telah bekerja di Eiteljorg selama lima tahun terakhir, dia mempunyai 20 tahun dalam industri perhotelan, sehingga menjadikannya penerima Anugerah ROSE seumur hidup.
& kembali ke atas & gt

Louis Kattie & mdash Penolong Pengurus
Enterprise Rent A Car, Lapangan Terbang Antarabangsa Indianapolis

Satu kisah mengatakan semuanya mengenai kelayakan penerima Anugerah ROSE Louis Kattie. Itu & rsquos kerana & rsquos cukup cerita mengenai perkhidmatan pelanggan yang luar biasa. Pada bulan Disember yang lalu, seorang pelanggan tiba di Enterprise Rent A Car di Lapangan Terbang Antarabangsa Indianapolis. Dia ke sini untuk menziarahi puteranya yang masih kecil. Kerana dia cacat, pelanggan telah meminta sebuah kereta yang menampilkan kawalan pecutan dan pengereman yang dikendalikan oleh tangan. Sayangnya, kerana perpaduan tempahan, ketika pelanggan tiba, tidak ada kereta seperti itu. Dan, kerana hari Sabtu malam, dia diberitahu bahawa tidak ada yang akan tersedia sekurang-kurangnya hingga hari Isnin. Tidak dapat difahami, pelanggan itu kecewa. Tidak dapat difahami, tanpa kereta yang dilengkapkan khas, dia secara efektif akan terkandas dan tidak dapat memulakan lawatannya dengan anak lelaki ini. Itu & # 39; s ketika Kattie mengetahui keadaan dan melangkah ke hadapan. Dia mengatakan bahawa sebagai ganti mempunyai pengangkutan yang tersedia untuk pelanggan, dia akan menjadi pelanggan & pengangkutan rsquos itu. Pertama, dia mengatur perkhidmatan teksi ke rumah di Mooresville di mana pelanggan akan tinggal. Kemudian, pada keesokan harinya, pada hari Ahad, Kattie tiba di rumah Mooresville itu untuk menjemput pelanggan. Hujan salji turun dan jalan-jalan berbahaya, tetapi Kattie mengarahkan pelanggan ke Plainfield untuk menjemput anaknya, dan kemudian menjabat sebagai sopir mereka hingga larut malam itu. Keesokan paginya, sebuah kereta yang dilengkapi khas terletak. Sekali lagi, Kattie memandu ke Mooresville, mengambil pelanggan, dan mengembalikannya ke Enterprise, di mana kereta itu sedang menunggu. Apa yang tidak pernah disebut oleh Kattie ialah dia sebenarnya tinggal di Noblesville, sekitar 35 batu dari Mooresville. Apabila pelanggan mengetahui bahawa penolong pengurus telah melakukan perjalanan pergi balik sejauh 70 batu, pada hari cuti Ahad, dalam keadaan jalan yang buruk, tentu saja, dia merasa terharu dengan tahap perkhidmatan pelanggan itu. Kattie Louis telah bersama Enterprise Rent a Car selama dua tahun dan, menurut pengurusnya, dia memberikan perkhidmatan pelanggan yang luar biasa sebagai peraturan, bukan sebagai pengecualian.
& kembali ke atas & gt

Pamela Kennson & mdash Docent
Muzium Seni Indianapolis

Penerima Anugerah ROSE Pamela Kennson memainkan peranan penting dalam meningkatkan pengalaman ribuan pelawat setiap tahun ke salah satu tempat paling popular di kawasan Indianapolis & rsquos, Muzium Seni Indianapolis. Tidak sedikit kerana usahanya, jumlah lawatan lawatan awam ke IMA hampir empat kali lipat. Kennson telah mencapai ini dengan memperluas maklumat di kalendar umum untuk memberikan penerangan khusus mengenai lawatan dan pameran. Tetapi perkhidmatannya melebihi bilangannya. Walaupun dia mengawasi program docent relawan muzium & rsquos ini - docent, omong-omong, adalah panduan - dia selalu cepat melangkah ke depan dan bergerak ke peranan docent sendiri. Dia juga telah mengawasi penggunaan video, memungkinkan dokumen untuk merekam sesi pendidikan mereka sendiri. Ini seterusnya telah membolehkan para pendokumen mendapat maklumat yang lebih baik mengenai pameran baru dan idea lawatan. Kennson juga telah memperjuangkan aksesibilitas, terutama bagi mereka yang bermasalah pendengaran, memastikan untuk mengembangkan dan menyediakan alat yang dapat membantu kemampuan mendengar. Pamela telah bersama IMA 11 tahun.
& kembali ke atas & gt

Andrew Meyers & mdash Server, Host, Katering
Scotty's Brewhouse, 96th Street

Hanya dalam satu tahun dengan Scotty & rsquos Brewhouse, Andrew Meyers telah diiktiraf sebagai pekerja minggu ini dan pekerja bulan itu. Sekarang dia menambah Anugerah ROSE untuk perbezaan tersebut. Pengurus Besar Scotty & rsquos, John Cavanaugh memuji Meyers kerana sikapnya yang optimis yang mempengaruhi rakan sekerja, pengurus dan, terutamanya, pelanggan. Semasa bekerja terutamanya sebagai pelayan dan host, Meyers juga memberi kesan positif terhadap operasi katering Scotty & rsquos. Dia & rsquos disebut sebagai alasan utama untuk peningkatan perniagaan sebanyak 400 peratus. Kata seorang pelanggan, & quot; Dia benar-benar mementingkan perincian, selalu mempunyai senyuman di wajahnya dan sikap yang sangat baik-bagaimana-dapat-saya-menolong anda. & Quot Berikut adalah beberapa komen lain dari pelanggan: & quotDia melakukan pekerjaan yang luar biasa.Beberapa orang memberi komen mengenai kehebatannya. & Quot; Anda terpilih sebagai MVP minggu ini. & Quot; Meyers telah bersama Scotty & rsquos selama satu tahun dan di industri perhotelan selama lebih dari enam. Kata Cavanaugh, & quot; Sekiranya Andrew tidak mempunyai cita-cita untuk menghadiri sekolah undang-undang IU, saya & rsquod mempromosikannya menjadi pengurus. & Quot
& kembali ke atas & gt

Kim Mills & mdash Pelayan Makanan dan Minuman
Hyatt Regency Indianapolis

Penerima ROSE Kim Mills dinobatkan sebagai rakan sekutu Hyatt Regency Indianapolis pada tahun 2009. Hotel ini juga mempunyai pasukan All-Star untuk mengiktiraf kecemerlangan perkhidmatan. Mills telah terpilih menjadi pasukan All-Stars tidak kurang dari 18 kali dalam kariernya selama 26 tahun. Ia mudah dilihat mengapa. Sebagai pelatih utama pelayan dan pelatih utama untuk semua pekerja baru, Mills melampaui asas untuk menyampaikan semangat, kemahiran dan pengetahuannya mengenai pekerjaan itu. Tulis salah seorang pelatihnya, & quotAnda menjadikan restoran itu sebahagian daripada keluarga anda dan memperlakukan semua orang seperti mereka adalah anak-anak anda. Anda mempunyai hati yang prihatin dan menunjukkannya setiap hari. & Quot Itu semua tidak berjaya. Pembeli rahsia kemudian menggambarkan perkhidmatan Mills & rsquo sebagai sempurna dan mengatakan Mills, khususnya, "sangat menarik." Kata pengurus Laurie Butler, & quot; Dia mencontohkan kepemimpinan. Kesungguhan kepeduliannya terhadap tetamu dan rakan sekerjanya sungguh luar biasa. Dia memperlakukan restoran itu seolah-olah itu adalah rumahnya. & Quot; Sebagai pelayan di Hyatt Regency Indianapolis sejak 1984, Mills memenuhi syarat sebagai Penerima Sepanjang Hayat Anugerah ROSE.
& kembali ke atas & gt

Rachel Radez & mdash Ejen Perkhidmatan Tetamu / Penyelaras Acara Khas
Holiday Inn Express Northwest - Indianapolis

Dalam mencalonkan Rachel Radez untuk Anugerah ROSE 2010, Penolong Pengurus Besar Brandy McClaren mengatakan bahawa masalahnya tidak muncul sebagai contoh khusus mengenai kecemerlangan perkhidmatannya. Masalahnya adalah menentukan antara yang mana yang harus dipilih. McClaren menyebut pasangan pengantin dengan anggaran yang ketat yang tidak dapat membeli bulan madu mewah di tempat peranginan yang jauh. Oleh itu, mereka menempah bilik di Holiday Inn Express. Dan itu hanyalah bilik standard, bukan juga suite bulan madu. Tetapi, dengan mengambil tempahan mereka, Radez memutuskan & quot; hanya bilik & quot & tidak akan mencukupi. Sebagai permulaan, dia membuat rakan sekerja tertentu akan memberikan sambutan gembira kepada pasangan itu semasa mereka tiba. Kemudian, walaupun ia adalah hari cuti, dia tiba untuk menyambut pasangan itu dengan wain, bunga dan beberapa barang romantis lain, yang semuanya dia bayar dengan wangnya sendiri. Kemudian ada & tetamu biasa yang mempunyai kecacatan intelektual dan fizikal. Radez memastikan dia melakukan perjalanan ke dan dari tempat tujuannya. Dia kadang-kadang membawanya makanan buatan rumah dan cenderung dengan permintaan khasnya. Masih ada lagi tetamu penginapan lama yang telah menerima makanan rumahan yang disampaikan oleh Radez. Kenapa, tetamu bertanya? Radez & rsquos membalas: & quot; Saya tahu & rsquos sudah lama sejak anda & # 39; pulang ke rumah, dan setiap orang semestinya makan di rumah setiap kali & quot & quot. Seberapa popularkah Radez di kalangan tetamu hotel & rsquosnya? Pertimbangkan ini Ö sejumlah tetamu menghadiri majlis perkahwinannya, atau mengirim kad dan hadiah. Walaupun semasa mendaftar masuk, pertanyaan pertama yang sering ditanyakan oleh tetamu ialah, "Di mana Rachel?" Dan jika dia tidak bertugas, mereka ingin tahu kapan dia akan tiba sehingga mereka dapat berkunjung dengannya sebelum dia berangkat. Pengurusan hotel mengatakan Radez telah menjadi bagian penting untuk meningkatkan skor keseluruhan untuk kepuasan tetamu lebih dari 10 peratus pada tahun dia bekerja.
& kembali ke atas & gt

Irma Rodarte & mdash Bilik Atendan
Hotel Omni Severin

Anda boleh bercakap mengenai Irma Rodarte & rsquos selama hampir 10 tahun perkhidmatan sebagai petugas bilik tamu di Omni Severin Hotel. Anda boleh membincangkan bagaimana dia mengisi bila-bila masa di sana & keperluan kerana sakit atau kekurangan pekerja. Anda boleh bercakap tentang bagaimana dia pergi ke atas dan di luar membersihkan bilik tetamu untuk bekerja di lobi, melakukan perkhidmatan persiapan ranjang atau dobi. Anda boleh bercakap tentang sikapnya yang optimis, dia dinobatkan sebagai juara perkhidmatan hotel selama lima tahun berlari, atau dihitung untuk melatih petugas bilik tamu baru. Anda juga boleh membincangkan fakta bahawa beberapa tetamu yang berulang-alik setiap tahun untuk acara berprofil tinggi di Indianapolis secara berkala meminta Rodarte sebagai pembantu bilik tamu mereka. Mereka sahaja yang melayakkan Rodarte menjadi penerima Anugerah ROSE. Tetapi kemudian ada & rsquos juga ini. Tahun terakhir ini, dia membantu menyelamatkan nyawa tetamu & rsquos. Semasa bertugas suatu hari, Rodarte mendengar suara-suara aneh yang datang dari sebuah bilik. Setelah disiasat, dia mendapati seorang tetamu mengalami koma diabetes. Dia dengan cepat memanggil bantuan kecemasan dan tinggal bersama tetamu sehingga bantuan perubatan tiba. Orang yang betul. Tempat yang betul. Masa yang betul. Hidup diselamatkan. John Billstrand, pengarah sumber manusia, mengatakan Omni Severin dan Indianapolis adalah tempat yang lebih baik kerana atau Irma & rsquos hati untuk perkhidmatan dan hubungan tulus yang dia buat dengan pengunjung. Tidak mementingkan diri Rodarte & rsquos meluas ke kehidupan rumahnya, di mana dia dengan senang hati menyediakan makanan untuk mereka yang memerlukan, atau memerhatikan anak-anak jiran & rsquo bila perlu.
& kembali ke atas & gt

Russ Roth & mdash Valet / Bell Kapten
Hilton Indianapolis

Bayangkan nasib dan kegusaran keluarga yang tinggal di Hilton Indianapolis pada Hari Krismas untuk berada dekat dengan anak lelaki mereka, yang telah menjalani pembedahan barah pada hari sebelumnya. Ketika keluarga pergi ke kenderaan mereka untuk pergi ke rumah sakit, mereka mendapati kenderaan tersebut telah dirusak, dengan tingkap pecah. Tidak tahu apa yang harus dilakukan, mereka beralih kepada kapten pelayan / pelayan Russ Roth, penerima Anugerah ROSE 2010. Dalam beberapa minit, dia mengatur sebuah syarikat kaca untuk memperbaiki kenderaan itu, walaupun itu adalah Hari Krismas. Dia memanggil rakannya dalam penyelenggaraan, yang mengosongkan kaca pecah dari kenderaan. Dan sementara keluarga menunggu pembaikan, dia meletakkan kenderaan itu di bawah kanopi hotel sehingga terlindung dari salji yang turun. Lebih cepat daripada yang diharapkan, keluarga itu dalam perjalanan ke hospital. Itu hanyalah salah satu kisah yang menjadi bukti bagi Roth. Terdapat pasukan NBA yang basnya mengalami masalah mekanikal yang mengancam untuk menunda keberangkatannya ke Conseco Fieldhouse. Tindakan pantas Roth & rsquos memastikan pengangkutan alternatif dan ketibaan tepat pada masanya. Pelancong dunia lain yang digambarkan sendiri menyebut Roth & rsquos & perkhidmatan yang luar biasa dan kesediaan untuk membantu dengan apa cara sekalipun. & Quot; Kata penama, & quot; Walaupun gelarannya adalah kapten pelayan / pelayan, anda mungkin mendapati dia menyimpan barang, mengatur pengangkutan, menolong tetamu di pusat perniagaan, di meja depan memeriksa tetamu masuk dan keluar dan juga tempat letak kereta. Dia terus mengambil inisiatif untuk melintasi kereta api dalam setiap aspek keramahan dalam jangkauannya. & Quot; Roth telah bersama Hilton Indianapolis selama dua tahun dan sudah dua kali dinaikkan pangkat. Hilton Indianapolis mengatakan bahawa kerja Russ & rsquos telah memungkinkan hotel untuk meningkatkan tahap kepuasan dan kesetiaan tetamunya.
& kembali ke atas & gt

Kenneth & quotKT & quot Taylor & mdash Pelayan
Kedai Old Cracker Barrel

Semasa anda tiba di Cracker Barrel Old Country Store di North Michigan Road, jika anda bernasib baik untuk duduk di bahagian tertentu, anda akan mendapat makanan yang baru dihidangkan. Anda akan dihiburkan oleh pelayan nyanyian. Itu & rsquos tanda dagangan penerima Anugerah ROSE Kenneth & quotKT & quot Taylor. Mungkin anda & # 39; pernah mendengar nyanyian untuk makan malam anda? Nah, KT membalikkannya. Dia & rsquoll menyanyi bersama sarapan anda. Malah ada bukti video. Satu kumpulan wanita bergurau meminta Taylor menyanyi untuk mereka. Ketika dia benar-benar membuat lagu, salah seorang wanita merakamnya di telefon bimbitnya dan menyiarkannya di You Tube. Video tersebut bertajuk, & quotBest Breakfast Ever. & Quot; Seperti yang sering terjadi, kesan viral dari video tersebut telah berlaku, dan kini KT secara rutin mempunyai pelanggan yang memintanya. Dia telah bekerja di Cracker Barrel selama 3-1 / 2 tahun.
& kembali ke atas & gt

Jason Woolridge & mdash Banquet Set-Up dan Server
Renaissance Indianapolis Utara

Kadang-kadang dikatakan bahawa pemuda disia-siakan pada yang muda. Itu tidak akan berlaku dengan penerima Anugerah ROSE, Jason Woolridge. Tidak lebih dari setahun sejak menamatkan pengajian di Universiti Purdue, Wooldridge telah membezakan dirinya dengan pelanggan dan rakan sekerja dengan sikap, etika kerja dan berorientasikan perkhidmatan. Walaupun tugas utamanya adalah mengatur perjamuan dan dia menghabiskan sebagian besar harinya di & quot; rumah, & quot; yang tidak menghalang Woolridge membuat kesan di muka. Satu jamuan yang dikerjakannya menghasilkan tidak kurang dari 50 kad komen yang memuji pujiannya. Pencalonannya, Pengarah SDM Erin Hayek, menyatakan semuanya bermula dengan pandangan, dengan mengatakan perangainya adalah & quot; 150 peratus positif & quot & bahawa sikap positif itu & quot; kontag. & Quot; Hayek berterusan & quot; Layanannya kepada para tetamu sangat baik setiap hari dan layanannya kepada rakan-rakannya dan pengurus sangat baik setiap saat. Dia mendefinisikan kecemerlangan perkhidmatan dengan positif, komitmen terhadap kesempurnaan, kebolehpercayaannya dan tahap tanggungjawab yang tinggi. Dia dilahirkan untuk menerima anugerah ini. & Quot
& kembali ke atas & gt


Jururawat meja Ashley Jacobs, & # 8216Tidak pernah membosankan & # 8217

Bekerja di bidang perubatan selalu menjadi fikiran bagi Ashley Jacobs. Dan dengan penjagaan selama lima tahun sudah berada di bawah tali pinggangnya, lelaki berusia 26 tahun itu menjangka jalan yang panjang dan indah untuk menolong orang, membina hubungan dan lebih maju lagi.

Jacobs adalah salah satu daripada beberapa jururawat kawasan yang diberi penghormatan oleh Leader Times untuk minggu jururawat. Dia dicalonkan oleh ibunya, Angie, yang mengatakan bahawa anak perempuannya lebih tinggi daripada yang dia sayangi.

& # 8220Dia adalah perawat yang selalu anda inginkan untuk keluarga anda, & # 8221 Angie menulis dalam surat penamaannya. & # 8220Dia baik, penyayang dan suka menolong pesakit dan rakan sekerjanya. Dia memberi 100% setiap hari. & # 8221

Pada masa ini, Jacobs bekerja sebagai jururawat meja di Wesley Village di Pittston. Mengakui bahawa dia awalnya mempunyai rancangan untuk menjadi ahli bedah saraf, Jacobs mengatakan bahawa dia beralih pandangan ke kejururawatan dengan pelbagai alasan, termasuk keinginan untuk lebih dekat dengan pesakit.

Selain interaksi pesakit setiap hari dan memastikan semuanya berjalan lancar di belakang tabir, Jacobs menyatakan bahawa kejururawatan adalah bidang yang menawarkan banyak pintu untuk dibuka. Sebagai jururawat, dia boleh memilih untuk bekerja di mana sahaja di dunia melalui pelbagai kepakaran.

& # 8220Anda boleh pergi ke mana sahaja dan melakukan apa sahaja sebagai jururawat dari jantung hingga pediatrik. Ini adalah profesi yang tidak pernah membosankan, & # 8221 dia menerangkan tentang bidang ini.

Jacobs mengakui bahawa dia tidak mempunyai kisah atau ingatan tertentu yang tetap bersamanya. Sebagai gantinya, dia melihat keseluruhan kerjaya kejururawatannya sebagai saat-saat kebanggaan, kesakitan dan segala yang ada di antara keduanya.

& # 8220Seluruh karier saya, saya mempunyai begitu banyak keluarga, penduduk, rakan sekerja dan pelawat yang menyentuh hati saya. Saya tidak dapat memilih satu sahaja. Saya & # 8217 bekerja malam dan pulang dengan hati yang lega untuk seorang penduduk yang saya harapkan dapat satu hari lagi, dan saya & # 8217 telah memerhatikan ketika pesakit pemulihan telah berjalan keluar dari pintu dan terus dengan kehidupan yang sihat di hadapan mereka, & # 8221 jelasnya .

Pada saat profesion ini menjadi pusat banyak tajuk utama dalam beberapa tahun terakhir, Jacobs mengatakan dia merasa terhormat dan menghargai peluang untuk membantu menunjukkan semua yang dilakukan oleh jururawat.

Bagi pelajar yang bersiap untuk memasuki lapangan, nasihatnya adalah untuk terus berusaha, belajar bersungguh-sungguh dan berusaha untuk tidak menunda-nunda. Kata nasihat lain? Tetap baik dan penyayang, katanya, untuk membantu membuat perbezaan setiap hari.

Secara keseluruhan, memasuki bidang kejururawatan telah membantu mengajar Jacobs bahawa setiap detik penting.

& # 8220Syukurlah dengan apa yang anda miliki, begitu banyak orang yang mempunyai sedikit kehidupan dan masih mempunyai alasan untuk terus berjalan, & # 8221 katanya. & # 8220Menonton orang yang paling rendah dapat membuat anda kecewa, tetapi anda setiap hari mengambil masa dan jika mereka dapat terus tersenyum & # 8211 begitu juga saya. & # 8221

Ashley Jacobs adalah jururawat di Wesley Village di Jenkins Township.

Butch Comegys | Untuk Pemimpin Times

Ashley Jacobs adalah jururawat pemulihan di Desa Wesley di Jenkins Township. Foto oleh Butch Comegys / For Times Leader


Resolusi

Untuk melihat fail Bantuan 32-bit dengan sambungan fail .hlp di Windows, anda perlu memuat turun dan memasang WinHlp32.exe dari Pusat Muat turun Microsoft.

Catatan penting untuk memuat turun program ini

Buka pautan dengan menggunakan Internet Explorer.

Sekiranya anda melihat mesej "Pengesahan Diperlukan" semasa anda membuka halaman muat turun, klik Teruskan, dan kemudian ikuti arahan di skrin.

Apabila anda diminta untuk memuat turun fail, pilih nama fail yang mengandungi "x64" untuk versi Windows 64-bit atau "x86" untuk versi Windows 32-bit. Gunakan maklumat pengesanan automatik berikut untuk membuat pilihan anda.

Program Bantuan Windows tidak disokong pada Windows Server 2012 atau versi Windows Server yang lebih baru.

Sekiranya anda menghadapi masalah semasa anda memasang WinHlp32.exe atau menggunakan Bantuan, pergi ke bahagian "Maklumat lanjut".


Untuk kegunaan luar sahaja. Elakkan sentuhan langsung dengan mata. Sekiranya kerengsaan kulit berlaku, hentikan penggunaannya.

  • Minyak pati CPTG dari Frankincense, Hawaiian Sandalwood, Lavender, Myrrh, Helichrysum, dan Rose memainkan peranan penting dalam menyokong kulit yang kelihatan sihat.
  • Kompleks lipid berada di atas dan di luar pelembap biasa dengan menggunakan lipid yang serupa dengan yang terdapat secara semula jadi pada kulit pada masa prima.
  • Menghidrat secara mendalam untuk mengurangkan penampilan garis-garis halus dan kedutan.
  • Formula lanjutan menggabungkan minyak zaitun, jojoba, dan macadamia untuk menghasilkan kulit yang lembut dan licin.

Momen Perkhidmatan Pelanggan Terbaik di WDW

Walt Disney World terkenal dengan perkhidmatan pelanggan yang luar biasa (kebanyakan). Dan saya ingin mendengar beberapa detik kegemaran anda ketika seorang CM keluar dari sana untuk membantu anda menjadikan perjalanan anda lebih berkesan.

Jadi secara semula jadi saya akan bermula dengan saya sendiri. Saya ibu bapa dan kakak saya yang baru berusia 2 tahun (baru diterima pakai) mempunyai tempahan watak pagi di Cape May Cafe, dan kami menunggu sedikit sehingga kami menaiki bas dari resort kami dan pergi ke Epcot untuk menaiki bas ke restoran. Kami tidak menemui perhentian bas resort sehingga pergi ke pejabat pengangkutan untuk mendapatkan petunjuk, kami memberitahunya apa yang kami lakukan dan dia mengatakan bahawa dia akan membawa kami di syarikat SUV di sana. Ketika berada di dalam kereta, kami mendapat tahu bahawa dia adalah pengarah pengangkutan epcot. Saya terkejut kerana dia meluangkan masa untuk membantu kami. Kami sampai di sana tidak ada masalah

FettFan

Ahli Terkenal

Tidak betul-betul WDW. tetapi ia boleh dikira, kerana kami berada di tempat peranginan. Kami makan malam di Rainforest Cafe di luar Animal Kingdom. Pelayan kami adalah Larry. Dia sangat mengagumkan, malah menolong datuk saya yang kurang upaya menavigasi menu. Selepas makan malam, ketika dia membawa kami wang, dia berpose dengan kami untuk beberapa gambar.

Larry dan kakitangan Rainforest Cafe yang lain berada di puncak permainan mereka, dan saya rasa perkhidmatan mereka benar-benar mengalahkan beberapa restoran di taman. (Saya melihat anda Sci-Fi Dine In)

NemoRocks78

Dirampas

Pumbas Nakasak

Menuju jalan keluar yang hebat.

Berkayu98

Ahli Aktif

JIMINYCR

Ahli Terkenal

Steviej

Ahli Terkenal

Rcapolete

Ahli Aktif

Rumah tumpangan

Ahli Terkenal

Rumah tumpangan

Ahli Terkenal

Phil Besar

Ahli Terkenal

Pada tahun 1995 ayah saya kehilangan topi di Splash Mountain. Itu adalah salah satu topi jenis "John Deere" lama yang tidak berharga tetapi dia masih berharap untuk mendapatkannya kembali. Dalam perjalanan keluar pada akhir malam dia berhenti di Dewan Bandaraya untuk melaporkannya. Dua minggu kemudian topi itu masuk melalui surat. Pada tahun 2009 perkara yang sama berlaku kepada isteri saya. Kami percaya di Pirates di mana dia kehilangan cermin mata hitamnya. Sekali lagi, bukan masalah besar tetapi dengan cara apa pun saya menyuruhnya melaporkannya dan dia menghantarnya kembali melalui surat.

Dari peringkat peribadi saya sangat seronok bercakap dengan lelaki muda di One Man's Dream. Saya benar-benar terpesona dengan jumlah maklumat dan memorabillia di bahagian pra-persembahan. Saya mencarinya dan bertanya adakah dia tahu di mana salah satu peta 1971 yang asli dapat dijumpai. Dia tidak tahu tetapi menasihati saya melihat di Google. Dia kemudian terus bercakap panjang lebar mengenai pembukaan taman pada tahun 1971. Dia sangat mahir dalam semua ini dan saya tidak fikir dia berumur lebih dari 20 tahun. Dari sinilah saya mengetahui bahawa Pirates dipaksa pada tahun 1973 kerana aduan utama tidak memilikinya. Dia mengatakan bahawa mereka terlalu cepat menjadikannya di Disneyland jauh lebih unggul. Terdapat banyak maklumat yang dia kongsi dan dia tidak perlu melakukan ini dengan saya. Akhirnya saya terpaksa diseret dari ceramah Disney saya sejak rancangan itu dimulakan

DizneyPryncess

Ahli Terkenal

Stlbobby

Ahli Terkenal

Saya pernah menyiarkannya sebelum ini, tetapi sepertinya tempat yang bagus untuk mengulangi.

Beberapa tahun yang lalu, saya rasa itu adalah tahun 2006, saya terbang dari St. Louis ke Orlando dan bertengkar dengan rakan penumpang yang kemudian menjadi pertengkaran dengan pramugari. Saya sangat kecewa dan walaupun setelah bercakap dengan pengurus atendan dan perjalanan Magical Express yang meriah ke resort saya. Saya masih kelihatan kecewa.

Semasa mendaftar masuk di SS, CM bertanya kepada saya jika ada sesuatu yang tidak kena dan saya memberitahunya untuk tidak risau kerana itu adalah kesalahan syarikat penerbangan. Dia terus bertanya tentang hal itu dan saya meyakinkannya bahawa itu bukan kesalahan atau masalah Disney, tetapi saya memberinya versi pendek.

Bilik saya tidak siap jadi saya pergi ke Downtown untuk makan tengah hari dan membeli-belah. Ketika saya akhirnya sampai di bilik saya kira-kira tiga jam kemudian ada bakul hadiah kecil dan nota yang menyatakan pengurusan SS tidak mahu percutian saya bermula dengan catatan buruk dan mereka berharap makanan itu dapat membantu.

Rasa makanan itu membantu dan percutian saya menjadi lebih baik. Masalah saya sama sekali tidak berkaitan dengan apa yang dilakukan oleh Disney, tetapi mereka tetap menaburkan sedikit sihir untuk saya.

Saya akan menyatakan bahawa saya bernasib baik dan mendapat salah satu CM terbaik di luar sana, saya harap saya ingat namanya, dan perkara semacam ini tidak 100%, tetapi ia juga belum hilang sepenuhnya kerana sering disebut-sebut.

Wanita ini adalah salah satu daripada banyak CM hebat yang saya temui dalam lawatan saya. Saya mempunyai beberapa kisah hebat lain yang akan saya kongsikan kemudian, jika ini dapat diterima dengan baik.

Saya hanya mahu berkongsi cerita ini kerana sangat bererti pada saya pada masa itu dan masih menyentuh saya hari ini.

Kebingungan

Ahli Terkenal

Saya telah menulis beberapa kali mengenai pengalaman hebat. Saya berusia 3 tahun dan saya bersumpah Cinderella melambai dari istana dan abang saya menjerit Cinderella - kakak saya mahu bertemu dengan anda. Beberapa minit kemudian saya dibawa pergi menemui CInderella di M & ampG peribadi. Saya masih kecil tetapi melihat ke belakang saya menganggap ia adalah sihir membuat CM.

Suatu ketika ketika keluarga saya keluar dari Laut dengan Nemo dan anak bongsu saya menangis bahawa dia mahu meneruskannya lagi. Saya merancang untuk kembali ke barisan ketika seorang CM bertanya kepada anak saya yang berusia 3 tahun apa yang akan membuatnya bahagia dan dia berkata akan kembali dalam perjalanan. Baiklah, CM membawa kami melalui jalan belakang ke barisan hadapan. Anak perempuan saya tersenyum dari telinga ke telinga.

Pada masa yang lain kami berada di L & amp; amp; amp; amp; amp; amp; amp; amp; amp; amp; amp; amp; amp; amp; amp; amp; tele & amp; amp; amp; amp; amp; amp; amp; amp; amp; amp; amp; amp; amp; amp; amp; amp; amp; amp; amp; i & x; i & # x201; waktu yang lain kita berada di ling M & ampG untuk melihat peri di bandar tua toon Ketika sampai di depan, kami bertanya peri mana yang ada dan mereka adalah peri yang baru kami lihat. CM bertanya kepada saya siapa yang ingin kita lihat dan saya memberitahunya Fawn atau Irridescia. Dia memanggil saya ke samping dan memberitahu saya bahawa Fawn akan berada di sana selepas rehat seterusnya dan memberi saya kad untuk dibawa kembali ke jalan belakang untuk menjadi salah satu yang pertama bertemu Fawn - anak-anak perempuan saya merasa seperti kerabat diraja.

Suatu pagi di POFQ bas berjalan sangat SANGAT - ada 4 bas HS b2b tetapi kami mahukan EPCOT. CM menarik dipanggil ke pengangkutan dan kemudian membuka kotak sihir dengan perhiasan yang dia tawarkan kepada anak perempuan saya untuk membuat mereka bahagia.

Malam Krismas kami pergi dari POFQ ke CS untuk makan malam. Kami menaiki bas ke AK kemudian bergerak ke CS. Bas AK berhenti dan kami satu-satunya orang. Kami menyatakan di mana kami pergi dan pemandu bas membawa kami terus ke CS.

Saya rasa saya mempunyai ratusan lagi!

Taylor

Ahli Terkenal

Cuaca_Lady

Ahli Terkenal

Saya telah menceritakan kisah ini pada topik yang berbeza, tetapi untuk membuat cerpen panjang:

Saya dan suami, kakak saya, suaminya, dan ibu bapa saya melakukan perjalanan bersama ke WDW pada tahun 2005. Kami menempah pakej selama seminggu, tinggal di Coronado Springs, dengan seorang ejen pelancongan tempatan yang terkenal. Kami membuat tempahan hampir setahun lebih awal dan membayar sepenuhnya sebelum tarikh akhir. Malangnya, ejen itu tidak tahu apa yang dia lakukan. Dia tidak pernah mengirimkan Mickey Mail kepada kami (dan kami juga tidak memintanya): hanya buku kecil barang jenis kupon yang telah dicetaknya di pejabat yang menyenaraikan perincian tempahan kami, yang dia katakan kepada kami adalah semua yang kami perlukan. Perjalanan kami berjalan lancar tetapi ketika kami sampai di Coronado Springs untuk mendaftar masuk, CM di meja mengatakan bahawa dia tidak pernah melihat apa-apa seperti & quot; kupon & quot yang kami ada, dan tidak tahu apa yang harus dibuat dari mereka. Dia juga tidak dapat menemui tempahan kami dalam sistem. Setelah mencuba selama beberapa jam (tetapi mungkin 15 minit), dia memanggil seorang pengurus, yang cuba menghubungi ejen pelancongan kami melalui telefon (tetapi tidak dapat, kerana pada hari Sabtu dan pejabat pelancongan ditutup.) enam dari kami berdiri di sana dengan tangisan yang dikelilingi barang-barang kami, memikirkan bahawa percutian yang telah kami simpan dan simpan telah menguap di depan mata kami.

Itulah ketika pengurus menyelamatkan hari itu. Dia melihat barang-barang yang dicetak dari ejen pelancongan kami, memasukkan maklumat ke dalam komputer sebagai tempahan baru, memberikan kad kunci kami dengan tiket yang dimuat dan memberitahu kami untuk pergi membongkar di bilik kami dan pergi ke taman untuk menikmati, bahawa dia akan menguruskan semuanya dengan ejen pelancongan kami sendiri, dan akan menghubungi kami sekiranya terdapat masalah. Sejauh yang saya tahu, dia benar-benar mengambil kata enam orang yang keletihan dengan beberapa cetakan yang tidak bermakna dari agensi pelancongan yang sebenarnya telah kami tempah dan bayar untuk percutian kami!

Pengurus itu benar dengan kata-katanya. Dia menghubungi kami pada hari Isnin untuk mengatakan bahawa dia akhirnya menghubungi ejen kami dan mendapatkan nombor pengesahan yang diperlukan untuk mengesahkan tempahan. (Saya rasa ejen tersebut telah mengeja nama belakang Ayah saya dengan tidak betul atau sesuatu, yang menjadikan tempahan tidak dapat dijumpai oleh CM daftar masuk.) Yang saya tahu ialah pengurus ini mengubah mimpi ngeri percutian menjadi masalah bukan masalah dengan menyapu tangannya (yang mungkin, penuh dengan debu pixie). Saya akan sentiasa berterima kasih kepadanya, dan Disney secara umum, kerana sifatnya yang murah hati.


Adakah anda memberi petua kepada bartender semasa mengisi penanam?

Saya hanya boleh bercakap bagaimana keadaan di sini. Hampir satu-satunya tempat yang mengisi penanam adalah pub minuman. Mereka tidak membagikan bir mereka ke dalam botol sehingga penanam adalah satu-satunya cara untuk membawa pulang sedikit tong dan mungkin sukar untuk mendapatkannya (saya tidak pernah mencuba..olol).

Sekiranya saya berada di pub untuk minum dan ingin pulang ke rumah penanam, maka ya saya pasti akan memberi petua. Sekiranya saya hanya ingin mengisi penanam mungkin tidak dan alasannya mudah. Saya tidak memberi tahu orang yang menjual arak kerana menjual saya 6er, jika ada 6er bir yang ada, saya mungkin tidak akan mendapat penanam. Pengecualian adalah jika saya mendapatkan perkhidmatan dengan segera dan mereka pergi ke atas dan seterusnya, maka saya akan memberi sedikit maklumat tetapi tidak seperti yang saya lakukan sekiranya saya duduk di pub. Penanam IMO adalah 99% masa untuk memulakannya. (tidak bermaksud saya tidak punya lol)

Deflagratio

Ahli Terkenal

GuldTuborg

Ahli Penyokong

ChillWill

Ahli Terkenal

Bovineblitz

Ahli Terkenal

Pengembara malam

Ahli Terkenal
Ahli Terkenal

Saya pernah menjadi barista, pelayan, busser, bar back, dan bartender. Beberapa pada masa yang sama bekerja berbeza. Baristas bekerja paling sukar sejauh ini untuk membina minuman. Perkara terbesar yang saya sedar sekarang ialah dengan perkhidmatan, perkhidmatan bas, atau bar sokongan, anda selalu dapat melarikan diri dari pelanggan. BUKAN dengan bartending. Tetapi anda berkata, & quot; Baiklah saya bukan salah satu daripada orang-orang itu & quot; Suatu hari anda akan menjadi. Dolar bir sesuai untuk tip (atau kurang jika itu adalah perubahan yang tinggal). Sekiranya minuman anda memerlukan pengocok atau lebih daripada 3 ramuan, 2 $ adalah wajar.

Apa yang tidak disedari oleh kebanyakan orang adalah bahawa 9/10 kali tip itu diberikan kepada tukang masak. Oleh itu, pernyataan, "Saya tidak memberi tip kepada seseorang kerana memberikan makanan kepada saya." Bagaimana dengan tip orang yang membuatnya? Anda selalu boleh bertanya kepada orang yang mengambilnya jika petua itu akan diberikan kepada tukang masak.

Akhir sekali keseluruhan hujah bahawa tidak ada orang yang memberi tipuan untuk melakukan pekerjaan anda juga IMO palsu. Sekiranya anda mahukan petua, bekerja di industri perkhidmatan dan banyak berteriak. Sekiranya bekerja di bar hebat atau tidak ada kerumitan, kami tidak akan mendapat minuman shift untuk meningkatkan semangat.

Ahli Terkenal

INI adalah masalah dengan keseluruhan sistem ini. Apa yang di dunia akan membuat anda memberi tip kepada seseorang kerana memberikan layanan yang kurang sempurna.

Sekiranya saya melakukan perkara yang kurang daripada & quot; baik & & quot; & & quot; & quot; & quot; & quot; dijangkakan & quot; di tempat kerja saya, saya mendapat amaran, dihantar ke rumah, atau boleh kehilangan pekerjaan saya - apatah lagi jika saya tidak berada dalam permainan saya, saya boleh digugat dan seseorang boleh mati.

Mlg5039

Ahli Terkenal

Bersetuju. Memberi petua walaupun perkhidmatannya buruk adalah mengukuhkan tingkah laku itu. Tunggu kakitangan dan bartender benar-benar tidak peduli tentang tahap perkhidmatan mereka jika mereka selalu diberi petua untuk pekerjaan mereka.

Seperti yang anda katakan, di hampir semua profesion lain, mereka akan ditegur kerana prestasi yang kurang diharapkan.

Tetapi kepada OP, ya saya memberikan dolar kepada bartender yang bagus untuk mengisi Growler yang segar.

Rycov

Ahli Terkenal
Ahli Terkenal

Sekiranya atasan anda tidak menyukai apa yang anda lakukan, mereka TIDAK BOLEH membayar anda. Mereka boleh menghantar anda pulang, tanpa membayar sekitar 70% negeri AS.

Memberi tip adalah ganjaran untuk melakukannya dengan baik. Memberi tip kepada seseorang yang suka mengongkong adalah seperti memberi anjing anda rawatan untuk bermain di lantai.

KERJA mereka adalah untuk memberikan layanan yang baik. Sekiranya mereka tidak dapat melakukan pekerjaan mereka, mereka tidak mendapat ganjaran gaji tambahan dari saya. Sekiranya mereka berjaya, mereka akan mendapat tip yang baik. TETAPI anda tidak dijamin tip.

Tidak sukar untuk dilakukan dengan baik. Neraka, anda boleh merosakkannya dengan teruk, tetapi jika anda hanya mengatakan & quot; Maaf, saya akan memperbaikinya & bukannya menggantikan wang biasa, itu adalah tukang masak / bartender / pengurus / orang lain selain lagu dan tarian kesalahan saya, anda Selalunya akan tetap adil.

Walau apa pun, bentuk, atau bentuk adalah petua yang DIPERLUKAN walaupun anda memberi saya layanan yang jelek. Sekiranya anda ingin menjana lebih dari 2 dolar sejam (BTW, kira-kira 50% negeri memerlukan upah sekitar dua kali ganda daripada pekerja tipikal) kemudian lakukan pekerjaan anda.

Mengisi penanam semata-mata tidak bermaksud anda mendapat tip. Tahniah, anda melakukan fungsi paling asas dalam tugas anda, inilah hadiah!

Rycov

Ahli Terkenal

Deflagratio

Ahli Terkenal

Liar4450

Diharamkan

Yang saya tahu ialah menjadi tipper yang baik telah menghasilkan BANYAK minuman percuma dan perkhidmatan terbaik. Pulangan yang baik untuk pelaburan kecil.

ChillWill

Ahli Terkenal

ReverseApacheMaster

Diharamkan

Saya tidak setuju dengan konsep tip = upah tetapi saya sedar bahawa sistem ini berfungsi. Saya tidak memberi tip kepada orang yang tidak dibayar gaji berdasarkan tip kecuali mereka melampaui tugas perkhidmatan mereka. Saya merasa tidak masuk akal dan agak menyinggung perasaan ketika saya pergi ke tempat makanan segera dan mereka menulis atau mencetak garis tip pada resit. Sekiranya anda menghasilkan $ 8 / jam anda tidak memerlukan tip selama dua minit yang diperlukan untuk menyatukan sandwic saya dan memasukkannya ke dalam beg.

Saya juga tidak percaya bahawa layanan buruk bermaksud saya masih harus memberi tip atau membuang masa untuk memberitahu pengurus bahawa pekerjanya tidak menjalankan tugas mereka. Bagaimanapun, tugas pengurus - mengurus. Perkhidmatan jelek bermaksud tidak ada tip. Secara peribadi saya fikir jika anda akan meletakkan garis besar pada resit kad kredit yang membolehkan saya menyesuaikan jumlahnya, ia harus berfungsi dengan baik. Perkhidmatan yang benar-benar buruk bermaksud bukannya menambah jumlah yang seharusnya saya tolak darinya. Namun, saya belum mencubanya. Saya tidak mendapat layanan buruk dalam masa yang sangat lama.

Saya juga percaya bahawa kerja yang diharapkan daripada anda membenarkan lebih banyak tip. Sekiranya anda menyediakan meja saya selama satu jam dengan mengambil pesanan, membawa minuman / makanan, mengisi air, dan lain-lain, anda layak mendapat tip (dan lebih banyak tip) daripada seseorang yang memerlukan panggilan dua minit untuk pesanan ambil dan dua minit lagi untuk membunyikannya. Walau bagaimanapun, saya biasanya memberi petua bartender jauh di atas norma selagi perkhidmatannya baik. Saya mengambil kira kualiti perkhidmatan kerana kesibukannya. Sekiranya anda mempunyai semua jadual penuh di bahagian anda, saya dapat memahami beberapa penantian. Sekiranya saya satu-satunya meja, gelas air saya tidak boleh kosong.

Untuk OP, ya, saya akan memberi petua untuk mengisi penanam seperti memesan bir. Ia hampir sama.

Rycov

Ahli Terkenal

The_trout

Ahli Terkenal

Buat tiga. Saya pernah menggantung di Toad pada awal 90-an. Ia adalah bar yang hebat dan salah satu daripada beberapa tempat anda boleh mendapatkan bir yang baik. Saya menganggap ia masih hebat. Saya rasa saya terlalu tua untuk penonton Alaxander St. pada masa ini.

Sejauh memberi tip, ya. Saya juga mengikuti peraturan $ 1 / draf. Saya mungkin pergi dengan memberi perhatian pada penanam. Sekiranya saya akan berada di sana sebentar, saya akan menjalankan tab dan memberi tip minimum 10% untuk perkhidmatan rata-rata. Sekiranya saya mempunyai pelayan koktel, saya akan mendapat 15% +. Sekiranya minuman bernilai $ 20 hilang secara misteri dari tab saya tambahan $ 10 secara misteri muncul di hujungnya.

Saya juga telah melakukan kerja resturant sepenuhnya, dari mesin basuh pinggan mangkuk hingga bartender dan semua perkara di antaranya. Sebilangan besar orang yang anda berinteraksi bekerja lebih rendah daripada gaji minimum dan bergantung kepada petua untuk membayar bil mereka.

Pusat bandar3641

Ahli Terkenal

Saya seorang paramedik oleh perdagangan. Saya melakukan pekerjaan itu kerana saya menyukainya, bukan kerana saya berharap dapat menjadi kaya. Itu perkara yang baik, kerana saya dibayar omong kosong.

Saya membawa orang-orang kembali dari kematian, dan saya tidak boleh mendapatkan maklumat. Saya juga tidak menyangka.

Seseorang mengambil gelas dan menuangkan saya minuman tidak akan mendapat keuntungan hanya untuk usaha saya.

JIKA mereka memberi saya nasihat yang baik, layanan hebat, dan menjadikan penginapan itu menyenangkan, saya akan memberi nasihat ok. Tetapi hanya ada dan menjalankan fungsi asas pekerjaan mereka tidak memberi mereka hak istimewa untuk memberi tip.

Anda dibayar lebih daripada beberapa dolar sejam untuk melakukan tugas anda. Sentiasa atasi masalah anda sekiranya sekurang-kurangnya mencukupi. Saya tidak peduli jika anda memberi petua kepada bartender anda. Betul, tetapi sekurang-kurangnya mereka tidak bergantung sepenuhnya pada petua.

Saya tidak boleh mempercayai orang yang merasakan mereka harus memberi tip kepada pelayan kecuali mereka sangat hebat. Tinggal di rumah.

Ahli Terkenal

Memberi tahu tukang masak itu diperlukan atau disyorkan di setiap pekerjaan restoran yang saya ada. Secara amnya sekitar 10% sama ada tip atau penjualan makanan. Sekiranya penjualan makanan, ia sangat menyedihkan bagi pelayan bar kerana kebanyakan orang tidak memberi nasihat ketika memesan makanan dari bar.

Perbezaannya mungkin di OR setiap orang mendapat gaji minimum penuh.

ChshreCat

Ahli Terkenal

Habuk kering

Ahli Terkenal

Sebilangan besar bar saya pergi untuk harga bir mereka dengan harga 4 dolar per liter, jadi jika saya membayar tunai, saya selalu menyerahkan 5 dan menyebutnya bagus. Sekiranya saya menjalankan tab, saya biasanya mendapat kira-kira 5 dolar.

Ya, bartender hanya mengisi gelas sementara pelayan / pelayan harus melakukan lebih banyak perkara. Tetapi bartender juga harus berurusan dengan lebih banyak orang yang menjadi orang gila apabila alkohol sedikit pun memasuki sistem mereka, jadi saya agak bersimpati dengan mereka. Terutama pada hari Jumaat dan Sabtu malam. Selain itu, banyak bar yang pernah saya lalui mempunyai 100 orang di dalamnya dan hanya seorang bartender yang bekerja, jadi dia menghancurkan pantatnya. Sekiranya saya membuatnya meluangkan masa untuk mengisi penanam, saya pasti akan memberikan sesuatu kepadanya. Mungkin beberapa dolar.

Dallasdb

Ahli Terkenal

Semoga tidak ada yang tersinggung. Saya sangat setuju bahawa tidak perlu memberi tip.

Walau bagaimanapun, terdapat kawasan kelabu tertentu ketika hendak memberi tip. Saya juga baru-baru ini melihat semakin banyak tempat menambah & cawan kuotip & quot di hadapan daftar mereka.

Terdapat beberapa tempat makanan Meksiko makanan segera / santai di Denver yang mempunyai cawan tip di sebelah daftar.

Mereka seperti kereta bawah tanah tetapi untuk Burritos dan Tacos. Ini adalah setengah langkah di atas makanan segera. Saya tidak mahu memilih makanan & makanan cepat saji & burrito.

Bagi saya, itu adalah kawasan kelabu.

Thezepster

Ahli Terkenal

Semoga tidak ada yang tersinggung. Saya sangat setuju bahawa tidak perlu memberi tip.

Walau bagaimanapun, terdapat kawasan kelabu tertentu ketika hendak memberi tip. Saya juga baru-baru ini melihat semakin banyak tempat menambah & cawan kuotip & quot di hadapan daftar mereka.

Terdapat beberapa tempat makanan Meksiko makanan segera / santai di Denver yang mempunyai cawan di sebelah daftar.

Mereka seperti kereta bawah tanah tetapi untuk Burritos dan Tacos. Ini adalah setengah langkah di atas makanan segera. Saya tidak mahu memilih makanan & makanan cepat saji & burrito.

Bagi saya, itu adalah kawasan kelabu.

Orang gila

Ahli Terkenal
Ahli Terkenal

Skibb

Ahli Terkenal

IffyG

Ahli Terkenal

Rycov

Ahli Terkenal

Memberi tahu tukang masak itu diperlukan atau disyorkan di setiap pekerjaan restoran yang saya ada. Secara amnya sekitar 10% sama ada tip atau penjualan makanan. Sekiranya penjualan makanan, ia sangat menyedihkan bagi pelayan bar kerana kebanyakan orang tidak memberi nasihat ketika memesan makanan dari bar.

Perbezaannya mungkin bahawa di OR setiap orang mendapat gaji minimum penuh.

Rexbanner

Ahli Terkenal

Saya bekerja di salah satu Starbucks yang paling sibuk di A.S. Kami mempunyai enam pekerja yang bekerja sekaligus - sebuah kedai dengan jumlah tinggi biasa mempunyai 4 maks. Talian keluar dari pintu sepanjang masa saya bekerja. Cuba perhatikan sebilangan 30 minuman untuk dibuat. Itu seperti 30 minuman campuran.

Anda tidak mendapat simpati dari saya. Saya membuat gaji minimum. Saya bekerja dari jam 5 pagi hingga 11 pagi dan kemudian pergi ke kelas sehingga jam 4. Saya mendapat tip ZERO kerana ia adalah kedai francais.

Separuh daripada bartender yang saya hadapi adalah douchebag yang sombong atau gadis yang menganggap mereka ketinggalan California. Minggu lalu saya cuba membeli air di sebuah kelab dengan harga 5 dolar. Jalang bodoh itu tidak memberitahu saya bahawa ada minimum $ 30 sehingga saya bertanya mengapa tidak ada jumlah dolar untuk jumlah itu. Apabila saya memberitahunya saya akan lulus, dia meletakkan tip $ 250 pada nama saya dan memalsukan tandatangan saya selepas itu. Sebulan yang lalu seorang bartender enggan melayan saya kerana saya hanya memberikan tip 10% pada minuman pertama yang saya pesan. Di kuliah, ada sebuah bar di mana jika anda memberi isyarat bahawa anda ingin memesan dengan cara, bentuk, atau bentuk apa pun, anda akan dipotong.

**** ITU. Saya memberi petua kepada semua pelayan 20% standard. Bartender harus bersyukur dengan apa sahaja yang saya berikan kepada mereka. Saya selalu memberi tip antara 10-20%. Awak mahu lagi? Jadilah baik. Jangan menjadi douche. Lain kali apabila orang bodoh ini mempunyai masalah, saya akan berusaha memecat mereka.

Ahli Terkenal

Sekiranya anda serius ingin bertanya kepada saya tentang betapa sukarnya menjadi pelayan, saya cadangkan anda memahami kenyataan. Apabila anda dewasa dan mendapat pekerjaan lelaki besar, kita boleh bercakap mengenai pekerjaan sukar dan keadaan menyentuh.

Adakah pekerjaan anda pernah mengakibatkan hidup atau mati seseorang hanya berdasarkan keputusan anda?

Tugas anda adalah pergi bekerja, mengambil pesanan, mengembalikan pesanan tersebut, dan mengelap dari meja. STFU.

Sekiranya anda mahukan petua, dapatkannya. Dan menyusahkannya dalam tetapan seperti ini lebih cenderung membuat lebih banyak orang anti-tip.

Qhrumphf

Kekal Bersikap, Tetap Pemberontak, Tetap BERBAHAGIA

Iaefebs

Diharamkan

Edb23

Ahli Terkenal

kerana semua orang tidak ada topik.

Sebagai tukang masak, pendapat pelayan saya agak rendah. hampir setiap pelayan yang bekerja di dapur saya (saya telah bekerja di tempat ini untuk beberapa waktu dan telah melihat banyak pelayan datang dan pergi) adalah benar-benar bodoh. pesanan hilang setiap hari, mereka memasukkan tiket untuk perkara yang salah dan kemudian menyalahkan saya semasa saya memasak apa yang mereka minta, dll.

Oleh itu, setiap orang yang bekerja di restoran bergerak secepat yang mereka boleh dan menghancurkan pantat mereka, terutama pada waktu anda mungkin makan. Sama ada mereka mahir dalam pekerjaan mereka lebih berkaitan dengan kebolehan mereka terhadap usaha mereka. Terutama dalam kes bussers (yang bergantung pada petua yang anda berikan sama seperti pelayan) mereka menjalankan tugas itu bukan kerana mereka mahu tetapi biasanya kerana mereka berada dalam keadaan kewangan yang buruk dan ini adalah pekerjaan pertama yang datang. sama ada anda setuju atau tidak, setiap orang Amerika (dan juga kebanyakan orang Eropah) tahu bahawa petua diharapkan, dan tidak memberi tip kepada seseorang kerana mereka tidak dapat membuat pesanan khas anda dengan betul atau tidak mengisi gelas air anda pada saat anda menyelesaikannya adalah perkara yang mengerikan. orang-orang itu menghancurkan pantat mereka untuk mencuba dan memastikan ANDA bersenang-senang dengan mereka. persekitaran tidak memungkinkan untuk malas, jadi jika ada orang yang bergerak lambat, ia ada kaitannya dengan perkara lain. hanya kerana tidak ramai sekarang ini tidak bermaksud tukang masak tidak mempunyai lima puluh tiket yang sedang mereka kerjakan. dan jika seseorang kelihatan memberi anda sikap, itu mungkin kerana seorang juru masak seperti saya baru saja mengunyahnya kerana kehilangan tiket, atau kerana buat kali kedua belas hari ini beberapa pelanggan memesan stik langka sederhana, mendapat stik langka sederhana, menegaskan bahawa ia sebenarnya sederhana atau bahkan sesuatu yang tidak masuk akal seperti dilakukan dengan baik (ini berlaku hari ini) dan kemudian menghantarnya kembali dan tidak memberi tip kerana mereka mendapat & quot; salah & quot harga pada stik mereka. tip pelayan anda

Ahli Terkenal

kerana semua orang tidak ada topik.

Sebagai tukang masak, pendapat pelayan saya agak rendah.hampir setiap pelayan yang bekerja di dapur saya (saya telah bekerja di tempat ini untuk beberapa waktu dan telah melihat banyak pelayan datang dan pergi) adalah benar-benar bodoh. pesanan hilang setiap hari, mereka memasukkan tiket untuk perkara yang salah dan kemudian menyalahkan saya semasa saya memasak apa yang mereka minta, dll.

Oleh itu, setiap orang yang bekerja di restoran bergerak secepat yang mereka boleh dan menghancurkan pantat mereka, terutama pada waktu anda mungkin makan. Sama ada mereka mahir dalam pekerjaan mereka lebih berkaitan dengan kebolehan mereka terhadap usaha mereka. Terutama dalam kes bussers (yang bergantung pada petua yang anda berikan sama seperti pelayan) mereka menjalankan tugas itu bukan kerana mereka mahu tetapi biasanya kerana mereka berada dalam keadaan kewangan yang buruk dan ini adalah pekerjaan pertama yang datang. sama ada anda setuju atau tidak, setiap orang Amerika (dan juga kebanyakan orang Eropah) tahu bahawa petua diharapkan, dan tidak memberi tip kepada seseorang kerana mereka tidak dapat membuat pesanan khas anda dengan betul atau tidak mengisi gelas air anda pada saat anda menyelesaikannya adalah perkara yang mengerikan. orang-orang itu menghancurkan pantat mereka untuk mencuba dan memastikan ANDA bersenang-senang dengan mereka. persekitaran tidak memungkinkan untuk malas, jadi jika ada orang yang bergerak lambat, ia ada kaitannya dengan perkara lain. hanya kerana tidak ramai sekarang ini tidak bermaksud tukang masak tidak mempunyai lima puluh tiket yang sedang mereka kerjakan. dan jika seseorang kelihatan memberi anda sikap, itu mungkin kerana seorang juru masak seperti saya baru saja mengunyahnya kerana kehilangan tiket, atau kerana buat kali kedua belas hari ini beberapa pelanggan memesan stik langka sederhana, mendapat stik langka sederhana, menegaskan bahawa ia sebenarnya sederhana atau bahkan sesuatu yang tidak masuk akal seperti dilakukan dengan baik (ini berlaku hari ini) dan kemudian menghantarnya kembali dan tidak memberi tip kerana mereka mendapat & quot; salah & quot harga pada stik mereka. tip pelayan anda

Saya tidak pernah mengatakan bahawa saya tidak memberi tip kerana kesalahan berlaku, atau kerana sibuk atau lambat.

Saya tidak akan memberi tip kepada seseorang yang memberi saya layanan buruk. Sudah tentu, tidak akan.

Itu tidak ada kaitan dengan kualiti makanan, masa yang diperlukan untuk menghidangkannya, atau mendapatkannya dengan betul. Beberapa petua terbesar saya telah ditinggalkan setelah pesanan diperbaiki. Satu masa dan satu masa hanya dalam hidup saya, saya meminta untuk bercakap dengan pengurus, dan itu bukan kerana pesanan saya telah diperbaiki. Ini kerana pelayan itu tolol. SEPERTI jika saya melihatnya di bar saya akan mengetuknya di rahang.


Contohnya: Saya sering ke HuHot dengan isteri saya. Dia suka makanan gimik, saya rasa sangat menggelikan saya membayar seseorang sebanyak 14 dolar sehingga saya dapat melakukan sebahagian besar pekerjaan. Pelayan tidak mengendalikan makanan utama. Mereka hebat, mengambil pesanan minuman, dan membawa garam / beras. Ini adalah rutin yang sama berulang-ulang kali. Tetapi setiap kali saya pergi ke sana, saya mendapat pelayan yang berbeza (saya jangkakan perolehannya sangat tinggi di sana), dan setiap kali perkhidmatan itu bodoh. Minuman duduk kering selama 15 minit (walaupun setelah meminta pengisian semula. Saya dapati anda berjalan-jalan, tetapi jika seseorang memintanya, lakukan saja), nasi keluar sejuk (ini dari periuk nasi, jadi jika sejuk, ini bermakna mereka membiarkannya terlalu lama. Dan saya sangat menjangkakan bahawa pelayan akan membuangnya, seperti kebanyakan tempat untuk salad sampingan dan seumpamanya), atau minuman saya adalah perkara yang salah.


Sekiranya pelayan tidak menyukai pekerjaan mereka, teruskan. Kedai runcit dan trak sampah juga memerlukan pekerja.

Saya pernah bekerja sebagai tukang masak, pelayan, dan juga mesin basuh pinggan mangkuk di beberapa restoran - dari restoran pizza hingga restoran bintang 4. Saya dapat memberitahu anda fakta bahawa saya menjana banyak wang ketika saya melakukan tugas dengan baik berbanding ketika saya seorang pemuda yang ketam.


Sekiranya anda ingin melihat suasana yang pantas, saya menawarkan untuk membiarkan anda melakukan perjalanan panjang dengan saya dan mungkin kita akan mendapat trauma pelbagai mangsa atau serangan jantung di pusat beli-belah.


Sekiranya semua orang lakukan adalah menarik paip dan menyerahkan saya penanam, mereka mungkin mendapat perbezaan dolar. Sekiranya mereka memberi saya nasihat yang baik untuk minuman, menawarkan pengganti yang baik untuk kegemaran, atau petua tentang sesuatu yang baru, mereka mungkin mendapat beberapa dolar.

Sekiranya mereka membuat saya merasa seperti saya bukan hanya wang yang lain, mereka pasti akan diberi ganjaran hebat. Sekiranya mereka membuat saya merasa seperti saya seharusnya menghabiskan wang saya di tempat lain, saya mungkin akan.


Senarai Semak Prestasi Bahagian Depan 2021

Panduan ini telah disokong oleh rakan kami di LogRocket, perkhidmatan yang menggabungkan pemantauan prestasi frontend, ulangan sesi, dan analisis produk untuk membantu anda membina pengalaman pelanggan yang lebih baik. LogRocket menjejaki metrik utama, termasuk DOM selesai, masa untuk bait pertama, kelewatan input pertama, CPU pelanggan dan penggunaan memori. Dapatkan percubaan percuma LogRocket hari ini.

Prestasi web adalah binatang yang sukar, bukan? Bagaimana kita sebenarnya tahu di mana kedudukan kita dari segi prestasi, dan apa betul-betul masalah prestasi kita? Adakah JavaScript mahal, penghantaran fon web lambat, gambar berat, atau rendering yang lambat? Adakah kita sudah cukup mengoptimumkan dengan pemecahan pokok, pengangkatan skop, pemisahan kod, dan semua corak pemuatan mewah dengan pemerhati persimpangan, penghidratan progresif, petunjuk klien, HTTP / 3, pekerja perkhidmatan dan & pekerja mdash oh pekerja saya & mdash? Dan yang paling penting, di mana kita mula meningkatkan prestasi dan bagaimana kita mewujudkan budaya prestasi jangka panjang?

Kembali pada waktu itu, persembahan sering berlaku pemikiran selepas. Selalunya ditangguhkan hingga akhir projek, ia akan menjadi minifikasi, penggabungan, pengoptimuman aset dan berpotensi beberapa penyesuaian halus pada file konfigurasi pelayan. Melihat ke belakang sekarang, keadaan nampaknya telah berubah dengan ketara.

Prestasi bukan hanya masalah teknikal: ia mempengaruhi segalanya dari kebolehaksesan hingga kebolehgunaan hingga pengoptimuman mesin pencari, dan ketika memasukkannya ke dalam aliran kerja, keputusan reka bentuk harus diberitahu oleh implikasi prestasi mereka. Prestasi harus diukur, dipantau dan diperbaiki secara berterusan, dan kerumitan web yang semakin meningkat menimbulkan cabaran baru yang menjadikannya sukar untuk mengikuti metrik, kerana data akan berbeza secara signifikan bergantung pada peranti, penyemak imbas, protokol, jenis dan latensi rangkaian (CDN, ISP, cache, proksi, firewall, load balancing dan server semuanya berperanan dalam prestasi).

Oleh itu, jika kita membuat gambaran keseluruhan semua perkara yang harus kita ingat semasa meningkatkan prestasi & mdash dari awal projek sehingga pengeluaran laman web terakhir & mdash seperti apa itu? Di bawah ini anda akan menjumpai (semoga tidak berat sebelah dan objektif) senarai semak prestasi depan untuk tahun 2021 & mdash gambaran keseluruhan terkini mengenai masalah yang mungkin perlu anda pertimbangkan untuk memastikan masa tindak balas anda cepat, interaksi pengguna lancar dan laman web anda tidak menguras lebar jalur pengguna.

Isi kandungan


    Budaya prestasi, Core Web Vital, profil prestasi, CrUX, Mercusuar, FID, TTI, CLS, peranti.
    Belanjawan prestasi, matlamat prestasi, kerangka RAIL, anggaran 170KB / 30KB.
    Memilih kerangka kerja, kos prestasi awal, Webpack, dependensi, CDN, seni bina front-end, CSR, SSR, CSR + SSR, rendering statik, prerendering, corak PRPL.
    Brotli, AVIF, WebP, gambar responsif, AV1, pemuatan media adaptif, pemampatan video, fon web, fon Google.
    Modul JavaScript, corak modul / nomodul, penggelapan pokok, pemecahan kod, pengangkatan skop, Webpack, perkhidmatan pembezaan, pekerja web, Perhimpunan Web, kumpulan JavaScript, React, SPA, penghidratan separa, import pada interaksi, pihak ketiga, cache.
    Pemuatan malas, pemerhati persimpangan, rendering dan penyahkodan penangguhan, CSS kritikal, penstriman, petunjuk sumber, peralihan susun atur, pekerja perkhidmatan.
    Stapling OCSP, sijil EV / DV, pembungkusan, IPv6, QUIC, HTTP / 3.
    Aliran kerja pengauditan, penyemak imbas proksi, halaman 404, permintaan kebenaran cookie GDPR, CSS diagnostik prestasi, kebolehaksesan.

(Anda juga boleh memuat turun PDF senarai semak (166 KB) atau memuat turun fail Apple Pages yang diedit (275 KB) atau fail .docx (151 KB). Selamat mengoptimumkan, semua orang!)

Bersedia: Perancangan Dan Sukatan

Pengoptimuman mikro sangat bagus untuk mengekalkan prestasi, tetapi sangat mustahak untuk menetapkan sasaran yang jelas & mdash boleh diukur tujuan yang akan mempengaruhi keputusan yang dibuat sepanjang proses. Terdapat beberapa model yang berbeza, dan model yang dibincangkan di bawah cukup banyak pendapat & mdash pastikan anda menetapkan keutamaan anda lebih awal.

    Membentuk budaya prestasi.
    Di banyak organisasi, pemaju bahagian depan tahu dengan tepat apa masalah mendasar yang biasa dan strategi apa yang harus digunakan untuk memperbaikinya. Namun, selagi tidak ada dukungan budaya prestasi yang mapan, setiap keputusan akan berubah menjadi medan pertempuran jabatan, memecah organisasi menjadi silo. Anda memerlukan pembelian pihak berkepentingan perniagaan, dan untuk mendapatkannya, anda perlu membuat kajian kes, atau bukti konsep tentang bagaimana kepantasan - terutamanya Vital Web Teras yang akan kami bahas secara terperinci kemudian - metrik faedah dan Petunjuk Prestasi Utama (KPI) mereka mengambil berat.

Sebagai contoh, untuk membuat prestasi lebih nyata, Anda dapat memperlihatkan kesan prestasi pendapatan dengan menunjukkan korelasi antara tingkat penukaran dan waktu untuk pemuatan aplikasi, serta kinerja kinerja. Atau kadar perayapan bot carian (PDF, halaman 27–50).

Tanpa penjajaran yang kuat antara pasukan dev / reka bentuk dan perniagaan / pemasaran, prestasi tidak akan bertahan dalam jangka panjang. Kaji aduan biasa yang datang ke pasukan perkhidmatan pelanggan dan penjualan, kaji analitik untuk kadar pentalan tinggi dan penurunan penukaran. Terokai bagaimana peningkatan prestasi dapat membantu melegakan beberapa masalah biasa ini. Sesuaikan hujah bergantung pada kumpulan pihak berkepentingan yang anda bicarakan.

Jalankan eksperimen prestasi dan ukur hasil & mdash di telefon bimbit dan di desktop (contohnya, dengan Google Analitis). Ini akan membantu anda membuat kajian kes yang disesuaikan dengan syarikat dengan data sebenar. Selanjutnya, menggunakan data dari kajian kes dan eksperimen yang diterbitkan di Statistik WPO akan membantu meningkatkan kepekaan perniagaan mengenai mengapa prestasi penting, dan apa kesannya terhadap pengalaman pengguna dan metrik perniagaan. Menyatakan bahawa prestasi hanya penting tidak mencukupi & mdash anda juga perlu menetapkan beberapa matlamat yang dapat diukur dan dapat dilacak dan memerhatikannya dari masa ke masa.

Bagaimana untuk sampai ke sana? Dalam ceramahnya mengenai Membangunkan Prestasi untuk Jangka Panjang, Allison McKnight berkongsi kajian kes komprehensif tentang bagaimana dia membantu mewujudkan budaya prestasi di Etsy (slaid). Baru-baru ini, Tammy Everts telah bercakap mengenai tabiat pasukan prestasi yang sangat berkesan di organisasi kecil dan besar.

Walaupun melakukan perbualan ini dalam organisasi, penting untuk diingat bahawa sama seperti UX adalah spektrum pengalaman, prestasi web adalah sebaran. Seperti yang dicatat oleh Karolina Szczur, "mengharapkan satu nombor dapat memberikan penilaian untuk dicita-citakan adalah anggapan yang salah." Oleh itu, matlamat prestasi harus terperinci, dapat dikesan dan nyata.

Untuk mendapatkan kesan pertama yang baik mengenai prestasi pesaing anda, anda boleh menggunakan Laporan Chrome UX (CrUX, kumpulan data RUM siap pakai, pengenalan video oleh Ilya Grigorik dan panduan terperinci oleh Rick Viscomi), atau Treo, alat pemantauan RUM yang dikuasakan oleh Chrome UX Report. Data dikumpulkan dari pengguna penyemak imbas Chrome, jadi laporannya akan khusus untuk Chrome, tetapi laporan tersebut akan memberi anda sebaran prestasi yang cukup teliti, yang paling penting adalah skor Core Web Vital, di seluruh pelawat anda. Perhatikan bahawa set data CrUX baru dikeluarkan di Selasa kedua setiap bulan.

Sebagai alternatif, anda juga boleh menggunakan:

Nota: Jika anda menggunakan Page Speed ​​Insights atau Page Speed ​​Insights API (tidak, itu tidak digunakan lagi!), Anda boleh mendapatkan data prestasi CrUX untuk halaman tertentu dan bukan hanya agregat. Data ini boleh menjadi lebih berguna untuk menetapkan sasaran prestasi untuk aset seperti "halaman arahan" atau "penyenaraian produk". Dan jika anda menggunakan CI untuk menguji anggaran, anda perlu memastikan persekitaran yang diuji sesuai dengan CrUX jika anda menggunakan CrUX untuk menetapkan sasaran (terima kasih Patrick Meenan!).

Sekiranya anda memerlukan pertolongan untuk menunjukkan alasan di sebalik mengutamakan kepantasan, atau anda ingin memvisualisasikan penurunan kadar penukaran atau peningkatan kadar pentalan dengan prestasi yang lebih perlahan, atau mungkin anda perlu menganjurkan penyelesaian RUM dalam organisasi anda, Sergey Chernyshev telah membina Kalkulator Kelajuan UX, alat sumber terbuka yang membantu anda mensimulasikan data dan memvisualisasikannya untuk mendorong titik anda.

CrUX menghasilkan gambaran keseluruhan pengagihan prestasi dari masa ke masa, dengan lalu lintas yang dikumpulkan dari pengguna Google Chrome. Anda boleh membuat sendiri di Papan Pemuka Chrome UX. (Pratonton besar) Tepat ketika anda perlu membuat kesimpulan untuk prestasi untuk mendorong titik anda: UX Speed ​​Calculator menggambarkan kesan prestasi pada kadar pentalan, penukaran dan jumlah pendapatan & mdash berdasarkan data sebenar. (Pratonton besar)

Kadang-kadang anda mungkin ingin melangkah lebih jauh, menggabungkan data yang berasal dari CrUX dengan data lain yang anda mesti selesaikan dengan cepat di mana kelambatan, titik buta, dan ketidakcekapan terletak pada pesaing anda, atau untuk projek anda. Dalam karyanya, Harry Roberts telah menggunakan Spreadsheet Topografi Kelajuan Tapak yang digunakannya untuk menguraikan prestasi mengikut jenis halaman utama, dan mengesan perbezaan metrik utama di antara mereka. Anda boleh memuat turun spreadsheet sebagai Google Spreadsheet, Excel, OpenOffice atau CSV.

Topografi kelajuan laman web, dengan metrik utama ditunjukkan untuk halaman utama di laman web ini. (Pratonton besar)

Dan jika anda mahu pergi semua caranya, anda boleh menjalankan audit prestasi Lighthouse di setiap halaman laman web (melalui Lightouse Parade), dengan output disimpan sebagai CSV. Itu akan membantu anda mengenal pasti halaman mana (atau jenis halaman) pesaing anda yang lebih buruk atau lebih baik, dan apa yang mungkin anda mahu fokuskan usaha anda. (Untuk laman web anda sendiri, mungkin lebih baik menghantar data ke titik akhir analisis!).

Dengan Lighthouse Parade, anda boleh menjalankan audit prestasi Lighthouse di setiap halaman laman web, dengan output disimpan sebagai CSV. (Pratonton besar)

Kumpulkan data, sediakan spreadsheet, cukur 20%, dan tetapkan matlamat anda (belanjawan prestasi) dengan cara ini. Sekarang anda mempunyai sesuatu yang boleh diukur. Sekiranya anda mengingat anggaran dan berusaha menurunkan muatan minimum untuk mendapatkan masa yang cepat untuk interaktif, maka anda berada di jalan yang wajar.

Memerlukan sumber untuk memulakan?

  • Addy Osmani telah menulis penulisan yang sangat terperinci mengenai cara memulakan penganggaran prestasi, bagaimana mengukur kesan ciri baru dan dari mana hendak memulakannya apabila anda melebihi anggaran.
  • Panduan Lara Hogan tentang cara mendekati reka bentuk dengan anggaran prestasi dapat memberikan petunjuk yang berguna kepada para pereka.
  • Harry Roberts telah menerbitkan panduan menyiapkan Google Sheet untuk memaparkan kesan skrip pihak ketiga terhadap prestasi, menggunakan Peta Permintaan,
  • Kalkulator Anggaran Prestasi Jonathan Fielding, kalkulator perf-budget-Katie Hempenius dan Kalori Penyemak Imbas dapat membantu dalam membuat belanjawan (terima kasih kepada Karolina Szczur untuk mengetahui perkembangannya).
  • Di banyak syarikat, belanjawan prestasi tidak boleh menjadi aspiratif, tetapi lebih pragmatik, berfungsi sebagai tanda penahan untuk mengelakkan melepasi titik tertentu. Sekiranya demikian, anda boleh memilih titik data terburuk anda dalam dua minggu terakhir sebagai ambang, dan mengambilnya dari sana. Belanjawan Prestasi, Pragmatik menunjukkan kepada anda strategi untuk mencapainya.
  • Juga, buat anggaran prestasi dan prestasi semasa kelihatan dengan menyediakan papan pemuka dengan grafik yang melaporkan ukuran binaan. Terdapat banyak alat yang membolehkan anda mencapainya: Papan pemuka SiteSpeed.io (sumber terbuka), SpeedCurve dan Caliber hanya sebilangan kecil dari mereka, dan anda boleh mendapatkan lebih banyak alat di perf.rocks.

Sebaik sahaja anda mempunyai anggaran, masukkannya ke dalam proses pembuatan anda dengan Petunjuk Prestasi Web dan Bundlesize, Lighthouse CI, PWMetrics atau Sitespeed CI untuk menguatkuasakan belanjawan atas permintaan tarik dan berikan sejarah skor dalam komen PR.

Untuk mendedahkan anggaran prestasi kepada seluruh pasukan, gabungkan anggaran prestasi di Lighthouse melalui Lightwallet atau gunakan LHCI Action untuk integrasi Github Actions yang cepat. Dan jika anda memerlukan sesuatu yang disesuaikan, anda boleh menggunakan webpagetest-charts-api, API titik akhir untuk membina carta dari hasil WebPagetest.

Kesedaran prestasi tidak seharusnya datang dari anggaran prestasi semata-mata. Sama seperti Pinterest, anda juga boleh membuat kebiasaan eslint peraturan yang tidak membenarkan pengimportan dari fail dan direktori yang diketahui sangat bergantung dan akan mengaburkan kumpulannya. Sediakan senarai pakej "selamat" yang dapat dikongsi di seluruh pasukan.

Juga, fikirkan tentang tugas pelanggan kritikal yang paling bermanfaat bagi perniagaan anda. Kaji, bincangkan dan tentukan boleh diterima ambang masa untuk tindakan kritikal dan menetapkan tanda masa pengguna "siap UX" yang telah diluluskan oleh seluruh organisasi. Dalam banyak kes, perjalanan pengguna akan menyentuh kerja banyak jabatan yang berbeza, jadi penyelarasan dari segi masa yang dapat diterima akan membantu menyokong atau mencegah perbincangan prestasi di jalan. Pastikan bahawa kos tambahan sumber dan ciri tambahan dapat dilihat dan difahami.

Sejajarkan usaha prestasi dengan inisiatif teknologi lain, mulai dari ciri baru produk yang dibina hingga refactoring hingga menjangkau khalayak global baru. Oleh itu, setiap kali perbincangan mengenai perkembangan selanjutnya berlaku, persembahan juga merupakan sebahagian daripada perbualan itu. Jauh lebih mudah untuk mencapai matlamat prestasi ketika pangkalan kod baru atau sedang diperbaiki.

Juga, seperti yang dicadangkan oleh Patrick Meenan, perlu dilakukan merancang urutan pemuatan dan pertukaran semasa proses reka bentuk. Sekiranya anda memprioritaskan lebih awal bahagian mana yang lebih penting, dan menentukan urutan bahagian yang sepatutnya muncul, anda juga akan mengetahui apa yang boleh ditangguhkan. Sebaik-baiknya, pesanan itu juga akan mencerminkan urutan import CSS dan JavaScript anda, jadi mengendalikannya semasa proses pembuatan akan lebih mudah. Juga, pertimbangkan pengalaman visual di negara-negara "di antara", semasa halaman sedang dimuat (mis. Ketika fon web belum dimuat).

Setelah anda mewujudkan budaya prestasi yang kuat dalam organisasi anda, berhasrat untuk menjadi 20% lebih pantas daripada diri anda yang dahulu untuk menjaga keutamaan agar sentiasa berjalan lancar seiring berjalannya waktu (terima kasih, Guy Podjarny!). Tetapi pertimbangkan jenis dan tingkah laku penggunaan pelanggan anda (yang disebut Tobias Baldauf sebagai irama dan kohort), bersama dengan lalu lintas bot dan kesan musim.

Merancang, merancang, merancang. Mungkin menggoda untuk masuk ke dalam pengoptimuman "buah-buahan rendah" cepat-cepat & mdash dan mungkin strategi yang baik untuk kemenangan cepat & mdash tetapi akan menjadi sangat sukar untuk mengekalkan prestasi sebagai keutamaan tanpa merancang dan menetapkan syarikat yang realistik -menetapkan matlamat prestasi.

Apakah maksudnya? Daripada memfokuskan pada masa memuatkan halaman penuh (melalui onLoad dan DOMContentLoaded masa, misalnya), utamakan pemuatan halaman seperti yang dirasakan oleh pelanggan anda. Ini bermaksud memberi tumpuan kepada sekumpulan metrik yang sedikit berbeza. Sebenarnya, memilih metrik yang betul adalah proses tanpa pemenang yang jelas.

Berdasarkan kajian Tim Kadlec dan catatan Marcos Iglesias dalam ceramahnya, sukatan tradisional boleh dikelompokkan menjadi beberapa set. Biasanya, kami memerlukan mereka semua untuk mendapatkan gambaran prestasi yang lengkap, dan dalam kes anda, beberapa daripadanya akan lebih penting daripada yang lain.

  • Sukatan berdasarkan kuantiti mengukur jumlah permintaan, berat dan skor prestasi. Bagus untuk meningkatkan penggera dan memantau perubahan dari masa ke masa, tidak begitu baik untuk memahami pengalaman pengguna.
  • Sukatan pencapaian gunakan keadaan dalam jangka masa proses pemuatan, mis. Masa Ke Bait Pertama dan Masa Untuk Interaktif. Bagus untuk menerangkan pengalaman dan pemantauan pengguna, tidak begitu baik untuk mengetahui apa yang berlaku antara tonggak sejarah.
  • Metrik rendering berikan anggaran seberapa cepat kandungan dihasilkan (mis. Mulakan Render masa, Indeks Kelajuan). Baik untuk mengukur dan mengubah prestasi rendering, tetapi tidak begitu baik untuk mengukur ketika penting kandungan muncul dan dapat berinteraksi dengan.
  • Metrik tersuai mengukur peristiwa khusus untuk pengguna, mis. Masa Twitter Untuk Tweet Pertama dan PinnerWaitTime Pinterest. Bagus untuk menggambarkan pengalaman pengguna dengan tepat, tidak begitu baik untuk mengukur sukatan dan membandingkannya dengan pesaing.

Untuk melengkapkan gambar, kami biasanya mencari metrik yang berguna di antara semua kumpulan ini. Biasanya, yang paling spesifik dan relevan adalah:

    (TTI)
    Titik di mana susun atur mempunyai stabil, webfonts utama kelihatan, dan utas utamanya cukup tersedia untuk menangani input pengguna & mdash pada dasarnya tanda masa ketika pengguna dapat berinteraksi dengan UI. Metrik utama untuk memahami berapa banyak tunggu pengguna harus berpengalaman menggunakan laman web ini tanpa ketinggalan. Boris Schapira telah menulis catatan terperinci mengenai cara mengukur TTI dengan pasti. (FID), atau Tindak balas input
    Masa dari ketika pengguna pertama kali berinteraksi dengan laman web anda hingga saat penyemak imbas sebenarnya mampu memberi tindak balas kepada interaksi itu. Melengkapkan TTI dengan baik kerana menerangkan bahagian gambar yang hilang: apa yang berlaku apabila pengguna benar-benar berinteraksi dengan laman web. Ditujukan sebagai metrik RUM sahaja. Terdapat pustaka JavaScript untuk mengukur FID di penyemak imbas. (LCP)
    Menandakan titik dalam garis masa muat halaman ketika halaman isi penting kemungkinan dimuatkan. Andaiannya adalah bahawa elemen halaman yang paling penting adalah yang terbesar yang dapat dilihat di ruang pandang pengguna. Sekiranya elemen diberikan di bahagian atas dan bawah, hanya bahagian yang dilihat dianggap relevan. (TBT)
    Metrik yang membantu mengira tahap keterukan halaman yang tidak interaktif sebelum menjadi interaktif yang boleh dipercayai (iaitu, utas utamanya bebas dari sebarang tugas yang berjalan lebih dari 50ms (tugas yang panjang) sekurang-kurangnya 5s). Metrik mengukur jumlah masa antara cat pertama dan Time to Interactive (TTI) di mana utas utama disekat cukup lama untuk mengelakkan respons input. Maka tidak hairanlah bahawa TBT rendah adalah petunjuk yang baik untuk prestasi yang baik. (terima kasih, Artem, Phil) (CLS)
    Metrik menyoroti kekerapan pengguna mengalami perkara yang tidak dijangka peralihan susun atur (reflow) semasa melayari laman web. Ia meneliti tidak stabil elemen dan kesannya terhadap keseluruhan pengalaman. Semakin rendah skor, semakin baik.
    Mengukur seberapa cepat isi halaman diisi secara visual semakin rendah skornya, semakin baik. Skor Indeks Kelajuan dikira berdasarkan kelajuan kemajuan visual, tetapi ia hanyalah nilai yang dikira. Ia juga peka terhadap ukuran ruang pandang, jadi anda perlu menentukan pelbagai konfigurasi pengujian yang sesuai dengan khalayak sasaran anda. Perhatikan bahawa menjadi kurang penting dengan LCP menjadi metrik yang lebih relevan (terima kasih, Boris, Artem!).
  • Masa CPU dihabiskan
    Metrik yang menunjukkan berapa kerap dan berapa lama utas utama disekat, mengusahakan lukisan, rendering, skrip dan pemuatan. Waktu CPU yang tinggi adalah petunjuk yang jelas bagi a kelakar pengalaman, iaitu ketika pengguna mengalami jeda yang ketara antara tindakan dan tindak balas mereka. Dengan WebPageTest, anda dapat memilih "Capture Dev Tools Timeline" pada tab "Chrome" untuk memperlihatkan pecahan utas utama kerana ia berjalan di mana-mana peranti yang menggunakan WebPageTest.
    Sama seperti dengan Masa CPU dihabiskanmetrik ini, yang dicadangkan oleh Stoyan Stefanov, meneroka kesan JavaScript pada CPU. Ideanya adalah dengan menggunakan jumlah instruksi CPU setiap komponen untuk memahami kesannya terhadap keseluruhan pengalaman, secara terpisah. Dapat dilaksanakan menggunakan Puppeteer dan Chrome.
    Walaupun banyak metrik yang ditunjukkan di atas menjelaskan ketika peristiwa tertentu berlaku, Tim FrereIndex Tim Vereecke melihatnya jurang antara metrik dan bukannya melihatnya secara individu. Ini melihat tonggak utama yang dirasakan oleh pengguna akhir, seperti Tajuk dapat dilihat, Kandungan pertama dapat dilihat, Siap visual dan Halaman kelihatan siap dan menghitung skor yang menunjukkan tahap kekecewaan semasa memuat halaman. Semakin besar jurang, semakin besar peluang pengguna kecewa. Berpotensi KPI yang baik untuk pengalaman pengguna. Tim telah menerbitkan catatan terperinci mengenai FrustrationIndex dan bagaimana ia berfungsi.
    Sekiranya laman web anda bergantung pada pendapatan yang dihasilkan oleh pengiklanan, adalah berguna untuk mengesan berat kod yang berkaitan dengan iklan. Skrip Paddy Ganti membina dua URL (satu biasa dan satu menyekat iklan), mendorong penghasilan perbandingan video melalui WebPageTest dan melaporkan delta.
    Seperti yang dinyatakan oleh jurutera Wikipedia, data berapa varians terdapat dalam hasil anda dapat memberitahu anda seberapa dapat dipercayai instrumen anda, dan berapa banyak perhatian yang harus anda berikan kepada penyimpangan dan penyekat. Varians besar adalah petunjuk penyesuaian yang diperlukan dalam penyediaan. Ia juga membantu memahami jika halaman tertentu lebih sukar untuk diukur dengan pasti, mis. kerana skrip pihak ketiga menyebabkan perbezaan yang ketara. Mungkin juga merupakan idea yang baik untuk melacak versi penyemak imbas untuk memahami peningkatan prestasi ketika versi penyemak imbas baru dilancarkan.
    Metrik khusus ditentukan oleh keperluan perniagaan dan pengalaman pelanggan anda. Ia memerlukan anda mengenal pasti penting piksel, kritikal skrip, perlu CSS dan relevan aset dan mengukur seberapa cepat ia dihantar kepada pengguna. Untuk itu, anda boleh memantau Hero Rendering Times, atau menggunakan Performance API, menandakan cap waktu tertentu untuk acara yang penting untuk perniagaan anda. Anda juga boleh mengumpulkan metrik tersuai dengan WebPagetest dengan melaksanakan JavaScript sewenang-wenang pada akhir ujian.

Perhatikan bahawa Cat Bererti Pertama (FMP) tidak muncul dalam gambaran keseluruhan di atas. Ini digunakan untuk memberikan gambaran tentang seberapa cepat pelayan mengeluarkan ada data. Long FMP biasanya menunjukkan JavaScript menyekat utas utama, tetapi juga berkaitan dengan masalah back-end / pelayan. Walau bagaimanapun, metrik ini tidak digunakan lagi baru-baru ini kerana nampaknya tidak tepat dalam kira-kira 20% kes. Ia digantikan dengan LCP yang lebih dipercayai dan lebih senang difikirkan. Ia tidak lagi disokong di Rumah Api. Periksa semula metrik dan cadangan prestasi berpusatkan pengguna terkini hanya untuk memastikan anda berada di halaman selamat (terima kasih, Patrick Meenan).

Steve Souders mempunyai penjelasan terperinci mengenai banyak metrik ini. Penting untuk diperhatikan bahawa semasa Time-To-Interactive diukur dengan menjalankan audit automatik dalam apa yang disebut persekitaran makmal, Kelewatan Input Pertama mewakili sebenarnya pengalaman pengguna, dengan sebenarnya pengguna mengalami ketinggalan yang ketara. Secara umum, mungkin adalah idea yang baik untuk selalu mengukur dan mengesan keduanya.

Bergantung pada konteks aplikasi anda, metrik pilihan mungkin berbeza: mis. untuk Netflix TV UI, respons input utama, penggunaan memori dan TTI lebih penting, dan untuk Wikipedia, perubahan visual pertama / terakhir dan metrik masa CPU dihabiskan lebih penting.

Nota: kedua-dua FID dan TTI tidak memperhitungkan tingkah laku tatal tatal menatal boleh berlaku secara bebas kerana di luar rangkaian utama, jadi bagi banyak laman web penggunaan kandungan metrik ini mungkin tidak begitu penting (terima kasih, Patrick!).

Untuk masing-masing, Google mengesyorkan pelbagai tujuan kelajuan yang boleh diterima. Sekurang-kurangnya 75% daripada semua paparan halaman harus melebihi Julat yang baik untuk lulus penilaian ini. Metrik ini dengan cepat mendapat daya tarikan, dan dengan Core Web Vital menjadi isyarat peringkat untuk Carian Google pada Mei 2021 (Kemas kini algoritma peringkat Pengalaman Halaman), banyak syarikat mengalihkan perhatian mereka kepada skor prestasi mereka.

Mari kita pecahkan setiap Core Web Vital, satu demi satu, dan juga teknik dan perkakas yang berguna untuk mengoptimumkan pengalaman anda dengan mempertimbangkan metrik ini. (Perlu diingat bahawa anda akan mendapat skor Core Web Vital yang lebih baik dengan mengikuti nasihat umum dalam artikel ini.)

    (LCP) & lt 2.5 saat
    Mengukur memuatkan halaman, dan melaporkan masa rendering blok gambar atau teks terbesar yang kelihatan di dalam kawasan pandangan. Oleh itu, LCP dipengaruhi oleh semua yang menangguhkan rendering maklumat penting & mdash sama ada lambatnya masa tindak balas pelayan, menyekat CSS, JavaScript dalam penerbangan (pihak pertama atau pihak ketiga), pemuatan fon web, operasi rendering atau lukisan yang mahal, malas -muatkan gambar, skrin kerangka atau rendering sisi pelanggan.

Untuk pengalaman yang baik, LCP harus berlaku dalam masa 2.5s semasa halaman mula dimuat. Ini bermaksud bahawa kita perlu membuat bahagian pertama halaman yang dapat dilihat seawal mungkin. Itu akan memerlukan CSS kritikal yang disesuaikan untuk setiap templat, menyusun pesanan & lthead & gt -order dan mengambil aset kritikal (kami akan meliputinya kemudian).

Sebab utama skor LCP rendah biasanya gambar. Untuk memberikan LCP dalam & lt2.5s pada Fast 3G & mdash yang dihoskan pada pelayan yang dioptimumkan dengan baik, semua statik tanpa rendering dari sisi pelanggan dan dengan gambar yang berasal dari CDN gambar khusus & mdash bermaksud bahawa ukuran gambar teori maksimum hanya sekitar 144KB. Itulah sebabnya gambar responsif penting, serta memuatkan gambar kritikal lebih awal (dengan pramuat).

Petua cepat: untuk mengetahui apa yang dianggap LCP pada halaman, di DevTools anda boleh mengarahkan kursor ke lencana LCP di bawah "Waktu" di Panel Prestasi (terima kasih, Tim Kadlec!).

(FID) & lt 100ms.
Mengukur responsif UI, iaitu berapa lama penyemak imbas sibuk dengan tugas lain sebelum dapat bertindak balas terhadap peristiwa input pengguna yang diskrit seperti ketukan, atau klik. Ia dirancang untuk menangkap kelewatan yang disebabkan oleh utas utama yang sibuk, terutamanya semasa memuat halaman.

Tujuannya adalah untuk berada dalam jarak 50-100ms untuk setiap interaksi. Untuk sampai ke sana, kita perlu mengenal pasti tugas yang panjang (blok utas utama untuk & gt50ms) dan memecahnya, kod-kisarkan sekumpulan menjadi beberapa bahagian, mengurangkan masa pelaksanaan JavaScript, mengoptimumkan pengambilan data, menangguhkan pelaksanaan skrip pihak ketiga, pindahkan JavaScript ke latar latar dengan pekerja Web dan gunakan hidrasi progresif untuk mengurangkan kos rehidrasi di SPA.

Petua cepat: secara umum, strategi yang boleh dipercayai untuk mendapatkan skor FID yang lebih baik adalah meminimumkan kerja pada utas utama dengan memecahkan kumpulan yang lebih besar menjadi yang lebih kecil dan melayani apa yang pengguna perlukan ketika mereka memerlukannya, sehingga interaksi pengguna tidak akan ditangguhkan. Kami akan membahasnya lebih terperinci di bawah.

(CLS) & lt 0.1.
Langkah-langkah kestabilan visual UI untuk memastikan interaksi yang lancar dan semula jadi, iaitu jumlah keseluruhan skor peralihan susun atur individu untuk setiap peralihan susun atur yang tidak dijangka yang berlaku semasa jangka hayat halaman. Peralihan susun atur individu berlaku setiap kali elemen yang sudah kelihatan mengubah kedudukannya di halaman. Ia dinilai berdasarkan ukuran kandungan dan jarak yang dipindahkan.

Jadi setiap kali pergeseran muncul - mis. apabila fon penggantian dan fon web mempunyai metrik fon yang berbeza, atau iklan, embed atau iframe datang lewat, atau dimensi gambar / video tidak dicadangkan, atau CSS yang lewat memaksa pengecatan semula, atau perubahan disuntikkan oleh JavaScript akhir & mdash ia memberi kesan pada skor CLS. Nilai yang disyorkan untuk pengalaman yang baik adalah CLS & lt 0.1.

Perlu diingat bahawa Core Web Vital seharusnya berkembang dari masa ke masa, dengan kitaran tahunan yang dapat diramalkan. Untuk kemas kini tahun pertama, kami mungkin mengharapkan First Contentful Paint dipromosikan menjadi Core Web Vital, ambang FID yang dikurangkan dan sokongan yang lebih baik untuk aplikasi satu halaman. Kami mungkin juga melihat tindak balas terhadap input pengguna setelah beban bertambah berat, bersama dengan pertimbangan keselamatan, privasi dan aksesibilitas (!).

Berkaitan dengan Core Web Vital, terdapat banyak sumber dan artikel berguna yang perlu diperhatikan:

    membolehkan anda membandingkan skor anda dengan persaingan di telefon bimbit, tablet, desktop, dan pada 3G dan 4G. , pelanjutan Chrome yang menunjukkan Core Web Vital dari CrUX dalam Hasil Carian Google. yang menggambarkan CLS dengan GIF sederhana (juga tersedia dari baris arahan). dapat mengumpulkan dan menghantar Core Web Vital ke Google Analytics, Google Tag Manager atau mana-mana titik akhir analisis lain. , di mana Patrick Meenan meneroka bagaimana WebPageTest mendedahkan data mengenai Core Web Vital. , video berdurasi 50 minit dengan Addy Osmani, di mana dia menyoroti bagaimana meningkatkan Core Web Vital dalam kajian kes eCommerce. dan Pergeseran Tata Letak Kumulatif di Dunia Nyata adalah artikel komprehensif oleh Nic Jansma, yang merangkumi hampir semua perkara mengenai CLS dan bagaimana ia berkorelasi dengan metrik utama seperti Bounce Rate, Session Time atau Rage Clicks. , dengan gambaran keseluruhan sifat atau kaedah, apabila diminta / dipanggil dalam JavaScript, yang akan memicu penyemak imbas untuk menghitung gaya dan tata letak secara serentak. menunjukkan sifat CSS mana yang mencetuskan Tata Letak, Cat dan Komposit. adalah petunjuk penggunaan WebPageTest untuk mengenal pasti dan menyelesaikan masalah ketidakstabilan susun atur. , panduan lain yang sangat terperinci oleh Boris Schapira mengenai CLS, bagaimana ia dihitung, bagaimana mengukur dan bagaimana mengoptimumkannya. , panduan terperinci oleh Simon Hearne mengenai setiap metrik (termasuk Web Vital lain, seperti FCP, TTI, TBT), kapan ia berlaku dan bagaimana pengukurannya.

Jadi, adakah Core Web Vital adalah metrik utama untuk diikuti? Tidak cukup. Mereka sememangnya sudah terpapar dalam kebanyakan penyelesaian dan platform RUM, termasuk Cloudflare, Treo, SpeedCurve, Caliber, WebPageTest (dalam paparan jalur filem sudah), Newrelic, Shopify, Next.js, semua alat Google (PageSpeed ​​Insights, Lighthouse + CI, Search Konsol dll) dan lain-lain lagi.

Walau bagaimanapun, seperti yang dijelaskan oleh Katie Sylor-Miller, beberapa masalah utama dengan Core Web Vital adalah kurangnya sokongan penyemak imbas silang, kami tidak benar-benar mengukur kitaran hidup penuh pengalaman pengguna, dan sukar untuk mengaitkan perubahan dalam FID dan CLS dengan hasil perniagaan.

Seperti yang kita harapkan Core Web Vital berkembang, nampaknya wajar untuk selalu Gabung Web Vital dengan metrik yang disesuaikan khusus untuk mendapatkan pemahaman yang lebih baik mengenai kedudukan anda dari segi prestasi.

Secara global pada tahun 2020, menurut IDC, 84.8% daripada semua telefon bimbit yang dihantar adalah peranti Android. Rata-rata pengguna menaik taraf telefon mereka setiap 2 tahun, dan dalam kitaran penggantian telefon AS adalah 33 bulan. Rata-rata telefon terlaris di seluruh dunia berharga di bawah $ 200.

Peranti perwakilan, maka, adalah peranti Android yang berumur sekurang-kurangnya 24 bulan, berharga $ 200 atau kurang, berjalan pada pemindahan 3G lambat, 400ms RTT dan 400kbps, hanya untuk sedikit lebih pesimis. Ini mungkin sangat berbeza untuk syarikat anda, tentu saja, tetapi itu adalah pendekatan yang hampir dekat dengan sebilangan besar pelanggan di luar sana. Sebenarnya, mungkin idea yang baik untuk melihat Penjual Terbaik Amazon semasa untuk pasaran sasaran anda. (Terima kasih kepada Tim Kadlec, Henri Helvetica dan Alex Russell untuk petunjuk!).

Semasa membina laman web atau aplikasi baru, selalu periksa Penjual Terbaik Amazon semasa untuk pasaran sasaran anda terlebih dahulu. (Pratonton besar)

Peranti ujian apa yang hendak dipilih? Yang sesuai dengan profil yang digariskan di atas. Ini adalah pilihan yang baik untuk memilih Moto G4 / G5 Plus yang sedikit lebih tua, peranti Samsung pertengahan (Galaxy A50, S8), peranti pertengahan jalan yang bagus seperti Nexus 5X, Xiaomi Mi A3 atau Xiaomi Redmi Note 7 dan peranti perlahan seperti Alcatel 1X atau Cubot X19, mungkin di makmal peranti terbuka. Untuk menguji pada peranti termal yang lebih perlahan, anda juga boleh mendapatkan Nexus 4, yang harganya hanya sekitar $ 100.

Juga, periksa chipset yang digunakan di setiap peranti dan jangan terlalu mewakili satu chipset: beberapa generasi Snapdragon dan Apple serta Rockchip kelas atas, Mediatek sudah cukup (terima kasih, Patrick!).

Sekiranya anda tidak mempunyai peranti, tiru pengalaman mudah alih di desktop dengan menguji pada rangkaian 3G (mis. 300ms RTT, turun 1,6 Mbps, naik 0,8 Mbps) dengan CPU yang dipercepat (perlambatan 5 ×). Akhirnya beralih ke 3G biasa, 4G lambat (mis. 170 ms RTT, turun 9 Mbps, naik 9Mbps), dan Wi-Fi. Untuk menjadikan kesan prestasi lebih kelihatan, anda bahkan dapat memperkenalkan 2G Selasa atau menyiapkan rangkaian 3G / 4G yang dipercepat di pejabat anda untuk ujian yang lebih pantas.

Perlu diingat bahawa pada peranti mudah alih, kita semestinya mengharapkan perlambatan 4 × –5 × berbanding mesin desktop. Peranti mudah alih mempunyai GPU, CPU, memori dan ciri bateri yang berbeza. Itulah sebabnya penting untuk mempunyai profil yang baik dari peranti rata-rata dan selalu menguji pada peranti tersebut.

Nasib baik, terdapat banyak pilihan hebat yang membantu anda mengautomasikan pengumpulan data dan mengukur prestasi laman web anda dari masa ke masa mengikut metrik ini. Perlu diingat bahawa gambar prestasi yang baik merangkumi sekumpulan metrik prestasi, data makmal dan data lapangan:

  • Alat ujian sintetik mengumpul data makmal dalam persekitaran yang boleh dihasilkan semula dengan tetapan peranti dan rangkaian yang telah ditetapkan (mis. Rumah Api, Berkaliber, Ujian Halaman Web) dan
  • Pemantauan Pengguna Sebenar (RUM) alat menilai interaksi pengguna secara berterusan dan mengumpulkan data lapangan (cth. SpeedCurve, Peninggalan Baru & mdash alat juga menyediakan ujian sintetik).

Yang pertama sangat berguna semasa pembangunan kerana ia akan membantu anda mengenal pasti, mengasingkan dan menyelesaikan masalah prestasi semasa mengusahakan produk. Yang terakhir ini berguna untuk jangka masa panjang penyelenggaraan kerana ia akan membantu anda memahami hambatan prestasi anda kerana ia berlaku secara langsung & mdash ketika pengguna benar-benar mengakses laman web ini.

Dengan memanfaatkan API RUM bawaan seperti Navigation Timing, Resource Timing, Paint Timing, Long Tasks, dll., Alat ujian sintetik dan RUM bersama-sama memberikan gambaran lengkap mengenai prestasi dalam aplikasi anda.Anda boleh menggunakan Caliber, Treo, SpeedCurve, mPulse dan Boomerang, Sitespeed.io, yang semuanya merupakan pilihan terbaik untuk pemantauan prestasi. Selain itu, dengan header Server Timing, anda juga dapat memantau prestasi back-end dan front-end semuanya di satu tempat.

Nota: Adalah pertaruhan yang lebih selamat untuk memilih throttler peringkat rangkaian, di luar penyemak imbas, seperti, misalnya, DevTools mempunyai masalah berinteraksi dengan push HTTP / 2, kerana cara pelaksanaannya (terima kasih, Yoav, Patrick!). Untuk Mac OS, kita dapat menggunakan Network Link Conditioner, untuk Windows Windows Traffic Shaper, untuk netem Linux, dan untuk dummynet FreeBSD.

Oleh kerana kemungkinan anda akan menjalani ujian di Rumah Api, ingatlah bahawa anda boleh:

    untuk mengesan skor Lighthouse dari masa ke masa (cukup mengagumkan), untuk mendapatkan laporan Lighthouse bersama setiap PR, (melalui Lightouse Parade), dengan output disimpan sebagai CSV,
  • gunakan metrik Lighthouse Scores Calculator dan Lighthouse jika anda perlu menyelami lebih terperinci.
  • Rumah Api juga tersedia untuk Firefox, tetapi di bawahnya ia menggunakan API PageSpeed ​​Insights dan menghasilkan laporan berdasarkan Ejen Pengguna Chrome 79 tanpa kepala.

Walau bagaimanapun, adalah idea yang baik untuk mengkaji mana pelanjutan penyemak imbas pelanggan anda kerap menggunakan, dan menguji dengan berdedikasi profil "pelanggan" juga. Sebenarnya, beberapa peluasan mungkin mempunyai kesan prestasi yang mendalam (Laporan Prestasi Sambungan Chrome 2020) pada aplikasi anda, dan jika pengguna anda banyak menggunakannya, anda mungkin ingin menjelaskannya di muka. Oleh itu, hasil profil "bersih" sahaja yang terlalu optimis dan dapat dihancurkan dalam senario kehidupan sebenar.

Menetapkan Matlamat Realistik

  1. Masa tindak balas 100 milisaat, 60 fps.
    Agar interaksi terasa lancar, antara muka mempunyai 100ms untuk bertindak balas terhadap input pengguna. Lebih lama dari itu, dan pengguna menganggap aplikasinya ketinggalan zaman. RAIL, model prestasi yang berpusatkan pengguna memberi anda sasaran sihat: Untuk membolehkan tindak balas & lt100 milisaat, halaman mesti memberikan kawalan kembali ke utas utama selambat-lambatnya setiap & lt50 milisaat. Latency Input yang dianggarkan memberitahu kita jika kita mencapai ambang itu, dan idealnya, itu mestilah di bawah 50ms. Untuk titik tekanan tinggi seperti animasi, lebih baik tidak melakukan apa-apa lagi di mana anda boleh dan minimum mutlak di mana anda tidak boleh.

RAIL, model prestasi yang berpusatkan pengguna.

Juga, setiap bingkai animasi harus dilengkapkan dalam masa kurang dari 16 milisaat, sehingga mencapai 60 bingkai sesaat (1 saat & bahagikan 60 = 16.6 milisaat) & mdash lebih disukai di bawah 10 milisaat. Oleh kerana penyemak imbas memerlukan masa untuk melukis bingkai baru ke skrin, kod anda harus selesai dijalankan sebelum mencapai tanda 16.6 milisaat. Kami mula mengadakan perbualan sekitar 120fps (mis. Layar iPad Pro berjalan pada 120Hz) dan Surma telah merangkumi beberapa penyelesaian prestasi rendering untuk 120fps, tetapi itu mungkin bukan sasaran yang sedang kami perhatikan sebentar tadi.

Bersikap pesimis dalam jangkaan prestasi, tetapi optimis dalam reka bentuk antara muka dan gunakan waktu senggang dengan bijak (periksa idlize, idle-sampai-urgent dan react-idle). Jelas, sasaran ini berlaku untuk prestasi runtime, dan bukannya memuatkan prestasi.

(Nota: kerana TCP pada umumnya kurang menggunakan sambungan rangkaian dengan jumlah yang banyak, Google telah mengembangkan TCP Bottleneck Bandwidth dan RRT (BBR), algoritma kawalan aliran TCP yang dikawal kelewatan TCP. Direka untuk web moden, ia bertindak balas terhadap kesesakan sebenar, dan bukannya kehilangan paket seperti yang dilakukan oleh TCP, ia jauh lebih cepat, dengan throughput yang lebih tinggi dan latensi yang lebih rendah & mdash dan algoritma berfungsi berbeza. (terima kasih, Victor, Barry!)

Sebaliknya, kita ada kekangan perkakasan pada memori dan CPU kerana penghuraian JavaScript dan masa pelaksanaan (kita akan membincangkannya secara terperinci kemudian). Untuk mencapai matlamat yang dinyatakan dalam perenggan pertama, kita harus mempertimbangkan anggaran ukuran fail yang penting untuk JavaScript. Pendapat berbeza-beza mengenai anggaran yang seharusnya (dan sangat bergantung pada sifat projek anda), tetapi anggaran JavaScript 170KB yang telah dizip akan memakan masa hingga 1 saat untuk dihuraikan dan disusun pada telefon jarak jauh. Dengan andaian 170KB berkembang menjadi 3 × ukuran itu ketika disahkompresi (0.7MB), itu sudah boleh menjadi pengalaman mati bagi pengalaman pengguna yang "layak" pada Moto G4 / G5 Plus.

Bagi laman web Wikipedia, pada tahun 2020, secara global, pelaksanaan kod telah 19% lebih cepat untuk pengguna Wikipedia. Oleh itu, jika metrik prestasi web anda dari tahun ke tahun tetap stabil, itu biasanya merupakan tanda amaran kerana anda sebenarnya kemunduran kerana persekitaran terus bertambah baik (perincian dalam catatan blog oleh Gilles Dubuc).

Sekiranya anda ingin menyasarkan pasaran yang sedang berkembang seperti Asia Tenggara, Afrika atau India, anda harus melihat sekatan yang sangat berbeza. Addy Osmani merangkumi kekangan telefon ciri utama, seperti beberapa kos rendah, peranti berkualiti tinggi, ketiadaan rangkaian berkualiti tinggi dan data mudah alih yang mahal & mdash bersama Belanjawan PRPL-30 dan garis panduan pembangunan untuk persekitaran ini.

Menurut Addy Osmani, ukuran yang disyorkan untuk laluan pemalas yang malas juga kurang dari 35 KB. (Pratonton besar) Addy Osmani mencadangkan belanjawan prestasi PRPL-30 (30KB gzip + bungkusan awal dikurangkan) jika menyasarkan telefon ciri. (Pratonton besar)

Sebenarnya, Alex Russell dari Google mengesyorkan untuk menargetkan 130 & ndash170KB sebagai zip atas yang munasabah. Dalam senario dunia nyata, kebanyakan produk bahkan tidak hampir: saiz bundel median hari ini sekitar 452KB, yang meningkat 53.6% berbanding awal 2015. Pada peranti mudah alih kelas pertengahan, yang menyumbang 12 & ndash20 saat untuk Masa-Untuk-Interaktif.

Penanda aras prestasi CPU Geekbench untuk telefon pintar paling laris di seluruh dunia pada tahun 2019. JavaScript menekankan prestasi teras tunggal (ingat, ia sememangnya lebih banyak utas daripada platform Web yang lain) dan terikat pada CPU. Dari artikel Addy "Memuatkan Halaman Web Dengan Cepat Dengan Telefon Ciri $ 20". (Pratonton besar)

Kami juga boleh melampaui anggaran ukuran bundle. Sebagai contoh, kami dapat menetapkan anggaran prestasi berdasarkan aktiviti utas utama penyemak imbas, iaitu masa cat sebelum mula dibuat, atau menjejaki babi CPU bahagian depan. Alat seperti Caliber, SpeedCurve dan Bundlesize dapat membantu anda menjaga anggaran anda dan dapat disatukan ke dalam proses pembuatan anda.

Akhirnya, anggaran prestasi mungkin tidak boleh menjadi nilai tetap. Bergantung pada sambungan rangkaian, anggaran prestasi harus disesuaikan, tetapi muatan pada sambungan yang lebih lambat jauh lebih "mahal", terlepas dari bagaimana penggunaannya.

Nota: Mungkin terdengar pelik untuk menetapkan anggaran yang ketat pada masa HTTP / 2 yang tersebar luas, 5G dan HTTP / 3 yang akan datang, telefon bimbit yang berkembang pesat dan SPA berkembang. Namun, kedengarannya masuk akal apabila kita berhadapan dengan sifat rangkaian dan perkakasan yang tidak dapat diramalkan, termasuk segala-galanya dari rangkaian yang sesak hingga pembangunan infrastruktur yang perlahan, hingga cap data, penyemak imbas proksi, mod simpanan-data dan caj perayauan tersembunyi.

Mendefinisikan Alam Sekitar

  1. Pilih dan sediakan alat bina anda.
    Jangan terlalu memperhatikan apa yang sepatutnya hari-hari sejuk ini. Ikuti lingkungan anda untuk membangun, baik itu Grunt, Gulp, Webpack, Parcel, atau gabungan alat. Selagi anda mendapat hasil yang anda perlukan dan anda tidak mempunyai masalah untuk mengekalkan proses pembinaan anda, anda akan melakukannya dengan baik.

Di antara alat binaan, Rollup terus mendapat daya tarikan, begitu juga Snowpack, tetapi Webpack nampaknya yang paling mapan, dengan ratusan plugin tersedia untuk mengoptimumkan ukuran binaan anda. Nantikan Peta Laman Webpack 2021.

Salah satu strategi yang paling terkenal yang muncul baru-baru ini adalah Granular chunking dengan Webpack di Next.js dan Gatsby untuk meminimumkan kod pendua. Secara lalai, modul yang tidak dibagi di setiap titik masuk boleh diminta untuk rute yang tidak menggunakannya. Ini akhirnya menjadi overhead kerana lebih banyak kod dimuat turun daripada yang diperlukan. Dengan pemotongan butiran di Next.js, kita dapat menggunakan a fail manifes membina sisi pelayan untuk menentukan potongan mana yang digunakan oleh titik masuk yang berbeza.

Untuk mengurangkan kod pendua dalam projek Webpack, kita dapat menggunakan pemotongan butiran, yang diaktifkan di Next.js dan Gatsby secara lalai. Kredit gambar: Addy Osmani. (Pratonton besar)

Dengan SplitChunksPlugin, beberapa potongan split dibuat bergantung pada sebilangan keadaan untuk mengelakkan pengambilan kod pendua di beberapa laluan. Ini meningkatkan masa muat halaman dan cache semasa navigasi. Dihantar di Next.js 9.2 dan di Gatsby v2.20.7.

Memulakan dengan Webpack boleh menjadi sukar. Oleh itu, jika anda ingin menyelami Webpack, terdapat beberapa sumber hebat di luar sana:

    & mdash jelas & mdash adalah titik permulaan yang baik, begitu juga Webpack & mdash The Confusing Bits oleh Raja Rao dan An Annotated Webpack Config oleh Andrew Welch.
  • Sean Larkin mempunyai kursus percuma di Webpack: The Core Concepts dan Jeffrey Way telah melancarkan kursus percuma yang hebat di Webpack untuk semua orang. Kedua-duanya adalah pengenalan yang baik untuk menyelami Webpack. adalah kursus 4j yang sangat komprehensif dengan Sean Larkin, yang dikeluarkan oleh FrontendMasters. mempunyai ratusan konfigurasi Webpack yang siap digunakan, dikategorikan mengikut topik dan tujuan. Bonus: terdapat juga konfigurasi konfigurasi Webpack yang menghasilkan fail konfigurasi asas. adalah senarai pilihan sumber, pustaka dan alat Webpack yang berguna, termasuk artikel, video, kursus, buku dan contoh untuk projek Angular, React dan framework-agnostik. adalah kajian kes Etsy tentang bagaimana pasukan beralih dari menggunakan sistem pembuatan JavaScript berasaskan RequireJS ke menggunakan Webpack dan bagaimana mereka mengoptimumkan binaan mereka, menguruskan lebih dari 13.200 aset di 4 minit secara purata. adalah benang tambang emas oleh Ivan Akulov, yang memaparkan banyak petua yang memfokuskan kepada prestasi, termasuk yang diberi tumpuan khusus pada Webpack. adalah repo GitHub tambang emas dengan alat dan pemalam Webpack yang berguna untuk prestasi. Juga dikekalkan oleh Ivan Akulov.

Sebenarnya, dengan penyampaian modul adaptif, kami sepertinya melakukan peningkatan progresif ke tahap yang lain, memberikan pengalaman inti "ringan" ke peranti kelas bawah, dan meningkatkan dengan ciri yang lebih canggih untuk peranti kelas atas. Peningkatan progresif tidak akan hilang dalam masa terdekat.

Dengan anggaran 170KB yang sudah mengandung HTML-CSS / JavaScript, router, pengurusan keadaan, utiliti, kerangka kerja, dan logika aplikasi, yang harus kita kaji secara menyeluruh, kos pemindahan rangkaian, waktu parse / kompilasi dan waktu runtime kerangka pilihan kami. Nasib baik, kami telah melihat peningkatan besar dalam beberapa tahun kebelakangan ini dalam seberapa cepat penyemak imbas dapat menghuraikan dan menyusun skrip. Namun pelaksanaan JavaScript masih menjadi hambatan utama, jadi memperhatikan waktu pelaksanaan skrip dan jaringan dapat memberi kesan.

Tim Kadlec telah melakukan penyelidikan yang hebat mengenai prestasi kerangka kerja moden, dan merangkumnya dalam artikel "Kerangka JavaScript memiliki biaya". Kami sering bercakap mengenai kesan kerangka kerja mandiri, tetapi seperti yang dinyatakan Tim, dalam praktiknya, tidak jarang mempunyai pelbagai kerangka digunakan. Mungkin jQuery versi lama yang perlahan-lahan dimigrasikan ke kerangka moden, bersama dengan beberapa aplikasi lama menggunakan versi Angular yang lebih lama. Jadi lebih wajar untuk meneroka kos terkumpul byte JavaScript dan masa pelaksanaan CPU yang dapat dengan mudah membuat pengalaman pengguna hampir tidak dapat digunakan, bahkan pada peranti kelas atas.

Secara amnya, kerangka moden tidak mengutamakan peranti yang kurang berkuasa, jadi pengalaman di telefon dan di desktop sering berbeza secara dramatis dari segi persembahan. Menurut penyelidikan, laman web dengan React atau Angular menghabiskan lebih banyak masa pada CPU daripada yang lain (yang tentunya tidak semestinya mengatakan bahawa React lebih mahal pada CPU daripada Vue.js).

Menurut Tim, satu hal yang jelas: "jika anda menggunakan kerangka untuk membina laman web anda, Anda membuat pertukaran dari segi prestasi awal & mdash walaupun dalam senario terbaik. "

Jadi bagaimana jika anda membuang kerangka yang ada pada halaman kritikal sama sekali? Dengan Gatsby, anda boleh menyemak gatsby-plugin-no-javascript yang membuang semua fail JavaScript yang dibuat oleh Gatsby dari fail HTML statik. Di Vercel, anda juga boleh membenarkan menonaktifkan JavaScript runtime dalam pengeluaran untuk halaman tertentu (eksperimental).

Setelah kerangka dipilih, kami akan terus menggunakannya sekurang-kurangnya beberapa tahun, jadi jika kami perlu menggunakannya, kami perlu memastikan pilihan kami dimaklumkan dan dipertimbangkan dengan baik & mdash dan itu berlaku terutamanya untuk metrik prestasi utama yang kami mengambil berat tentang.

Data menunjukkan bahawa, secara lalai, kerangka kerja agak mahal: 58.6% halaman React menghantar lebih dari 1 MB JavaScript, dan 36% muat halaman Vue.js mempunyai Cat Isi Pertama & lt1.5s. Menurut kajian Ankur Sethi, "aplikasi React anda tidak akan memuat lebih cepat daripada kira-kira 1.1 saat pada telefon biasa di India, tidak kira berapa banyak anda mengoptimumkannya. Aplikasi Sudut anda akan mengambil masa sekurang-kurangnya 2.7 saat untuk boot. Pengguna aplikasi Vue anda perlu menunggu sekurang-kurangnya 1 saat sebelum mereka dapat menggunakannya. "Anda mungkin tidak akan menyasarkan India sebagai pasaran utama anda, tetapi pengguna yang mengakses laman web anda dengan keadaan rangkaian yang kurang optimum akan memiliki pengalaman yang setanding.

Sudah tentu ia adalah mungkin untuk membuat SPA cepat, tetapi mereka tidak cepat, jadi kita perlu mengambil kira masa dan usaha yang diperlukan untuk membuat dan jaga mereka cepat. Mungkin akan menjadi lebih mudah dengan memilih kos prestasi awal yang ringan sejak awal.

Jadi bagaimana kita memilih kerangka kerja? Adalah idea yang baik untuk dipertimbangkan sekurang-kurangnya jumlah kos pada ukuran + masa pelaksanaan awal sebelum memilih pilihan pilihan ringan seperti Preact, Inferno, Vue, Svelte, Alpine atau Polymer dapat menyelesaikan tugas dengan baik. Ukuran garis dasar anda akan menentukan batasan untuk kod aplikasi anda.

Seperti yang dinyatakan oleh Seb Markbåge, cara yang baik untuk mengukur kos permulaan untuk kerangka kerja adalah dengan mula-mula memberikan pandangan, kemudian padamkannya dan kemudian buat lagi kerana ia dapat memberitahu anda bagaimana kerangka kerja skala. Perenderan pertama cenderung menghangatkan sekumpulan kod yang disusun dengan malas, yang mana pohon yang lebih besar dapat memperoleh manfaat ketika skala. Perenderan kedua pada dasarnya adalah peniruan bagaimana penggunaan semula kod pada halaman mempengaruhi ciri-ciri prestasi ketika halaman berkembang dalam kerumitan.

Anda boleh menilai calon anda (atau perpustakaan JavaScript pada umumnya) pada sistem pemarkahan skala 12 mata Sacha Greif dengan meneroka ciri, aksesibilitas, kestabilan, prestasi, ekosistem pakej, komuniti, keluk pembelajaran, dokumentasi, perkakas, rekod prestasi, pasukan, keserasian, keselamatan misalnya.

Perf Track mengesan prestasi kerangka pada skala. (Pratonton besar)

Anda juga boleh bergantung pada data yang dikumpulkan di web dalam jangka masa yang lebih lama. Sebagai contoh, Perf Track mengesan prestasi kerangka pada skala, menunjukkan asal-gabungan Markah Teras Web Vital untuk laman web yang dibina dalam Angular, React, Vue, Polymer, Preact, Ember, Svelte dan AMP. Anda bahkan boleh menentukan dan membandingkan laman web yang dibina dengan Gatsby, Next.js atau Buat Aplikasi React, serta laman web yang dibina dengan Nuxt.js (Vue) atau Sapper (Svelte).

Titik permulaan yang baik adalah memilih a timbunan lalai yang baik untuk permohonan anda. Gatsby (React), Next.js (React), Vuepress (Vue), Preact CLI, dan PWA Starter Kit memberikan lalai yang munasabah untuk memuatkan cepat di luar kotak pada perkakasan mudah alih rata-rata. Juga, lihat panduan prestasi khusus kerangka web.dev untuk React and Angular (terima kasih, Phillip!).

Dan mungkin anda boleh mengambil pendekatan yang sedikit lebih menyegarkan untuk membangun aplikasi satu halaman sama sekali & mdash Turbolinks, perpustakaan JavaScript 15KB yang menggunakan HTML dan bukan JSON untuk memberikan pandangan. Oleh itu, apabila anda mengikuti pautan, Turbolinks mengambil halaman secara automatik, menukar & ltbody & gt, dan menggabungkan & lthead & gtnya, semuanya tanpa menanggung kos pemuatan halaman penuh. Anda boleh memeriksa detil cepat dan dokumentasi lengkap mengenai timbunan (Hotwire).

Untuk mengelakkannya, selalu putus pelaksanaan fungsi menjadi tugas berasingan, tidak segerak, dan di mana mungkin gunakan requestIdleCallback. Pertimbangkan untuk memuatkan bahagian UI dengan malas menggunakan sokongan import dinamik WebPack (), mengelakkan beban, mengurai dan menyusun kos sehingga pengguna benar-benar memerlukannya (terima kasih Addy!).

Seperti yang disebutkan di atas, Time to Interactive (TTI) memberitahu kita masa antara navigasi dan interaktiviti. Secara terperinci, metrik ditentukan dengan melihat tetingkap lima saat pertama setelah kandungan awal diberikan, di mana tidak ada tugas JavaScript yang dilakukan lebih lama daripada 50ms (Tugas Panjang). Sekiranya tugas melebihi 50ms berlaku, carian untuk tetingkap lima saat akan bermula lagi. Akibatnya, penyemak imbas akan mula-mula menganggap bahawa ia dicapai Interaktif, hanya untuk beralih ke Beku, untuk akhirnya beralih kembali ke Interaktif.

Sebaik sahaja kami sampai Interaktif, kemudian kita boleh & mdash sama ada mengikut permintaan atau mengikut masa yang diperlukan & mdash boot bahagian yang tidak penting dari aplikasi. Sayangnya, seperti yang diperhatikan oleh Paul Lewis, kerangka kerja biasanya tidak mempunyai konsep keutamaan sederhana yang dapat ditampilkan kepada pemaju, dan oleh itu boot progresif tidak mudah dilaksanakan dengan kebanyakan perpustakaan dan kerangka kerja.

Namun, kami sampai di sana. Hari-hari ini terdapat beberapa pilihan yang dapat kita terokai, dan Houssein Djirdeh dan Jason Miller memberikan gambaran umum yang sangat baik mengenai pilihan ini dalam ceramah mereka tentang Rendering di Web dan penulisan Jason dan Addy mengenai Seni Bina Modern Front-End. Gambaran keseluruhan di bawah berdasarkan karya mereka yang luar biasa.

    Rendering Sisi Pelayan Penuh (SSR)
    Dalam SSR klasik, seperti WordPress, semua permintaan ditangani sepenuhnya di pelayan. Kandungan yang diminta dikembalikan sebagai halaman HTML yang sudah siap dan penyemak imbas dapat membuatnya dengan segera. Oleh itu, aplikasi SSR tidak dapat menggunakan API DOM, misalnya. Jurang antara Cat Isi Pertama dan Waktu untuk Interaktif biasanya kecil, dan halaman dapat diberikan segera ketika HTML sedang dialirkan ke penyemak imbas.

Ini mengelakkan perjalanan pergi balik tambahan untuk pengambilan data dan templat pada klien, kerana ia ditangani sebelum penyemak imbas mendapat respons. Walau bagaimanapun, kita berakhir dengan masa berfikir pelayan yang lebih lama dan seterusnya Time To First Byte dan kami tidak menggunakan ciri aplikasi moden yang responsif dan kaya.

Dengan React, kita dapat menggunakan modul ReactDOMServer pada pelayan Node seperti Express, dan kemudian memanggil kaedah renderToString untuk menjadikan komponen tingkat atas sebagai rentetan HTML statik.

Dengan Vue.js, kita dapat menggunakan vue-server-renderer untuk membuat instance Vue menjadi HTML menggunakan renderToString. Di Angular, kita dapat menggunakan @nguniversal untuk mengubah permintaan pelanggan menjadi halaman HTML yang diberikan sepenuhnya oleh pelayan. Pengalaman yang dilayan sepenuhnya oleh pelayan juga dapat dicapai di luar kotak dengan Next.js (React) atau Nuxt.js (Vue).

Pendekatan ini mempunyai kelemahan.Hasilnya, kami memperoleh fleksibiliti penuh aplikasi sisi pelanggan sambil memberikan rendering sisi pelayan yang lebih pantas, tetapi kami juga berakhir dengan jurang yang lebih panjang antara Cat Isi Pertama dan Masa Untuk Interaktif dan peningkatan Kelewatan Input Pertama. Rehidrasi sangat mahal, dan biasanya strategi ini sahaja tidak akan cukup baik kerana sangat melambatkan Masa Untuk Interaktif.

Di React, bukannya renderToString (), kita dapat menggunakan renderToNodeStream () untuk menyalurkan respons dan mengirim HTML ke dalam potongan. Di Vue, kita dapat menggunakan renderToStream () yang dapat disalurkan dan dialirkan. Dengan React Suspense, kami mungkin menggunakan rendering tak segerak untuk tujuan itu juga.

Di pihak pelanggan, bukannya boot keseluruhan aplikasi sekaligus, kami boot komponen secara berperingkat. Bahagian aplikasi pertama kali dipecah menjadi skrip mandiri dengan pemisahan kod, dan kemudian dihidrat secara beransur-ansur (mengikut urutan keutamaan kami). Sebenarnya, kita dapat menghidrat komponen kritikal terlebih dahulu, sementara selebihnya dapat dihidrat kemudian. Peranan rendering sisi pelanggan dan pelayan kemudian dapat didefinisikan secara berbeza setiap komponen. Kita juga boleh menangguhkan penghidratan beberapa komponen sehingga ia kelihatan, atau diperlukan untuk interaksi pengguna, atau ketika penyemak imbas tidak aktif.

Untuk Vue, Markus Oberlehner telah menerbitkan panduan untuk mengurangkan Time To Interactive aplikasi SSR menggunakan hidrasi pada interaksi pengguna dan juga vue-lazy-hydrration, plugin peringkat awal yang membolehkan penghidratan komponen pada penglihatan atau interaksi pengguna tertentu. Pasukan Angular bekerja pada penghidratan progresif dengan Ivy Universal. Anda juga boleh melaksanakan penghidratan separa dengan Preact dan Next.js.

Dengan pekerja perkhidmatan yang ada, kita dapat menggunakan rendering pelayan streaming untuk navigasi awal / bukan JS, dan kemudian minta pekerja perkhidmatan membuat rendering HTML untuk navigasi setelah dipasang. Dalam kes itu, pekerja perkhidmatan memprioritaskan kandungan dan membolehkan navigasi gaya SPA untuk memberikan pandangan baru dalam sesi yang sama. Berfungsi dengan baik apabila anda dapat berkongsi templating dan routing code yang sama antara pelayan, halaman klien, dan pekerja perkhidmatan.

Dengan Next.js, kita dapat menggunakan eksport HTML statik dengan memberikan aplikasi ke HTML statik. Di Gatsby, penjana laman web sumber terbuka yang menggunakan React, menggunakan kaedah renderToStaticMarkup dan bukannya kaedah renderToString semasa membuat, dengan potongan JS utama dimuat dan laluan masa depan akan dimuatkan, tanpa atribut DOM yang tidak diperlukan untuk halaman statik sederhana.

Untuk Vue, kita boleh menggunakan Vuepress untuk mencapai tujuan yang sama. Anda juga boleh menggunakan prerender-loader dengan Webpack. Navi memberikan rendering statik juga.

Hasilnya adalah Time To First Byte dan First Contentful Paint yang lebih baik, dan kita mengurangkan jurang antara Time To Interactive dan First Contentful Paint. Kami tidak dapat menggunakan pendekatan jika kandungannya dijangka banyak berubah. Selain itu, semua URL mesti diketahui lebih awal untuk menghasilkan semua halaman. Oleh itu, beberapa komponen mungkin dibuat menggunakan prerendering, tetapi jika kita memerlukan sesuatu yang dinamis, kita harus bergantung pada aplikasi untuk mengambil konten.

Memandangkan JavaScript mempunyai biaya kinerja, seiring dengan bertambahnya jumlah JavaScript dengan aplikasi, JavaScript-split agresif dan penangguhan JavaScript semestinya diperlukan untuk menjinakkan kesan JavaScript. Untuk kes sedemikian, a rendering sisi pelayan biasanya akan menjadi pendekatan yang lebih baik sekiranya tidak memerlukan banyak interaktiviti. Jika bukan pilihan, pertimbangkan untuk menggunakan Model Aplikasi Shell.

Jadi, dari sisi pelanggan atau pelayan? Secara amnya, adalah idea yang baik untuk hadkan penggunaan kerangka kerja sepenuhnya pelanggan ke halaman yang benar-benar memerlukannya. Untuk aplikasi lanjutan, bukan idea yang baik untuk bergantung pada rendering sisi pelayan sahaja. Penyampaian pelayan dan rendering pelanggan adalah bencana jika dilakukan dengan buruk.

Sama ada anda condong ke arah CSR atau SSR, pastikan bahawa anda memberikan piksel penting secepat mungkin dan meminimumkan jurang antara rendering itu dan Time To Interactive. Pertimbangkan untuk melakukan prerender jika halaman anda tidak banyak berubah, dan tangguhkan boot kerangka jika anda boleh. Strim HTML dalam bahagian dengan rendering sisi pelayan, dan laksanakan penghidratan progresif untuk rendering sisi pelanggan & mdash dan hidrat pada penglihatan, interaksi atau semasa waktu senggang untuk mendapatkan yang terbaik dari kedua dunia.

Terdapat banyak penjana laman web statik dan halaman yang dihasilkannya sangat cepat. Semakin banyak kandungan yang dapat kita buat lebih awal daripada menghasilkan paparan halaman pada pelayan atau pelanggan pada waktu permintaan, prestasi yang lebih baik akan kita capai.

Dalam Membangun Laman Web Statik Sebilangan Terhidrat, Progresif yang Ditingkatkan, Markus Oberlehner menunjukkan cara membina laman web dengan penjana laman web statik dan SPA, sambil mencapai peningkatan progresif dan ukuran kumpulan JavaScript minimum. Markus menggunakan Kesebelas dan Praktik sebagai alatnya, dan menunjukkan cara menyiapkan alat, menambah hidrasi separa, hidrasi malas, fail kemasukan pelanggan, mengkonfigurasi Babel untuk Praktik dan membundel Preact dengan Rollup & mdash dari awal hingga akhir.

Dengan JAMStack digunakan di laman web besar hari ini, pertimbangan prestasi baru muncul: membina masa. Sebenarnya, membina ribuan halaman dengan setiap penyebaran baru boleh memakan masa beberapa minit, jadi menjanjikan untuk melihat peningkatan tambahan di Gatsby yang meningkatkan masa pembuatan dengan 60 kali, dengan penyatuan ke dalam penyelesaian CMS yang popular seperti WordPress, Contentful, Drupal, Netlify CMS dan lain-lain.

Penjanaan semula statik tambahan dengan Next.js. (Kredit gambar: Prisma.io) (Pratonton besar)

Juga, Next.js mengumumkan penjanaan statik lebih awal dan bertahap, yang membolehkan kami menambahkan halaman statik baru pada waktu runtime dan mengemas kini halaman yang ada setelah mereka dibina, dengan memberikannya semula di latar belakang ketika lalu lintas masuk .

Perlukan pendekatan yang lebih ringan? Dalam ceramahnya di Eleventy, Alpine dan Tailwind: menuju Jamstack ringan, Nicola Goutay menerangkan perbezaan antara CSR, SSR dan segala-galanya, dan menunjukkan cara menggunakan pendekatan & mdash yang lebih ringan bersama dengan repo GitHub yang menunjukkan pendekatan dalam latihan.

Seperti permintaan HTTP ol yang baik, ketika data diambil dari API, setiap kelewatan tindak balas pelayan akan disebarkan kepada pengguna akhir, oleh itu melambatkan rendering. Apabila sumber ingin mengambil beberapa data dari API, ia perlu meminta data dari titik akhir yang sesuai. Komponen yang menghasilkan data dari beberapa sumber, seperti artikel dengan komen dan foto pengarang di setiap komen, mungkin memerlukan beberapa perjalanan pergi balik ke pelayan untuk mengambil semua data sebelum dapat diberikan. Selanjutnya, jumlah data yang dikembalikan melalui REST selalunya lebih banyak daripada yang diperlukan untuk menjadikan komponen tersebut.

Sekiranya banyak sumber memerlukan data dari API, API mungkin menjadi hambatan prestasi. GraphQL menyediakan penyelesaian yang baik untuk masalah ini. Secara automatik, GraphQL adalah bahasa pertanyaan untuk API anda, dan runtime sisi pelayan untuk melaksanakan pertanyaan dengan menggunakan sistem jenis yang anda tentukan untuk data anda. Tidak seperti REST, GraphQL dapat mengambil semua data dalam satu permintaan, dan tindak balas akan tepat seperti yang diperlukan, tanpa berakhir atau bawah-mengambil data seperti yang biasanya berlaku dengan REST.

Di samping itu, kerana GraphQL menggunakan skema (metadata yang memberitahu bagaimana data disusun), ia sudah dapat mengatur data ke dalam struktur pilihan, jadi, misalnya, dengan GraphQL, kita dapat menghapus kod JavaScript yang digunakan untuk menangani pengurusan negara, menghasilkan kod aplikasi yang lebih bersih yang berjalan lebih cepat pada klien.

Sekiranya anda ingin memulakan dengan GraphQL atau menghadapi masalah prestasi, artikel ini mungkin sangat membantu:

Manfaat teknologi ini yang jelas bagi pengguna adalah prestasi terjamin, jadi kadang-kadang mereka lebih suka pautan AMP- / Apple News / Instant Pages daripada halaman "biasa" dan berpotensi kembung. Untuk laman web yang mempunyai banyak kandungan dan berurusan dengan banyak kandungan pihak ketiga, pilihan ini berpotensi membantu mempercepat masa render secara dramatik.

Kecuali mereka tidak. Menurut Tim Kadlec, misalnya, "Dokumen AMP cenderung lebih cepat daripada rakan sejawatnya, tetapi tidak semestinya halaman berprestasi. AMP bukanlah yang membuat perbezaan terbesar dari perspektif prestasi."

Manfaat bagi pemilik laman web adalah jelas: kebolehtemuan format ini di platform masing-masing dan peningkatan penglihatan di enjin carian.

Baiklah, sekurang-kurangnya begitulah dulu. Oleh kerana AMP bukan lagi syarat untuk Berita Teratas, penerbit mungkin beralih dari AMP ke timbunan tradisional sebagai gantinya (terima kasih, Barry!).

Namun, anda juga boleh membina AMP web progresif dengan menggunakan semula AMP sebagai sumber data untuk PWA anda. Kelemahan? Jelas sekali, kehadiran di kebun berdinding membuat pengembang dapat menghasilkan dan mengekalkan versi terpisah dari kandungannya, dan sekiranya Artikel Segera dan Berita Apple tanpa URL sebenarnya (terima kasih Addy, Jeremy!).

Perhatikan bahawa CDN juga dapat menyajikan (dan memunggah) kandungan dinamik. Oleh itu, mengehadkan CDN anda ke aset statik tidak perlu. Periksa semula sama ada CDN anda melakukan pemampatan dan penukaran (mis. Pengoptimuman gambar dan pengubahan ukuran di tepi), sama ada mereka memberikan sokongan untuk pekerja pelayan, pengujian A / B, dan juga sisi tepi, yang merangkumi bahagian halaman yang statik dan dinamik di tepi CDN (iaitu pelayan yang paling dekat dengan pengguna), dan tugas-tugas lain. Juga, periksa sama ada CDN anda menyokong HTTP melalui QUIC (HTTP / 3).

Katie Hempenius telah menulis panduan hebat untuk CDN yang memberikan pandangan mengenai bagaimana memilih CDN yang baik, bagaimana memperbaikinya dan semua perkara kecil yang perlu diingat semasa menilai satu. Secara amnya, ada baiknya menyimpan kandungan secara agresif mungkin dan mengaktifkan ciri prestasi CDN seperti Brotli, TLS 1.3, HTTP / 2, dan HTTP / 3.

Nota: berdasarkan kajian oleh Patrick Meenan dan Andy Davies, keutamaan HTTP / 2 secara efektif dilanggar pada banyak CDN, jadi berhati-hatilah ketika memilih CDN. Patrick mempunyai lebih banyak butiran dalam perbincangannya mengenai HTTP / 2 Prioritization (terima kasih, Barry!).

CDNPerf mengukur kelajuan pertanyaan untuk CDN dengan mengumpulkan dan menganalisis 300 juta ujian setiap hari. (Pratonton besar)

Semasa memilih CDN, anda boleh menggunakannya laman perbandingan dengan gambaran keseluruhan terperinci mengenai ciri-ciri mereka:

    , matriks perbandingan CDN untuk Cloudfront, Aazure, KeyCDN, Fastly, Verizon, Stackpach, Akamai dan banyak lagi. mengukur kelajuan pertanyaan untuk CDN dengan mengumpulkan dan menganalisis 300 juta ujian setiap hari, dengan semua hasil berdasarkan data RUM dari pengguna di seluruh dunia. Periksa juga perbandingan prestasi DNS dan Perbandingan Cloud Peformance. memberikan gambaran keseluruhan CDN untuk topik tertentu, seperti Serve Stale, Purge, Origin Shield, Prefetch dan Compression. memberikan pandangan mengenai penyedia CDN teratas, pengurusan RTT dan TLS mereka, masa perundingan TLS, penggunaan HTTP / 2 dan lain-lain. (Malangnya, data hanya dari 2019).

Pengoptimuman Aset

  1. Gunakan Brotli untuk pemampatan teks biasa.
    Pada tahun 2015, Google memperkenalkanBrotli, format data tanpa sumber terbuka yang baru, yang kini disokong di semua penyemak imbas moden. Perpustakaan Brotli sumber terbuka, yang menerapkan pengekod dan penyahkod untuk Brotli, mempunyai 11 tahap kualiti yang telah ditentukan untuk pengekod, dengan tahap kualiti yang lebih tinggi menuntut lebih banyak CPU sebagai pertukaran untuk nisbah mampatan yang lebih baik. Mampatan yang lebih perlahan akhirnya akan menghasilkan kadar mampatan yang lebih tinggi, namun Brotli menyahmampatkan dengan cepat. Perlu diingat bahawa Brotli dengan tahap pemampatan 4 lebih kecil dan memampatkan lebih cepat daripada Gzip.

Dalam praktiknya, Brotli nampaknya jauh lebih berkesan daripada Gzip. Pendapat dan pengalaman berbeza, tetapi jika laman web anda sudah dioptimumkan dengan Gzip, anda mungkin mengharapkan sekurang-kurangnya peningkatan satu digit dan peningkatan dua digit terbaik dalam pengurangan ukuran dan masa FCP. Anda juga boleh menganggarkan penjimatan mampatan Brotli untuk laman web anda.

Penyemak imbas akan menerima Brotli hanya jika pengguna mengunjungi laman web melalui HTTPS. Brotli disokong secara meluas, dan banyak CDN menyokongnya (Akamai, Netlify Edge, AWS, KeyCDN, Fastly (saat ini hanya sebagai pass-through), Cloudflare, CDN77) dan anda boleh mengaktifkan Brotli walaupun pada CDN yang belum menyokongnya (dengan pekerja perkhidmatan).

Hasil tangkapan adalah kerana memampatkan semua aset dengan Brotli pada tahap pemampatan yang tinggi adalah mahal, banyak penyedia hosting tidak dapat menggunakannya pada fule scall hanya kerana kos yang besar yang dihasilkannya. Sebenarnya, pada tahap mampatan tertinggi, Brotli adalah begitu perlahan sehingga sebarang potensi keuntungan dalam ukuran fail dapat dibatalkan oleh jumlah masa yang diperlukan untuk pelayan mula menghantar respons kerana menunggu untuk memampatkan aset secara dinamis. (Tetapi jika anda mempunyai masa selama masa pembuatan dengan pemampatan statik, tentu saja, tetapan pemampatan yang lebih tinggi lebih disukai.)

Perbandingan masa akhir belakang pelbagai kaedah pemampatan. Tidak menghairankan, Brotli lebih perlahan daripada gzip (buat masa ini). (Pratonton besar)

Ini mungkin akan berubah. Format fail Brotli merangkumi a kamus statik terbina dalam, dan selain mengandung berbagai rentetan dalam beberapa bahasa, ini juga mendukung pilihan untuk menerapkan beberapa transformasi pada kata-kata itu, meningkatkan fleksibilitasnya. Dalam penyelidikannya, Felix Hanau telah menemui cara untuk meningkatkan mampatan pada tahap 5 hingga 9 dengan menggunakan "subset kamus yang lebih khusus daripada yang default" dan bergantung pada tajuk Jenis-Isi untuk memberitahu pemampat jika harus menggunakan kamus untuk HTML, JavaScript atau CSS. Hasilnya adalah "kesan prestasi yang dapat diabaikan (1% hingga 3% lebih banyak CPU dibandingkan dengan 12% biasanya) ketika memampatkan kandungan web pada tahap pemampatan tinggi, menggunakan pendekatan penggunaan kamus yang terbatas."

Dengan pendekatan kamus yang lebih baik, kita dapat memampatkan aset dengan lebih cepat pada tahap pemampatan yang lebih tinggi, sementara hanya menggunakan CPU 1% hingga 3% lebih banyak. Biasanya, tahap pemampatan 6 lebih dari 5 akan meningkatkan penggunaan CPU hingga 12%. (Pratonton besar)

Selain itu, dengan penyelidikan Elena Kirilenko, kita dapat mencapai dengan cepat dan penekanan semula Brotli yang cekap menggunakan artifak mampatan sebelumnya. Menurut Elena, "setelah kami memiliki aset yang dikompresi melalui Brotli, dan kami berusaha untuk memampatkan kandungan dinamis dalam perjalanan, di mana kandungannya menyerupai kandungan yang tersedia untuk kami sebelumnya, kami dapat mencapai peningkatan yang signifikan pada masa pemampatan. "

Berapa kerap berlaku? Cth. dengan penghantaran JavaScript menggabungkan subset (mis., apabila bahagian kod sudah di-cache pada klien atau dengan bundle dinamik yang disajikan dengan WebBundle). Atau dengan HTML dinamik berdasarkan templat yang diketahui sebelumnya, atau fon WOFF2 yang disusun secara dinamik. Menurut Elena, kita dapat memperoleh peningkatan 5,3% pada pemampatan dan 39% peningkatan pada kecepatan pemampatan ketika menghapus 10% kandungan, dan 3,2% tingkat pemampatan lebih baik dan 26% pemampatan lebih cepat, ketika menghapus 50% kandungan.

Pemampatan Brotli semakin baik, jadi jika anda dapat memintas kos pemampatan aset statik secara dinamik, ia pasti bernilai. Tidak perlu dikatakan bahawa Brotli dapat digunakan untuk apa-apa muatan teks biasa & mdash HTML, CSS, SVG, JavaScript, JSON, dan sebagainya.

Nota: pada awal 2021, kira-kira 60% respons HTTP disampaikan tanpa pemampatan berasaskan teks, dengan 30.82% memampatkan dengan Gzip, dan 9.1% memampatkan dengan Brotli (baik di telefon bimbit dan di desktop). Cth, 23.4% halaman Sudut tidak dimampatkan (melalui gzip atau Brotli). Namun sering menghidupkan mampatan adalah salah satu kemenangan termudah untuk meningkatkan prestasi dengan suis mudah.

Strategi? Pra-kompres aset statik dengan Brotli + Gzip pada tahap tertinggi dan kompres (dinamik) HTML dengan cepat dengan Brotli pada tahap 4–6. Pastikan pelayan mengendalikan perundingan kandungan untuk Brotli atau Gzip dengan betul.

Masa depan gambar responsif mungkin berubah secara mendadak dengan penerapan petunjuk pelanggan yang lebih luas. Petunjuk pelanggan adalah bidang tajuk permintaan HTTP, mis. DPR, Viewport-Width, Width, Save-Data, Terima (untuk menentukan pilihan format gambar) dan lain-lain. Mereka seharusnya memberitahu pelayan mengenai perincian penyemak imbas, skrin, sambungan dll.

Hasilnya, pelayan dapat memutuskan cara mengisi susun atur dengan gambar bersaiz tepat, dan sajikan gambar ini hanya dalam format yang diingini. Dengan petunjuk pelanggan, kami mengalihkan pemilihan sumber dari markup HTML dan ke dalam perundingan permintaan-respons antara klien dan pelayan.

Media penyesuaian yang digunakan. Kami menghantar placeholder dengan teks kepada pengguna yang berada di luar talian, gambar beresolusi rendah kepada pengguna 2G, gambar beresolusi tinggi kepada pengguna 3G dan video HD kepada pengguna 4G. Melalui Memuatkan laman web dengan pantas pada telefon ciri $ 20. (Pratonton besar)

Seperti yang diperhatikan oleh Ilya Grigorik sebentar tadi, pelanggan mengisyaratkan melengkapkan gambar & mdash bahawa mereka bukan alternatif untuk gambar responsif. "Elemen & ltpicture & gt memberikan kawalan arah seni yang diperlukan dalam markup HTML. Petunjuk klien memberikan anotasi pada permintaan gambar yang dihasilkan yang membolehkan automasi pemilihan sumber. Pekerja Perkhidmatan menyediakan kemampuan pengurusan permintaan dan respons penuh pada klien."

Seorang pekerja perkhidmatan boleh, sebagai contoh, tambahkan nilai header petunjuk pelanggan baru untuk permintaan itu, tulis semula URL dan arahkan permintaan gambar ke CDN, sesuaikan tindak balas berdasarkan kesambungan dan pilihan pengguna, dan lain-lain. Ini berlaku bukan sahaja untuk aset gambar tetapi untuk hampir semua permintaan lain juga.

Untuk pelanggan yang menyokong petunjuk pelanggan, seseorang dapat mengukur penjimatan bait 42% pada gambar dan 1MB + bait lebih sedikit untuk persentil ke-70 +. Di Smashing Magazine, kita juga dapat mengukur peningkatan 19-32%. Petunjuk pelanggan disokong dalam penyemak imbas berasaskan Chromium, tetapi masih dipertimbangkan di Firefox.

Walau bagaimanapun, jika anda menyediakan markup gambar responsif biasa dan tag & ltmeta & gt untuk Petunjuk Pelanggan, penyemak imbas yang menyokong akan menilai penanda gambar responsif dan meminta sumber gambar yang sesuai menggunakan tajuk HTTP Client Hints.

Pada dasarnya kami dapat memberikan gambar latar belakang beresolusi rendah secara bersyarat dengan deskriptor 1x, dan gambar beresolusi lebih tinggi dengan deskriptor 2x, dan bahkan gambar berkualiti cetakan dengan deskriptor 600dpi. Berhati-hatilah: penyemak imbas tidak memberikan maklumat khas mengenai gambar latar untuk teknologi bantu, jadi idealnya foto-foto ini hanyalah hiasan.

Jadi sekurang-kurangnya, kita dapat menjelajah menggunakan format WebP untuk gambar kita. Sebenarnya, saga WebP hampir menjelang akhir tahun lalu dengan Apple menambahkan sokongan untuk WebP di Safari 14. Oleh itu, setelah bertahun-tahun perbincangan dan perbahasan, sehingga hari ini, WebP disokong di semua penyemak imbas moden. Oleh itu, kami dapat menayangkan gambar WebP dengan elemen & ltpicture & gt dan penggantian JPEG jika diperlukan (lihat potongan kod Andreas Bovens) atau dengan menggunakan perundingan kandungan (menggunakan tajuk Terima).

WebP bukan tanpa itu keburukan walaupun. Walaupun ukuran fail gambar WebP dibandingkan dengan Guetzli dan Zopfli yang setara, formatnya tidak menyokong rendering progresif seperti JPEG, itulah sebabnya pengguna mungkin melihat gambar siap dengan lebih cepat dengan JPEG yang bagus walaupun gambar WebP mungkin semakin cepat melalui rangkaian. Dengan JPEG, kami dapat memberikan pengalaman pengguna yang "layak" dengan separuh atau bahkan seperempat data dan memuatkan selebihnya kemudian, daripada mempunyai gambar setengah kosong seperti yang berlaku dalam WebP.

Keputusan anda akan bergantung pada apa yang anda inginkan: dengan WebP, anda akan mengurangkan muatan, dan dengan JPEG anda akan meningkatkan prestasi yang dirasakan. Anda boleh mengetahui lebih lanjut mengenai WebP dalam bicara WebP Rewind oleh Pascal Massimino Google.

Untuk penukaran ke WebP, anda boleh menggunakan WebP Converter, cwebp atau libwebp. Ire Aderinokun mempunyai tutorial yang sangat terperinci untuk menukar gambar ke WebP, juga & mdash dan begitu juga Josh Comeau dalam tulisannya mengenai penggunaan format gambar moden.

Ceramah menyeluruh mengenai WebP: WebP Rewind oleh Pascal Massimino. (Pratonton besar)

Sketsa secara asli menyokong WebP, dan gambar WebP dapat dieksport dari Photoshop menggunakan plugin WebP untuk Photoshop. Tetapi pilihan lain juga ada.

Sekiranya anda menggunakan WordPress atau Joomla, ada peluasan untuk membantu anda melaksanakan sokongan dengan mudah untuk WebP, seperti Optimus dan Cache Enabler untuk WordPress dan sambungan yang disokong oleh Joomla sendiri (melalui Cody Arsenault). Anda juga boleh mengaburkan elemen & ltpicture & gt dengan React, komponen yang digayakan atau gatsby-image.

Ah & mdash palam tanpa malu! & mdash Jeremy Wagner malah menerbitkan buku Smashing di WebP yang mungkin anda ingin periksa sama ada anda berminat dengan semua perkara di WebP.

Sebenarnya, berbanding dengan WebP dan JPEG, AVIF menunjukkan prestasi yang lebih baik, menghasilkan penjimatan ukuran fail median hingga 50% pada persamaan DSSIM ((dis) yang sama antara dua atau lebih gambar menggunakan algoritma yang menghampiri penglihatan manusia). Sebenarnya, dalam catatannya yang menyeluruh mengenai pengoptimuman pemuatan gambar, Malte Ubl menyatakan bahawa AVIF "secara konsisten mengungguli JPEG dengan cara yang sangat ketara. Ini berbeza dengan WebP yang tidak selalu menghasilkan gambar yang lebih kecil daripada JPEG dan sebenarnya mungkin menjadi jaringan- kerugian kerana kekurangan sokongan untuk pemuatan progresif. "

Kami dapat menggunakan AVIF sebagai peningkatan progresif, memberikan WebP atau JPEG atau PNG ke penyemak imbas yang lebih lama. (Pratonton besar). Lihat paparan teks biasa di bawah.

Ironinya, AVIF dapat menunjukkan prestasi yang lebih baik daripada SVG besar walaupun sudah tentu ia tidak boleh dilihat sebagai pengganti SVG. Ia juga merupakan salah satu format gambar pertama yang menyokong sokongan warna HDR yang menawarkan kecerahan yang lebih tinggi, kedalaman bit warna, dan gamut warna. Satu-satunya kelemahan adalah bahawa AVIF pada masa ini tidak menyokong penyahkodan gambar progresif (belum?) Dan, sama seperti Brotli, pengekodan kadar mampatan tinggi pada masa ini agak perlahan, walaupun penyahkodan cepat.

AVIF kini disokong di Chrome, Firefox dan Opera, dan sokongan di Safari dijangka akan segera hadir (kerana Apple adalah ahli kumpulan yang membuat AV1).

Apa itu kaedah terbaik untuk menyampaikan gambar hari ini kemudian? Untuk ilustrasi dan gambar vektor, (Mampat) SVG sudah pasti pilihan terbaik. Untuk foto, kami menggunakan kaedah perundingan kandungan dengan elemen gambar. Sekiranya AVIF disokong, kami mengirim gambar AVIF jika tidak demikian, kami kembali ke WebP terlebih dahulu, dan jika WebP tidak disokong, kami beralih ke JPEG atau PNG sebagai fallback (menerapkan syarat @ media jika diperlukan):

Terus terang, kemungkinan besar kita menggunakan beberapa syarat dalam elemen gambar walaupun:

Anda boleh melangkah lebih jauh dengan menukar gambar animasi dengan gambar statik untuk pelanggan yang memilih untuk bergerak kurang dengan gerakan lebih suka-dikurangkan:

Selama beberapa bulan, AVIF mendapat daya tarikan:

  • Kami dapat menguji kekurangan WebP / AVIF di panel Rendering di DevTools.
  • Kita dapat menggunakan Squoosh, AVIF.io dan libavif untuk menyandikan, menyahkod, memampatkan dan menukar fail AVIF.
  • Kita boleh menggunakan komponen AVIF Preact Jake Archibald yang menyahkod file AVIF pada pekerja dan memaparkan hasilnya pada kanvas,
  • Untuk menyampaikan AVIF hanya kepada penyemak imbas yang menyokong, kami dapat menggunakan plugin PostCSS bersama dengan skrip 315B untuk menggunakan AVIF dalam pernyataan CSS anda.
  • Kami secara beransur-ansur dapat memberikan format gambar baru dengan CSS dan Cloudlare Workers untuk mengubah dokumen HTML yang dikembalikan secara dinamis, menyimpulkan maklumat dari tajuk penerimaan, dan kemudian menambahkan kelas webp / avif dll sesuai.
  • AVIF sudah tersedia di Cloudinary (dengan had penggunaan), Cloudflare menyokong AVIF dalam Ubah Ukuran Gambar, dan anda boleh mengaktifkan AVIF dengan Header AVIF Khusus di Netlify.
  • Ketika berkaitan dengan animasi, AVIF berkinerja baik seperti Safari's & ltimg src = mp4 & gt, mengungguli GIF dan WebP pada umumnya, tetapi MP4 masih berkinerja lebih baik.
  • Secara umum, untuk animasi, AVC1 (h264) & gt HVC1 & gt WebP & gt AVIF & gt GIF, dengan andaian bahawa penyemak imbas berasaskan Chromium akan pernah menyokong & ltimg src = mp4 & gt.
  • Anda boleh mendapatkan lebih banyak perincian mengenai AVIF dalam AVIF untuk ceramah Pengekodan Gambar Generasi Seterusnya oleh Aditya Mavlankar dari Netflix, dan ceramah Format Gambar AVIF oleh Cloudflare Kornel Lesiński.
  • Rujukan yang bagus untuk semua perkara AVIF: Catatan komprehensif Jake Archibald di AVIF telah tiba.

Begitu juga masa depan AVIF? Jon Sneyers tidak bersetuju: AVIF menunjukkan 60% lebih teruk daripada JPEG XL, format percuma dan terbuka lain yang dikembangkan oleh Google dan Cloudinary. Sebenarnya, JPEG XL nampaknya lebih baik. Walau bagaimanapun, JPEG XL masih dalam peringkat akhir standardisasi, dan belum berfungsi di penyemak imbas mana pun. (Tidak boleh bercampur dengan JPEG-XR Microsoft yang berasal dari Internet Explorer yang bagus sebanyak 9 kali).

Untuk PNG, kita dapat menggunakan Pingo, dan untuk SVG, kita dapat menggunakan SVGO atau SVGOMG. Dan jika anda perlu melihat dengan cepat dan menyalin atau memuat turun semua aset SVG dari laman web, svg-grabber juga boleh melakukannya untuk anda.

Setiap artikel pengoptimuman gambar akan menyatakannya, tetapi menjaga aset vektor bersih dan ketat selalu perlu disebutkan. Pastikan membersihkan aset yang tidak digunakan, keluarkan metadata yang tidak diperlukan dan kurangkan jumlah titik jalan dalam karya seni (dan dengan itu kod SVG). (Terima kasih, Jeremy!)

Terdapat juga alat dalam talian yang berguna walaupun:

  • Gunakan Squoosh untuk memampatkan, mengubah ukuran dan memanipulasi gambar pada tahap pemampatan optimum (lossy atau lossless),
  • Gunakan Guetzli.it untuk memampatkan dan mengoptimumkan gambar JPEG dengan Guetzli, yang berfungsi dengan baik untuk gambar dengan tepi tajam dan warna padat (tetapi mungkin sedikit lebih perlahan)).
  • Gunakan Generator Breakpoints Imej Responsif atau perkhidmatan seperti Cloudinary atau Imgix untuk mengoptimumkan pengoptimuman gambar. Juga, dalam banyak kes, penggunaan srcset dan ukuran sahaja akan memperoleh faedah yang besar.
  • Untuk memeriksa kecekapan markup responsif anda, anda boleh menggunakan pengimejan-timbunan, alat baris perintah yang mengukur kecekapan merentasi ukuran ruang pandang dan nisbah piksel peranti.
  • Anda boleh menambahkan pemampatan gambar automatik ke aliran kerja GitHub anda, sehingga tidak ada gambar yang dapat memukul produksi tanpa kompres. Tindakan itu menggunakan mozjpeg dan libvips yang berfungsi dengan PNG dan JPG.
  • Untuk mengoptimumkan penyimpanan secara berkala, anda boleh menggunakan format Lepton baru Dropbox untuk memampatkan JPEG tanpa kerugian dengan purata 22%.
  • Gunakan BlurHash jika anda ingin menunjukkan gambar placeholder lebih awal. BlurHash mengambil gambar, dan memberikan rentetan pendek (hanya 20-30 aksara!) Yang mewakili tempat letak untuk gambar ini. Rentetan cukup pendek sehingga dapat ditambahkan dengan mudah sebagai medan dalam objek JSON.

Kadang kala mengoptimumkan gambar sahaja tidak akan berjaya. Untuk meningkatkan masa yang diperlukan untuk memulakan rendering gambar kritikal, pemalas-malas gambar yang kurang penting dan menangguhkan skrip untuk dimuatkan setelah gambar kritikal telah diberikan. Cara yang paling kalis peluru adalah pemuatan malas hibrid, apabila kita menggunakan pemuatan malas dan pemuatan malas asli, perpustakaan yang mengesan sebarang perubahan penglihatan yang dicetuskan melalui interaksi pengguna (dengan IntersectionObserver yang akan kita terokai kemudian). Selain itu:

  • Pertimbangkan untuk memuatkan terlebih dahulu gambar kritikal, jadi penyemak imbas tidak menjumpainya terlalu lewat. Untuk gambar latar, jika anda ingin menjadi lebih agresif daripada itu, anda boleh menambahkan gambar tersebut sebagai gambar biasa dengan & ltimg src & gt, dan kemudian menyembunyikannya dari skrin.
  • Pertimbangkan untuk Menukar Gambar dengan Atribut Saiz dengan menentukan dimensi paparan gambar yang berbeza bergantung pada pertanyaan media, mis. untuk memanipulasi saiz untuk menukar sumber dalam komponen pembesar.
  • Kaji ketidakkonsistenan muat turun gambar untuk mengelakkan muat turun yang tidak dijangka untuk gambar latar depan dan latar belakang. Awas gambar yang dimuat secara lalai, tetapi mungkin tidak pernah dipaparkan & mdash cth. dalam karusel, akordeon dan galeri gambar.
  • Pastikan sentiasa menetapkan lebar dan tinggi pada gambar. Perhatikan sifat nisbah aspek dalam atribut CSS dan intrinsicsize yang akan membolehkan kita menetapkan nisbah aspek dan dimensi untuk gambar, supaya penyemak imbas dapat menempah slot susun atur yang telah ditentukan lebih awal untuk mengelakkan lonjakan susun atur semasa memuatkan halaman.

Sekiranya anda merasa berani, anda boleh memotong dan menyusun semula aliran HTTP / 2 menggunakan pekerja Edge, pada dasarnya penapis masa nyata yang tinggal di CDN, untuk menghantar gambar lebih cepat melalui rangkaian. Pekerja Edge menggunakan aliran JavaScript yang menggunakan potongan yang dapat anda kendalikan (pada dasarnya mereka adalah JavaScript yang berjalan di tepi CDN yang dapat mengubah respons streaming), sehingga anda dapat mengawal pengiriman gambar.

Dengan pekerja perkhidmatan, sudah terlambat kerana anda tidak dapat mengawal apa yang ada di kabel, tetapi ia berfungsi dengan pekerja Edge. Oleh itu, anda boleh menggunakannya di atas JPEG statik yang disimpan secara progresif untuk halaman arahan tertentu.

Contoh output dengan pengimejan-timbunan, alat baris perintah yang mengukur kecekapan merentas ukuran ruang pandang dan nisbah piksel peranti. (Sumber gambar) (Pratonton besar)

Tidak cukup baik? Anda juga dapat meningkatkan prestasi yang dirasakan untuk gambar dengan teknik pelbagai gambar latar. Perlu diingat bahawa bermain dengan kontras dan mengaburkan butiran yang tidak perlu (atau membuang warna) juga dapat mengurangkan ukuran fail. Ah, anda perlu besarkan gambar kecil tanpa kehilangan kualiti? Pertimbangkan untuk menggunakan Letsenhance.io.

Pengoptimuman ini setakat ini merangkumi asas sahaja. Addy Osmani telah menerbitkan panduan yang sangat terperinci mengenai Pengoptimuman Imej Penting yang sangat mendalam mengenai perincian pemampatan gambar dan pengurusan warna. Contohnya, anda boleh kaburkan bahagian yang tidak diperlukan gambar (dengan menerapkan penapis kabur Gauss kepada mereka) untuk mengurangkan ukuran fail, dan akhirnya anda mungkin mula mengeluarkan warna atau mengubah gambar menjadi hitam putih untuk mengurangkan ukurannya lebih jauh. Untuk gambar latar, mengeksport foto dari Photoshop dengan kualiti 0 hingga 10% juga boleh diterima.

Di Smashing Magazine, kami menggunakan postfix -opt untuk nama gambar & mdash misalnya, brotli-compression-opt.png setiap kali gambar mengandungi postfix itu, semua orang dalam pasukan tahu bahawa gambar tersebut telah dioptimumkan.

Ah, dan jangan gunakan JPEG-XR di web & mdash "pemprosesan penyahkodan sisi perisian JPEG-XR pada CPU membatalkan dan bahkan melebihi kesan berpotensi positif dari penjimatan saiz bait, terutama dalam konteks SPA" (tidak untuk bercampur dengan CloudEGI / JPEG XL Google sekalipun).

Tidak seperti gambar, penyemak imbas tidak memuatkan kandungan & ltvideo & gt, tetapi video HTML5 cenderung lebih ringan dan lebih kecil daripada GIF. Bukan pilihan? Baiklah, sekurang-kurangnya kita dapat menambahkan pemampatan lossy ke GIF dengan Lossy GIF, gifsicle atau giflossy.

Ujian oleh Colin Bendell menunjukkan bahawa video sebaris dalam tag img dalam Safari Technology Preview memaparkan sekurang-kurangnya 20 × lebih cepat dan menyahkod 7 × lebih cepat daripada setara GIF, selain menjadi pecahan dalam ukuran fail. Walau bagaimanapun, ia tidak disokong di penyemak imbas lain.

Di negeri berita baik, format video telah maju secara besar-besaran selama bertahun. Untuk masa yang lama, kami berharap WebM akan menjadi format untuk mengatur semuanya, dan WebP (yang pada dasarnya adalah satu gambar pegun di dalam wadah video WebM) akan menjadi pengganti format gambar bertarikh. Memang, Safari kini menyokong WebP, tetapi walaupun WebP dan WebM mendapat sokongan hari ini, kejayaan itu tidak berlaku.

Namun, kami dapat menggunakan WebM untuk kebanyakan penyemak imbas moden di luar sana:

Tetapi mungkin kita dapat melihatnya sama sekali. Pada tahun 2018, Alliance of Open Media telah mengeluarkan format video menjanjikan baru yang dipanggil AV1. AV1 mempunyai mampatan yang serupa dengan codec H.265 (evolusi H.264) tetapi tidak seperti yang terakhir, AV1 adalah percuma. Harga lesen H.265 mendorong vendor penyemak imbas untuk menggunakan AV1 yang berprestasi sama sebaliknya: AV1 (seperti H.265) memampatkan dua kali lebih baik daripada WebM.

AV1 mempunyai peluang yang baik untuk menjadi standard utama untuk video di web. (Kredit gambar: Wikimedia.org) (Pratonton besar)

Sebenarnya, Apple pada masa ini menggunakan format HEIF dan HEVC (H.265), dan semua foto dan video pada iOS terkini disimpan dalam format ini, bukan JPEG. Walaupun HEIF dan HEVC (H.265) tidak terkena web dengan betul (belum?), AV1 & mdash dan ia mendapat sokongan penyemak imbas. Oleh itu, menambahkan sumber AV1 dalam tag & ltvideo & gt anda adalah wajar, kerana semua vendor penyemak imbas nampaknya berada di dalamnya.

Buat masa ini, pengekodan yang paling banyak digunakan dan disokong adalah H.264, dilayan oleh fail MP4, jadi sebelum menyampaikan fail, pastikan MP4 anda diproses dengan pengekodan multipass, kabur dengan kesan iirblur frei0r (jika ada) dan metadata atom moov dipindahkan ke kepala fail, sementara pelayan anda menerima penyampaian bait. Boris Schapira memberikan arahan tepat untuk FFmpeg untuk mengoptimumkan video semaksimum mungkin. Sudah tentu, menyediakan format WebM sebagai alternatif juga akan membantu.

Perlu mula membuat video dengan lebih pantas tetapi fail video masih terlalu besar? Sebagai contoh, setiap kali anda mempunyai video latar belakang yang besar di halaman arahan? Teknik yang biasa digunakan adalah menunjukkan bingkai pertama sebagai gambar pegun terlebih dahulu, atau menampilkan segmen gelung pendek yang sangat dioptimumkan yang dapat ditafsirkan sebagai bagian dari video, dan kemudian, setiap kali video cukup disangga, mulailah bermain video sebenar. Doug Sillars telah menulis panduan terperinci mengenai prestasi video latar belakang yang dapat membantu dalam hal ini. (Terima kasih, Guy Podjarny!).

Untuk senario di atas, anda mungkin ingin memberikan gambar poster responsif. Secara lalai, elemen video hanya membenarkan satu gambar sebagai poster, yang tidak semestinya optimum. Kami dapat menggunakan Poster Video Responsif, pustaka JavaScript yang membolehkan anda menggunakan gambar poster yang berlainan untuk layar yang berlainan, sementara juga menambahkan overlay peralihan dan kawalan gaya penuh tempat letak video.

Penyelidikan menunjukkan bahawa kualiti aliran video mempengaruhi tingkah laku penonton. Sebenarnya, penonton mula meninggalkan video sekiranya kelewatan permulaan melebihi sekitar 2 saat. Di luar tahap itu, kenaikan kelewatan 1 saat menghasilkan kenaikan kadar pengabaian sekitar 5.8%. Oleh itu, tidak menghairankan bahawa waktu mula video median adalah 12.8s, dengan 40% video mempunyai sekurang-kurangnya 1 gerai, dan 20% sekurang-kurangnya 2s main balik video terhenti. Sebenarnya, gerai video tidak dapat dielakkan di 3G kerana video dimainkan lebih pantas daripada rangkaian yang dapat menyediakan kandungan.

Jadi, apa penyelesaiannya? Biasanya peranti skrin kecil tidak dapat menangani 720p dan 1080p yang kami layani desktop. Menurut Doug Sillars, kita boleh membuat versi video yang lebih kecil, dan menggunakan Javascript untuk mengesan sumber untuk skrin yang lebih kecil untuk memastikan main semula pantas dan lancar pada peranti ini. Sebagai alternatif, kita boleh menggunakan streaming video. Aliran video HLS akan menyampaikan video bersaiz tepat ke peranti & mdash yang menyingkirkan keperluan untuk membuat video yang berbeza untuk skrin yang berbeza. Ini juga akan merundingkan kelajuan rangkaian, dan menyesuaikan kadar bit video untuk kelajuan rangkaian yang anda gunakan.

Untuk mengelakkan pembaziran lebar jalur, kami hanya dapat menambahkan sumber video untuk peranti yang benar-benar dapat memainkan video dengan baik. Sebagai alternatif, kita dapat menghapus atribut main automatik dari tag video sama sekali dan menggunakan JavaScript untuk memasukkan main automatik untuk layar yang lebih besar. Selain itu, kita perlu menambahkan preload = "none" pada video untuk memberitahu penyemak imbas agar tidak memuat turun ada fail video sehingga benar-benar memerlukan fail:

Kami kemudian dapat menambahkan semula putaran automatik melebihi ambang tertentu (mis. 1000 piksel):

Bilangan Gerai mengikut kelajuan peranti dan rangkaian. Peranti yang lebih pantas di rangkaian yang lebih pantas hampir tidak mempunyai gerai. Menurut kajian Doug Sillars. (Pratonton besar)

Prestasi main balik video adalah cerita dengan sendirinya, dan jika anda ingin menyelami secara terperinci, lihatlah siri Doug Sillars yang lain mengenai Praktik Terbaik Penyampaian Video dan Penyampaian Video Semasa Ini yang merangkumi perincian mengenai metrik penghantaran video , pramuat video, pemampatan dan penstriman. Akhirnya, anda dapat memeriksa kelajuan atau pantas streaming video anda dengan Stream atau Not.

Sokongan WOFF2 hebat, dan kami dapat menggunakan WOFF sebagai pengganti untuk penyemak imbas yang tidak menyokongnya & mdash atau mungkin penyemak imbas lama dapat disajikan fon sistem. Disana ada banyak, banyak, banyak pilihan untuk memuatkan fon web, dan kami dapat memilih salah satu strategi dari "Panduan Komprehensif untuk Strategi Pemuatan Font" dari Zach Leatherman (potongan kode juga tersedia sebagai resipi memuat fon Web).

Mungkin pilihan yang lebih baik untuk dipertimbangkan hari ini adalah Critical FOFT dengan preload dan kaedah "The Compromise". Kedua-dua mereka menggunakan a rendering dua peringkat untuk menyampaikan fon web secara berperingkat & mdash terlebih dahulu kumpulan kecil yang diperlukan untuk menjadikan halaman cepat dan tepat dengan fon web, dan kemudian memuatkan seisi keluarga yang lain. Perbezaannya ialah teknik "The Compromise" memuatkan polyfill secara asinkron hanya jika peristiwa memuat font tidak disokong, jadi anda tidak perlu memuatkan polyfill secara lalai. Perlukan kemenangan pantas? Zach Leatherman mempunyai tutorial dan kajian kes 23 minit cepat untuk mendapatkan fon anda dengan teratur.

Secara umum, mungkin idea yang baik untuk menggunakan petunjuk sumber pramuat untuk memuatkan fon, tetapi dalam tanda anda, sertakan petunjuknya. selepas pautan ke CSS dan JavaScript kritikal. Dengan preload, ada teka-teki keutamaan, jadi pertimbangkan untuk memasukkan elemen rel = "preload" ke dalam DOM sebelum skrip penyekat luaran. Menurut Andy Davies, "sumber yang disuntikkan menggunakan skrip disembunyikan dari penyemak imbas sehingga skrip dijalankan, dan kami dapat menggunakan tingkah laku ini untuk menunda ketika penyemak imbas menemui petunjuk pramuat." Jika tidak, pemuatan fon akan dikenakan pada masa rendering pertama.

Apabila semuanya kritikal, tidak ada yang kritikal. pramuat hanya satu atau maksimum dua fon setiap keluarga. (Kredit gambar: Zach Leatherman & ndash slide 93) (Pratonton besar)

Adalah idea yang baik untuk memilih dan memilih fail yang paling penting, mis. yang penting untuk menghasilkan atau yang akan membantu anda mengelakkan reflow teks yang kelihatan dan mengganggu. Secara umum, Zach menasihati pramuat satu atau dua fon setiap keluarga & mdash juga masuk akal untuk menunda memuatkan fon jika mereka kurang kritikal.

Sudah menjadi lumrah untuk menggunakan nilai lokal () (yang merujuk pada font lokal dengan nama) ketika menentukan keluarga font dalam peraturan @ font-face:

Ideanya munasabah: beberapa fon sumber terbuka yang popular seperti Open Sans telah diprapasang dengan beberapa pemacu atau aplikasi, jadi jika fon tersedia secara tempatan, penyemak imbas tidak perlu memuat turun fon web dan dapat memaparkan lokal fon segera. Seperti yang dinyatakan oleh Bram Stein, "walaupun fon tempatan sesuai dengan nama fon web, kemungkinan besar fon itu bukan fon yang sama. Banyak fon web berbeza dengan versi "desktop" mereka. Teks mungkin diberikan secara berbeza, beberapa watak mungkin jatuh ke fon lain, fitur OpenType mungkin hilang sepenuhnya, atau ketinggian garis mungkin berbeda. "

Juga, apabila jenis huruf berkembang dari masa ke masa, versi yang dipasang secara tempatan mungkin sangat berbeza dengan fon web, dengan watak yang kelihatan sangat berbeza. Jadi, menurut Bram, lebih baik untuk jangan sekali-kali mencampurkan fon dan fon web yang dipasang secara tempatan dalam peraturan @ font-face. Google Font telah mengikutinya dengan melumpuhkan tempatan () pada hasil CSS untuk semua pengguna, selain permintaan Android untuk Roboto.

Tidak ada yang suka menunggu kandungannya dipaparkan. Dengan deskriptor CSS paparan fon, kita dapat mengawal tingkah laku memuat fon dan membolehkan kandungan dapat dibaca segera (dengan paparan fon: pilihan) atau hampir serta merta (dengan masa tamat 3s, selagi fon berjaya dimuat turun - dengan paparan fon: tukar). (Ia agak rumit daripada itu.)

Namun, jika anda ingin meminimumkan kesan reflows teks, kami dapat menggunakan Memuatkan fon (disokong dalam semua penyemak imbas moden). Secara khusus itu artinya untuk setiap font, kami akan membuat objek FontFace, kemudian cuba mengambil semuanya, dan kemudian menerapkannya ke halaman. Dengan cara ini, kita kumpulkan semua pengecatan semula dengan memuatkan semua fon secara tidak segerak, dan kemudian beralih dari fon pengganti ke fon web sekali sahaja. Lihat penjelasan Zach, mulai 32:15, dan coretan kod):

Untuk memulakan pengambilan fon yang sangat awal dengan Font Loading API yang digunakan, Adrian Bece mencadangkan untuk menambahkan ruang yang tidak putus di bahagian atas badan, dan menyembunyikannya secara visual dengan aria-visibility: kelas tersembunyi dan .hidden:

Ini sesuai dengan CSS yang memiliki keluarga font yang berbeda yang dinyatakan untuk keadaan pemuatan yang berlainan, dengan perubahan yang dipicu oleh Font Loading API setelah fon berjaya dimuat:

Sekiranya anda pernah tertanya-tanya mengapa di sebalik semua pengoptimuman anda, Lighthouse masih menyarankan untuk menghilangkan sumber penghalang penghalang (fon), dalam artikel yang sama Adrian Bece memberikan beberapa teknik untuk membuat Lighthouse bahagia, bersama dengan Gatsby Omni Font Loader, fon asinkron yang berfungsi memuat dan memuatkan plugin pengendalian Flash Of Unstyled Text (FOUT) untuk Gatsby.

Sekarang, ramai di antara kita mungkin menggunakan CDN atau host pihak ketiga untuk memuat fon web dari. Secara umum, adalah lebih baik untuk menghoskan sendiri semua aset statik anda jika anda boleh, jadi pertimbangkan untuk menggunakan google-webfonts-helper, cara yang mudah untuk menghoskan Google Font sendiri. Dan jika tidak mungkin, anda mungkin boleh memproksi fail Font Google melalui asal halaman.

Perlu diingat bahawa Google melakukan banyak kerja di luar kotak, jadi pelayan mungkin memerlukan sedikit tweak untuk mengelakkan kelewatan (terima kasih, Barry!)

Ini cukup penting terutama kerana sejak Chrome v86 (dilancarkan Oktober 2020), sumber silang seperti fon tidak dapat dikongsi di CDN yang sama lagi & mdash kerana cache penyemak imbas yang dipartisi. Tingkah laku ini menjadi kebiasaan di Safari selama bertahun-tahun.

Tetapi jika tidak mungkin sama sekali, ada cara untuk menuju ke Fon Google secepat mungkin dengan potongan Harry Roberts:

Strategi Harry adalah terlebih dahulu memanaskan asal fon terlebih dahulu. Kemudian kami memulakan pengambilan prioriti tinggi, tidak segerak untuk fail CSS. Selepas itu, kami memulakan pengambilan prioriti rendah, tidak segerak yang akan diterapkan ke halaman hanya setelah halaman tiba (dengan trik helaian gaya cetak). Akhirnya, jika JavaScript tidak disokong, kita kembali kepada kaedah asal.

Ah, bercakap mengenai Google Font: anda boleh cukur hingga 90% dari ukuran permintaan Google Font dengan menyatakan hanya watak yang anda perlukan dengan & amptext. Selain itu, sokongan untuk paparan fon ditambahkan baru-baru ini ke Google Font juga, jadi kami dapat menggunakannya di luar kotak.

Walau bagaimanapun, berhati-hati. Sekiranya anda menggunakan font-display: opsional, mungkin juga tidak optimum untuk menggunakan pramuat kerana akan memicu permintaan font web lebih awal (menyebabkan kesesakan rangkaian jika anda mempunyai sumber jalan kritikal lain yang perlu diambil). Gunakan prekoneksi untuk permintaan fon silang asal yang lebih cepat, tetapi berhati-hati dengan pramuat sebagai pramuat fon dari asal yang berbeza akan menimbulkan pertikaian rangkaian. Semua teknik ini diliputi dalam resipi pemuatan fon Web Zach.

Sebaliknya, mungkin adalah idea yang baik untuk memilih keluar dari fon web (atau sekurang-kurangnya rendering tahap kedua) jika pengguna telah mengaktifkan Reduce Motion dalam pilihan aksesibilitas atau memilih untuk memilih Mod Penjimat Data (lihat tajuk Save-Data), atau ketika pengguna mempunyai sambungan yang lambat (melalui Network Information API).

Kami juga boleh menggunakan pertanyaan media CSS yang lebih rendah data tidak tentukan deklarasi fon jika pengguna telah memilih mod simpanan data (ada juga kes penggunaan lain). Permintaan media pada dasarnya akan terdedah jika tajuk permintaan Save-Data dari pelanjutan HTTP Client Hint dihidupkan / dimatikan untuk membolehkan penggunaan dengan CSS. Pada masa ini hanya disokong di Chrome dan Edge di belakang bendera.

Sukatan? Untuk mengukur prestasi pemuatan fon web, pertimbangkan Semua Teks Terlihat metrik (momen ketika semua fon dimuat dan semua kandungan dipaparkan dalam fon web), Waktu ke Ital Sebenar serta Kiraan Aliran Font Web selepas membuat pertama. Jelas, semakin rendah kedua-dua metrik tersebut, semakin baik prestasinya.

Bagaimana dengan fon pemboleh ubah, anda mungkin bertanya? Penting untuk diperhatikan bahawa fon pemboleh ubah mungkin memerlukan pertimbangan prestasi yang signifikan. Mereka memberi kita ruang reka bentuk yang lebih luas untuk pilihan tipografi, tetapi ia memerlukan biaya satu permintaan bersiri yang bertentangan dengan sejumlah permintaan fail individu.

Walaupun fon pemboleh ubah secara drastik mengurangkan keseluruhan ukuran gabungan file fon, permintaan tunggal itu mungkin lambat, menyekat rendering semua kandungan di halaman. Oleh itu, subset dan pemisahan fon menjadi set watak tetap penting. Namun, dengan font berubah, kami akan mendapat satu reflow secara lalai, jadi tidak diperlukan JavaScript untuk mengecat semula kumpulan.

Sekarang, apa yang akan dibuat strategi memuatkan fon web peluru kemudian? Subset fon dan sediakannya untuk rendering 2 tahap, nyatakan dengan deskriptor paparan fon, gunakan Font Loading API untuk mengumpulkan semula dan menyimpan fon dalam cache pekerja perkhidmatan yang berterusan. Pada lawatan pertama, masukkan pramuat skrip sebelum menyekat skrip luaran. Anda boleh kembali ke Fam Face Observer Bram Stein jika perlu. Dan jika anda berminat mengukur prestasi pemuatan fon, Andreas Marschke meneroka penjejakan prestasi dengan Font API dan UserTiming API.

Akhirnya, jangan lupa sertakan rangkaian unicode untuk memecah font besar menjadi fon khusus bahasa yang lebih kecil, dan gunakan pemadan gaya-font Monica Dinculescu untuk meminimumkan pergeseran susun atur, kerana perbezaan saiz antara fallback dan fon web.

Sebagai alternatif, untuk meniru font web untuk font fallback, kita dapat menggunakan deskriptor @ font-face untuk mengatasi metrik fon (demo, diaktifkan di Chrome 87). (Perhatikan bahawa penyesuaiannya rumit dengan tumpukan fon yang rumit.)

Adakah masa depan kelihatan cerah? Dengan pengayaan font progresif, akhirnya kita mungkin dapat "hanya memuat turun bagian font yang diperlukan pada halaman tertentu, dan untuk permintaan berikutnya untuk font tersebut secara dinamis 'menambal' muat turun asal dengan set glif tambahan seperti yang diperlukan pada halaman berturut-turut pandangan ", seperti yang dijelaskan oleh Jason Pamental. Demo Transfer Tambahan sudah tersedia, dan ia sedang berjalan.

Membangunkan Pengoptimuman

  1. Sudahkah kita menentukan keutamaan kita?
    Adalah idea yang baik untuk mengetahui apa yang anda hadapi terlebih dahulu. Jalankan sebuah persediaan dari semua aset anda (JavaScript, gambar, fon, skrip pihak ketiga dan modul "mahal" di halaman, seperti karusel, infografik kompleks dan kandungan multimedia), dan pecahkan mengikut kumpulan.

Sediakan hamparan. Tentukan asas teras pengalaman untuk penyemak imbas lama (iaitu kandungan teras yang dapat diakses sepenuhnya), dipertingkatkan pengalaman untuk penyemak imbas yang berkebolehan (iaitu pengalaman penuh yang diperkaya) dan tambahan (aset yang tidak diperlukan sepenuhnya dan boleh dimuat secara malas, seperti fon web, gaya yang tidak perlu, skrip karusel, pemain video, widget media sosial, gambar besar). Bertahun-tahun yang lalu, kami menerbitkan sebuah artikel tentang "Meningkatkan Prestasi Menghancurkan Majalah", yang menerangkan pendekatan ini secara terperinci.

Semasa mengoptimumkan prestasi, kita perlu menggambarkan keutamaan kita. Muatkan pengalaman teras segera, kemudian penambahbaikan, dan kemudian tambahan.

Ideanya adalah untuk menyusun dan melayani dua kumpulan JavaScript yang berasingan: binaan "biasa", yang mempunyai transformasi Babel dan poli-isi dan hanya menyediakannya kepada penyemak imbas lama yang benar-benar memerlukannya, dan kumpulan lain (fungsi yang sama) yang tidak mempunyai transformasi atau polip.

Hasilnya, kami membantu mengurangkan penyumbatan utas utama dengan mengurangkan jumlah skrip yang perlu diproses oleh penyemak imbas. Jeremy Wagner telah menerbitkan artikel komprehensif mengenai pembezaan penyajian dan cara memasangnya di saluran pembangunan anda, dari menyiapkan Babel, hingga perubahan apa yang perlu anda buat di Webpack, serta faedah melakukan semua pekerjaan ini.

Skrip modul JavaScript asli ditangguhkan secara lalai, jadi semasa penghuraian HTML berlaku, penyemak imbas akan memuat turun modul utama.

Modul JavaScript asli ditangguhkan secara lalai. Hampir semua perkara mengenai modul JavaScript asli. (Pratonton besar)

Satu peringatan walaupun: corak modul / nomodul boleh menimbulkan keburukan pada beberapa pelanggan, jadi anda mungkin ingin mempertimbangkan jalan keluar: Pola servis pembezaan Jeremy yang kurang berisiko yang, bagaimanapun, mengabaikan pengimbas pramuat, yang boleh mempengaruhi prestasi dengan cara yang tidak dapat dijangkakan. (terima kasih, Jeremy!)

Sebenarnya, Rollup menyokong modul sebagai format output, jadi kami dapat menggabungkan kod dan menyebarkan modul dalam pengeluaran. Parcel mempunyai sokongan modul di Parcel 2. Untuk Webpack, modul-nomodule-plugin mengautomasikan penghasilan skrip modul / nomodul.

Nota: Perlu dinyatakan bahawa pengesanan ciri sahaja tidak cukup untuk membuat keputusan yang tepat mengenai muatan untuk dihantar ke penyemak imbas itu. Dengan sendirinya, kami tidak dapat menyimpulkan kemampuan peranti dari versi penyemak imbas. Sebagai contoh, telefon Android murah di negara-negara membangun kebanyakannya menggunakan Chrome dan akan memotong sawi walaupun memori dan kemampuan CPUnya terhad.

Akhirnya, dengan menggunakan Header Petunjuk Memori Pelanggan Peranti, kami dapat menyasarkan peranti kelas bawah dengan lebih dipercayai. Pada saat penulisan, pengepala hanya disokong dalam Blink (ia berlaku untuk petunjuk pelanggan secara umum). Oleh kerana Memory Device juga memiliki API JavaScript yang tersedia di Chrome, satu pilihan adalah fitur deteksi berdasarkan API, dan kembali ke corak modul / nomodul jika tidak disokong (terima kasih, Yoav!).

Pemisahan kod adalah ciri Webpack lain yang membelah pangkalan kod anda menjadi "potongan" yang dimuat berdasarkan permintaan. Tidak semua JavaScript mesti dimuat turun, dihuraikan dan disusun segera. Setelah anda menentukan titik perpecahan dalam kod anda, Webpack dapat mengurus kebergantungan dan fail yang dikeluarkan. Ini memungkinkan anda untuk menjaga muat turun awal kecil dan meminta kod sesuai permintaan ketika diminta oleh aplikasi. Alexander Kondrov mempunyai pengenalan hebat mengenai pemisahan kod dengan Webpack dan React.

Pertimbangkan untuk menggunakan preload-webpack-plugin yang mengambil laluan yang anda pecahkan kod dan kemudian meminta penyemak imbas untuk memuatkannya terlebih dahulu menggunakan & ltlink rel = "preload" & gt atau & ltlink rel = "prefetch" & gt. Arahan sebaris webpack juga memberikan sedikit kawalan terhadap pramuat / prefetch. (Perhatikan masalah keutamaan.)

Di mana untuk menentukan titik perpecahan? Dengan mengesan potongan CSS / JavaScript mana yang digunakan, dan yang tidak digunakan. Umar Hansa menerangkan bagaimana anda boleh menggunakan Liputan Kod dari Devtools untuk mencapainya.

Semasa berurusan dengan aplikasi satu halaman, kami memerlukan sedikit masa untuk menginisialisasi aplikasi sebelum dapat membuat halaman. Tetapan anda memerlukan penyelesaian khusus anda, tetapi anda dapat memperhatikan modul dan teknik untuk mempercepat masa rendering awal. Sebagai contoh, berikut adalah cara men-debug prestasi React dan menghilangkan masalah prestasi React yang biasa, dan inilah cara untuk meningkatkan prestasi di Angular. Secara umum, kebanyakan masalah prestasi berasal dari masa awal untuk boot aplikasi.

Jadi, apakah kaedah terbaik untuk membelah kod secara agresif, tetapi tidak terlalu agresif? Menurut Phil Walton, "selain pemisahan kod melalui import dinamik, [kita juga dapat] menggunakan pemecahan kod pada tahap pakej, di mana setiap modul simpul yang diimport dimasukkan ke dalam sepotong berdasarkan nama pakejnya. "Phil memberikan tutorial tentang cara membuatnya juga.

Salah satu yang menarik datang dari benang Ivan Akulov. Bayangkan bahawa anda mempunyai fungsi yang anda panggil sekali, simpan hasilnya dalam pemboleh ubah, dan kemudian jangan gunakan pemboleh ubah tersebut. Gegaran pokok akan menghilangkan pemboleh ubah, tetapi tidak fungsinya, kerana mungkin digunakan sebaliknya. Namun, jika fungsi tersebut tidak digunakan di mana saja, anda mungkin ingin menghapusnya. Untuk melakukannya, buat panggilan fungsi dengan / * # __ PURE __ * / yang disokong oleh Uglify dan Terser & mdash selesai!

Untuk membuang fungsi seperti itu apabila hasilnya tidak digunakan, buat panggilan fungsi dengan & # 47 & # 42 & # 35 & # 95 & # 95PURE & # 95 & # 95 & # 42 & # 47. Via Ivan Akulov. (Pratonton besar)

Berikut adalah beberapa alat lain yang disyorkan oleh Ivan:

    membuang kelas yang tidak digunakan, terutamanya ketika anda menggunakan Bootstrap atau Tailwind.
  • Dayakan optimization.splitChunks: 'all' dengan split-chunks-plugin. Ini akan menjadikan pakej web secara automatik membahagikan kod kumpulan kemasukan anda untuk cache yang lebih baik. . Ini akan menggerakkan runtime webpack menjadi bahagian & mdash yang terpisah dan juga akan meningkatkan cache. memuat turun fail fon, supaya anda dapat memberikannya dari pelayan anda. membolehkan anda menghasilkan pekerja perkhidmatan dengan persediaan pendahuluan untuk semua aset beg web anda. Juga, periksa Service Worker Package, panduan lengkap modul yang dapat segera digunakan. Atau gunakan preload-webpack-plugin untuk menghasilkan preload / prefetch untuk semua potongan JavaScript. mengukur kelajuan pembuatan beg web anda, memberikan pandangan mengenai langkah-langkah proses pembuatan yang paling memakan masa. memberi amaran apabila paket anda mengandungi pelbagai versi dari pakej yang sama. pada masa penyusunan.

    Bolehkah anda memuatkan JavaScript ke Pekerja Web?
    Untuk mengurangkan kesan negatif kepada Time-to-Interactive, mungkin ada baiknya melihat memuatkan JavaScript yang berat ke Worker Web.

Apabila asas kod terus berkembang, hambatan prestasi UI akan muncul, memperlahankan pengalaman pengguna. Ini kerana operasi DOM berjalan bersama dengan JavaScript anda di utas utama. Dengan pekerja web, kami dapat memindahkan operasi yang mahal ini ke proses latar belakang yang berjalan di rangkaian lain. Kes penggunaan biasa untuk pekerja web adalah mengambil data dan Aplikasi Web Progresif untuk memuat dan menyimpan beberapa data terlebih dahulu sehingga anda dapat menggunakannya nanti bila diperlukan. Dan anda boleh menggunakan Comlink untuk melancarkan komunikasi antara halaman utama dan pekerja. Masih ada kerja yang perlu dilakukan, tetapi kami sampai di sana.

Terdapat beberapa kajian kes yang menarik di sekitar pekerja web yang menunjukkan pendekatan yang berbeza mengenai kerangka kerja bergerak dan logik aplikasi kepada pekerja web. Kesimpulannya: secara umum, masih ada beberapa cabaran, tetapi sudah ada beberapa kes penggunaan yang baik (terima kasih, Ivan Akulov!).

Bermula dari Chrome 80, a mod baru untuk pekerja web dengan kelebihan prestasi modul JavaScript telah dihantar, disebut pekerja modul. Kami dapat mengubah pemuatan dan pelaksanaan skrip agar sesuai dengan jenis skrip = "modul", dan kami juga dapat menggunakan import dinamis untuk kod pemuatan malas tanpa menyekat pelaksanaan pekerja.

Bagaimana untuk memulakan? Berikut adalah beberapa sumber yang perlu dikaji:

  • Surma telah menerbitkan panduan yang sangat baik mengenai cara menjalankan JavaScript dari utas utama penyemak imbas dan juga Bilakah anda harus menggunakan Web Workers?
  • Juga, periksa ceramah Surma mengenai seni bina utamanya. oleh Shubhie Panicker dan Jason Miller memberikan pandangan terperinci mengenai cara menggunakan pekerja web, dan kapan menjauhinya. menyoroti corak berguna untuk bekerja dengan Pekerja Web, cara berkesan untuk berkomunikasi antara pekerja, menangani pemprosesan data yang rumit dari utas utama, dan menguji dan menyahpepijatnya. membolehkan anda memindahkan modul ke Web Worker, secara automatik menggambarkan fungsi yang dieksport sebagai proksi tak segerak.
  • Sekiranya anda menggunakan Webpack, anda boleh menggunakan loader pekerja. Sebagai alternatif, anda juga boleh menggunakan pekerja-plugin.

Perhatikan bahawa Pekerja Web tidak mempunyai akses ke DOM kerana DOM tidak "selamatkan utas", dan kod yang mereka laksanakan harus terkandung dalam fail yang terpisah.

Sudah tentu, WebAssembly tidak boleh menggantikan JavaScript, tetapi dapat melengkapkannya sekiranya anda melihat babi CPU. Untuk kebanyakan aplikasi web, JavaScript lebih sesuai, dan WebAss Assembly paling sesuai digunakan aplikasi web yang berintensifkan komputasi, seperti permainan.

Sekiranya anda ingin mengetahui lebih lanjut mengenai WebAss Assembly:

  • Lin Clark telah menulis siri lengkap untuk WebAssembly dan Milica Mihajlija memberikan gambaran umum mengenai cara menjalankan kod asli dalam penyemak imbas, mengapa anda mungkin mahu melakukan itu, dan apa artinya semua itu untuk JavaScript dan masa depan pembangunan web. menyoroti kajian kes bagaimana pengiraan JavaScript yang lambat digantikan dengan WebAssembly yang disusun dan membawa peningkatan prestasi yang ketara.
  • Patrick Hamann telah bercakap mengenai peranan WebAssembly yang semakin meningkat, dan dia membongkar beberapa mitos mengenai WebAssembly, meneroka cabarannya dan kita dapat menggunakannya secara praktikal dalam aplikasi hari ini.
  • Google Codelabs memberikan Pengenalan WebAssembly, kursus 60 minit di mana anda akan belajar bagaimana mengambil kod asli — dalam C dan menyusunnya ke WebAssembly, dan kemudian memanggilnya terus dari JavaScript.
  • Alex Danilo telah menjelaskan WebAss Assembly dan bagaimana ia berfungsi pada perbincangan Google I / O-nya. Selain itu, Benedek Gagyi berkongsi kajian kes praktikal di WebAssembly, khususnya bagaimana pasukan menggunakannya sebagai format output untuk pangkalan kode C ++ mereka ke iOS, Android dan laman web.

Masih tidak pasti mengenai kapan menggunakan Web Workers, Web Assembly, stream, atau mungkin WebGL JavaScript API untuk mengakses GPU? Mempercepat JavaScript adalah panduan ringkas tetapi berguna yang menjelaskan kapan harus menggunakan apa, dan mengapa & mdash juga dengan carta alir yang berguna dan banyak sumber berguna.

    Adakah kami memberikan kod warisan hanya untuk penyemak imbas lama?
    Dengan ES2017 yang disokong dengan baik dalam penyemak imbas moden, kita dapat menggunakan babelEsmPlugin untuk hanya memindahkan fitur ES2017 + yang tidak disokong oleh penyemak imbas moden yang anda sasarkan.

Houssein Djirdeh dan Jason Miller baru-baru ini telah menerbitkan panduan komprehensif mengenai cara melakukan transpilasi dan melayani JavaScript moden dan lama, dengan memperincikannya agar dapat berfungsi dengan Webpack and Rollup, dan alat yang diperlukan. Anda juga dapat menganggarkan berapa banyak JavaScript yang dapat anda keluarkan di laman web atau kumpulan aplikasi anda.

Modul JavaScript disokong di semua penyemak imbas utama, jadi gunakan skrip tipe = "modul" untuk membiarkan penyemak imbas dengan modul ES menyokong memuatkan fail, sementara penyemak imbas yang lebih lama dapat memuat binaan lama dengan nomodul skrip.

Hari-hari ini kita dapat menulis JavaScript berasaskan modul yang berjalan secara asli di penyemak imbas, tanpa transpilers atau bundler. & ltlink rel = "modulepreload" & gt header menyediakan cara untuk memulakan pemuatan awal (dan keutamaan tinggi) skrip modul. Pada dasarnya, ini adalah cara yang baik untuk membantu memaksimumkan penggunaan lebar jalur, dengan memberitahu penyemak imbas tentang apa yang perlu diambilnya agar tidak terjebak dengan apa-apa yang perlu dilakukan semasa perjalanan bulat yang panjang itu. Juga, Jake Archibald telah menerbitkan artikel terperinci dengan gotchas dan perkara yang perlu diingat dengan Modul ES yang patut dibaca.

Pertama, tetapkan metrik yang mengesan jika nisbah panggilan kod lama tetap berterusan atau turun, tidak naik. Secara terbuka tidak menggalakkan pasukan menggunakan perpustakaan dan pastikan bahawa CI anda memberi amaran kepada pembangun jika ia digunakan dalam permintaan tarik. polyfill dapat membantu peralihan dari kod lama ke pangkalan data yang ditulis semula yang menggunakan ciri penyemak imbas standard.

Anda boleh menggunakan Puppeteer untuk mengumpulkan liputan kod secara program. Chrome juga membolehkan anda mengeksport hasil liputan kod. Seperti yang dinyatakan oleh Andy Davies, anda mungkin ingin mengumpulkan liputan kod untuk penyemak imbas moden dan lama.

Terdapat banyak kes penggunaan dan alat lain untuk Boneka yang mungkin memerlukan pendedahan yang lebih sedikit:

    , seperti, misalnya, perbezaan visual automatik atau pemantauan CSS yang tidak digunakan dengan setiap binaan,,,
  • Anda juga boleh merakam ujian tepat di DevTools, oleh Nitay Neeman, dengan contoh dan kes penggunaan.

Tambahan pula, purgecss, UnCSS dan Helium dapat membantu anda membuang gaya yang tidak digunakan dari CSS. Dan jika anda tidak pasti sama ada sekeping kod yang mencurigakan digunakan di suatu tempat, anda boleh mengikuti nasihat Harry Roberts: buat GIF telus 1 & kali1px untuk kelas tertentu dan masukkan ke dalam direktori / orang mati, mis. /assets/img/dead/comments.gif.

Selepas itu, anda menetapkan gambar tertentu sebagai latar belakang pada pemilih yang sesuai di CSS anda, duduk dan tunggu beberapa bulan jika fail tersebut akan muncul di log anda. Sekiranya tidak ada entri, tidak ada yang memberikan komponen warisan tersebut di skrin mereka: anda mungkin boleh meneruskan dan menghapusnya.

Untuk Saya-suka berpetualang-partemen, anda bahkan dapat mengautomasikan pengumpulan pada CSS yang tidak digunakan melalui satu set halaman dengan memantau DevTools menggunakan DevTools.

Periksa dan semak semula polibil yang anda hantar ke penyemak imbas lama dan penyemak imbas moden, dan lebih strategik mengenainya. Lihatlah polyfill.io yang merupakan perkhidmatan yang menerima permintaan untuk sekumpulan ciri penyemak imbas dan hanya mengembalikan polifil yang diperlukan oleh penyemak imbas yang meminta.

Tambah pengauditan bundle ke dalam aliran kerja biasa anda juga. Mungkin ada beberapa alternatif ringan untuk perpustakaan berat yang telah anda tambahkan bertahun-tahun yang lalu, mis. Moment.js (sekarang dihentikan) boleh diganti dengan:

    , dengan API dan corak Moment.js yang biasa, atau.
  • Anda juga boleh menggunakan Skypack Discover yang menggabungkan cadangan pakej yang dikaji semula oleh manusia dengan carian yang berfokus pada kualiti.

Penyelidikan Benedikt Rötsch menunjukkan bahawa peralihan dari Moment.js ke date-fns dapat mencukur sekitar 300 ms untuk cat Pertama pada 3G dan telefon bimbit kelas atas.

Untuk pengauditan kumpulan, Bundlephobia dapat membantu mencari kos untuk menambahkan pakej npm ke kumpulan anda. size-limit meluaskan pemeriksaan ukuran bundle asas dengan perincian mengenai masa pelaksanaan JavaScript. Anda juga boleh mengintegrasikan kos ini dengan Audit Kustom Lighthouse. Ini juga berlaku untuk kerangka kerja. Dengan melepaskan atau memangkas Penyesuai Vue MDC (Komponen Bahan untuk Vue), gaya turun dari 194KB menjadi 10KB.

Terdapat banyak alat lebih lanjut untuk membantu anda membuat keputusan yang tepat mengenai kesan kebergantungan anda dan alternatif yang boleh dilaksanakan:

Sebagai alternatif untuk menghantar keseluruhan kerangka kerja, anda dapat memotong kerangka kerja dan menyusunnya menjadi kumpulan JavaScript mentah itu tidak memerlukan kod tambahan. Svelte melakukannya, dan begitu juga plugin Rawact Babel yang mengubah komponen React.js ke operasi DOM asli pada waktu build. Kenapa? Seperti yang dijelaskan oleh penyelenggara, "react-dom merangkumi kod untuk setiap kemungkinan komponen / HTMLElement yang dapat diberikan, termasuk kod untuk penambahan, penjadwalan, penanganan acara, dll. Tetapi ada aplikasi yang tidak memerlukan semua fitur ini (pada awalnya) muat halaman). Untuk aplikasi seperti itu, mungkin masuk akal untuk menggunakan operasi DOM asli untuk membina antara muka pengguna interaktif. "

Dalam artikel "Kes penghidratan separa (dengan Next dan Preact)", Lukas Bombach menjelaskan bagaimana pasukan di belakang Welt.de, salah satu saluran berita di Jerman, telah mencapai prestasi yang lebih baik dengan hidrasi separa. Anda juga boleh melihat repo GitHub berprestasi super seterusnya dengan penjelasan dan coretan kod.

Anda juga boleh mempertimbangkan pilihan alternatif:

Jason Miller telah menerbitkan demo kerja mengenai bagaimana penghidratan progresif dapat dilaksanakan dengan React, jadi anda dapat menggunakannya segera: demo 1, demo 2, demo 3 (juga tersedia di GitHub). Selain itu, anda boleh melihat perpustakaan komponen reaksi-prerender.

Hasilnya, inilah strategi SPA yang disarankan oleh Jeremy untuk digunakan untuk rangka kerja React (tetapi tidak boleh berubah dengan ketara untuk kerangka kerja lain):

  • Komponen refactor stateful sebagai komponen tanpa kerakyatan bila boleh.
  • Prerender komponen tanpa status apabila mungkin untuk meminimumkan masa tindak balas pelayan. Hanya berikan pada pelayan.
  • Untuk komponen bernegara dengan interaktiviti sederhana, pertimbangkan untuk memprendering atau memberikan pelayan komponen itu, dan ganti interaktivasinya dengan pendengar acara bebas kerangka.
  • Sekiranya anda mesti menghidrat komponen yang bernas pada pelanggan, gunakan penghidratan malas semasa penglihatan atau interaksi.
  • Untuk komponen yang terhidrat dengan malas, jadwalkan penghidratannya semasa utas utas utama dengan requestIdleCallback.

Terdapat beberapa strategi lain yang mungkin ingin anda jalani atau tinjau:

  • Pertimbangan prestasi untuk aplikasi CSS-in-JS di React dengan memuatkan polyfill hanya apabila perlu, menggunakan import dinamik dan hidrasi malas. , siri 7 bahagian yang panjang untuk meningkatkan cabaran antara muka pengguna dengan React, dan Cara profil aplikasi React. , ceramah hebat oleh Alex Holachek, bersama slaid dan repo GitHub (terima kasih atas petua, Addy!). adalah repo GitHub yang hebat dengan banyak pengoptimuman berkaitan prestasi khusus Webpack yang berguna. Diselenggarakan oleh Ivan Akulov. , panduan oleh Ivan Akulov tentang cara meningkatkan prestasi di React, dengan banyak petunjuk berguna untuk menjadikan aplikasi sekitar 30% lebih cepat. (eksperimental) memungkinkan untuk memuat semula panas yang mengekalkan keadaan komponen, dan menyokong komponen cangkuk dan fungsi.
  • Berhati-hatilah untuk komponen React Server ukuran sifar-bundle, jenis komponen baru yang dicadangkan yang tidak akan memberi kesan pada saiz bundle. Projek ini sedang dalam pembangunan, tetapi sebarang maklum balas dari masyarakat sangat dihargai (penjelasan hebat oleh Sophie Alpert).

Oleh itu, setiap elemen interaktif menerima skor kebarangkalian untuk keterlibatan, dan berdasarkan skor itu, skrip sisi pelanggan memutuskan untuk mengambil sumber daya lebih awal. Anda boleh mengintegrasikan teknik ini ke aplikasi Next.js, Angular and React, dan ada plugin Webpack yang mengotomatiskan proses penyediaan juga.

Jelas sekali, anda mungkin mendorong penyemak imbas untuk menggunakan data yang tidak diperlukan dan mengambil halaman yang tidak diingini, jadi idea yang baik adalah cukup konservatif dalam jumlah permintaan yang diambil sebelumnya. Contoh penggunaan yang baik adalah mengambil skrip pengesahan yang diperlukan dalam proses pembayaran, atau prefetch spekulatif ketika ajakan bertindak yang kritikal masuk ke ruang pandang.

Perlukan sesuatu yang kurang canggih? DNStradamus melakukan pra-pengambilan DNS untuk pautan keluar seperti yang muncul di ruang pandang. Quicklink, InstantClick dan Instant.page adalah perpustakaan kecil yang pratonton pautan secara automatik di ruang pandang semasa waktu senggang dalam usaha untuk menjadikan navigasi halaman seterusnya dimuat lebih cepat. Pautan Pantas memungkinkan untuk mengambil semula rute React Router dan Javascript ditambah dengan pertimbangan data, jadi tidak mengambil pratonton pada 2G atau jika Penghemat Data dihidupkan. Begitu juga Instant.page jika mod ditetapkan untuk digunakan prefetching viewport (yang merupakan lalai).

Sekiranya anda ingin mempelajari sains pra-prediksi secara terperinci, Divya Tagtachian mempunyai ceramah hebat mengenai The Art of Predictive Prefetch, merangkumi semua pilihan dari awal hingga akhir.

Penstriman skrip membolehkan skrip async atau defer diuraikan pada utas latar belakang yang terpisah setelah muat turun dimulakan, oleh itu dalam beberapa kes meningkatkan masa pemuatan halaman hingga 10%. Secara praktikal, gunakan & ltscript defer & gt di & lthead & gt, supaya penyemak imbas dapat menemui sumbernya lebih awal dan kemudian menghuraikannya di latar latar.

Kaveat: Opera Mini tidak menyokong penangguhan skrip, jadi jika anda membangun untuk India atau Afrika, menangguhkan akan diabaikan, mengakibatkan rendering menyekat sehingga skrip telah dinilai (terima kasih Jeremy!).

Anda juga boleh memasukkan cache kod V8 juga, dengan memisahkan perpustakaan dari kod yang menggunakannya, atau sebaliknya, menggabungkan perpustakaan dan penggunaannya ke dalam satu skrip, kumpulkan fail kecil bersama dan mengelakkan skrip sebaris. Atau mungkin juga menggunakan cache v8-compile.

Ketika datang ke JavaScript secara umum, ada juga beberapa praktik yang perlu diingat:

    , koleksi besar corak untuk menulis kod yang boleh dibaca, boleh digunakan semula, dan tidak dapat dilupakan.
  • Anda boleh Memampatkan data dari JavaScript dengan CompressionStream API, mis. untuk gzip sebelum memuat naik data (Chrome 80+). dan Memperbaiki kebocoran memori dalam aplikasi web adalah panduan terperinci mengenai cara mencari dan memperbaiki kebocoran memori JavaScript yang rumit. Selain itu, anda boleh menggunakan queryObjects (SomeConstructor) dari DevTools Console (terima kasih, Mathias!). , dan menghindarinya dapat membantu mengurangkan ukuran bundle dengan ketara.
  • Kami dapat meningkatkan prestasi tatal dengan pendengar peristiwa pasif dengan menetapkan bendera dalam parameter pilihan. Oleh itu penyemak imbas boleh menatal halaman dengan segera, dan bukannya setelah pendengar selesai. (melalui Kayce Basques).
  • Sekiranya anda mempunyai pendengar tatal atau sentuh *, pasif pasif: true to addEventListener. Ini memberitahu penyemak imbas bahawa anda tidak merancang untuk memanggil event.preventDefault () ke dalam, sehingga dapat mengoptimumkan cara menangani peristiwa ini. (melalui Ivan Akulov)
  • Kami dapat menjadwalkan penjadwalan JavaScript yang lebih baik dengan isInputPending (), API baru yang berusaha untuk merapatkan jurang antara pemuatan dan responsif dengan konsep gangguan untuk input pengguna di web, dan memungkinkan JavaScript dapat memeriksa input tanpa menyerah pada penyemak imbas.
  • Anda juga dapat membuang pendengar acara secara automatik setelah dijalankan.
  • Warp yang baru dilancarkan Firefox, kemas kini penting untuk SpiderMonkey (dihantar dalam Firefox 83), Interpreter Baseline dan terdapat juga beberapa Strategi Pengoptimuman JIT yang tersedia.

Atas alasan keselamatan, untuk mengelakkan cap jari, penyemak imbas telah melaksanakan cache partitioned yang diperkenalkan di Safari pada tahun 2013, dan di Chrome tahun lalu. Oleh itu, jika dua laman web menunjukkan URL sumber pihak ketiga yang sama, kodanya adalah dimuat turun sekali setiap domain, dan cache "kotak pasir" ke domain tersebut kerana implikasi privasi (terima kasih, David Calhoun!). Oleh itu, menggunakan CDN awam tidak akan menghasilkan prestasi yang lebih baik secara automatik.

Pada masa ini 57% daripada semua masa pengecualian kod JavaScript dihabiskan untuk kod pihak ketiga. Laman web mudah alih yang diakses 12 domain pihak ketiga, dengan rata-rata 37 permintaan berbeza (atau kira-kira 3 permintaan dibuat untuk setiap pihak ketiga).

Tambahan pula, pihak ketiga ini sering mengundang skrip pihak keempat untuk bergabung, berakhir dengan kemacetan prestasi yang besar, kadang-kadang sampai ke skrip pesta keempat di halaman. Oleh itu, dengan kerap mengaudit kebergantungan anda dan pengurus tag boleh membawa kejutan yang mahal.

Masalah lain, seperti yang dijelaskan oleh Yoav Weiss dalam ceramahnya mengenai skrip pihak ketiga, adalah bahawa dalam banyak kes skrip ini memuat turun sumber daya yang dinamik. Sumber berubah di antara pemuatan halaman, jadi kami tidak semestinya tahu dari mana sumber akan dimuat turun dan sumber mana.

Menangguhkan, seperti yang ditunjukkan di atas, mungkin hanya permulaan walaupun skrip pihak ketiga juga mencuri lebar jalur dan waktu CPU dari aplikasi anda. Kami mungkin sedikit lebih agresif dan memuatkannya hanya apabila aplikasi kami telah dimulakan.

Dalam catatan hebat mengenai "Mengurangkan Kesan Kelajuan Tapak dari Tag Pihak Ketiga", Andy Davies meneroka strategi meminimumkan jejak pihak ketiga & mdash daripada mengenal pasti kos mereka untuk mengurangkan kesannya.

Menurut Andy, ada dua cara tag mempengaruhi kelajuan laman web & mdash yang mereka persaingan lebar jalur rangkaian dan masa pemprosesan pada peranti pelawat, dan bergantung pada cara pelaksanaannya, mereka juga dapat menunda penghuraian HTML. Jadi langkah pertama adalah mengenal pasti kesan yang dimiliki oleh pihak ketiga, dengan menguji laman web ini dengan dan tanpa skrip menggunakan WebPageTest. Dengan Peta Permintaan Simon Hearne, kami juga dapat memvisualisasikan pihak ketiga di halaman bersama dengan perincian mengenai ukuran, jenis dan apa yang memicu pemuatan mereka.

Sebaiknya hos sendiri dan gunakan nama hos tunggal, tetapi juga gunakan peta permintaan untuk mendedahkan panggilan pihak keempat dan mengesan kapan skrip berubah. Anda boleh menggunakan pendekatan Harry Roberts untuk mengaudit pihak ketiga dan menghasilkan hamparan seperti ini (juga periksa aliran kerja pengauditan Harry).

Selepas itu, kita dapat meneroka alternatif ringan untuk skrip yang ada dan perlahan-lahan ganti pendua dan penyebab utama dengan pilihan yang lebih ringan. Mungkin beberapa skrip boleh diganti dengan piksel penjejakan penggantian dan bukannya tag penuh.

Memuatkan YouTube dengan fasad, mis. lite-youtube-embed yang jauh lebih kecil daripada pemain YouTube sebenar. (Sumber gambar) (Pratonton besar)

Sekiranya tidak dapat dilaksanakan, sekurang-kurangnya kita dapat memuatkan sumber daya pihak ketiga dengan fasad, iaitu elemen statik yang kelihatan serupa dengan pihak ketiga yang tersemat sebenarnya, tetapi tidak berfungsi dan oleh itu lebih kurang mengenakan cukai pada pemuatan halaman. Caranya, adalah dengan memuatkan sematan sebenar hanya pada interaksi.

Salah satu sebab mengapa pengurus tag biasanya berukuran besar adalah kerana banyak eksperimen serentak yang dijalankan pada masa yang sama, bersama dengan banyak segmen pengguna, URL halaman, laman web dll. Oleh itu, menurut Andy, mengurangkannya dapat mengurangkan kedua-duanya ukuran muat turun dan masa yang diperlukan untuk melaksanakan skrip di penyemak imbas.

Dan kemudian terdapat coretan anti kerlipan. Pihak ketiga seperti Google Optimize, Visual Web Optimizer (VWO) dan lain-lain sebulat suara menggunakannya. Coretan ini biasanya disuntik bersama dengan berlari Ujian A / B: untuk mengelakkan kerlipan antara senario ujian yang berbeza, mereka menyembunyikan isi dokumen dengan kelegapan: 0, kemudian menambahkan fungsi yang dipanggil setelah beberapa saat untuk mengembalikan kelegapan. Ini sering mengakibatkan kelewatan rendering besar-besaran kerana kos pelaksanaan sisi pelanggan yang besar.

Dengan pengujian A / B digunakan, pelanggan akan sering melihat kelipan seperti ini. Coretan Anti-Flicker menghalangnya, tetapi juga prestasi dari segi kos. Melalui Andy Davies. (Pratonton besar)

Oleh itu, perhatikan seberapa kerap masa tamat anti-kerlipan dicetuskan dan kurangkan masa tamat. Blok lalai memaparkan halaman anda sehingga 4 detik yang akan merosakkan kadar penukaran. Menurut Tim Kadlec, "Rakan tidak membiarkan rakan melakukan ujian A / B di sisi pelanggan". Ujian A / B sisi pelayan pada CDN (mis. Edge Computing, atau Edge Slice Rerendering) selalu menjadi pilihan yang lebih berprestasi.

Sekiranya anda harus berurusan dengan yang maha kuasa Pengurus Teg Google, Barry Pollard memberikan beberapa panduan untuk memuatkan kesan Pengurus Tag Google. Juga, Christian Schaefer meneroka strategi memuat iklan.

Awas: beberapa widget pihak ketiga menyembunyikan diri dari alat audit, jadi mungkin lebih sukar untuk dilihat dan diukur. Untuk menguji tekanan pihak ketiga, periksa ringkasan dari bawah ke atas di halaman profil Prestasi di DevTools, uji apa yang berlaku jika permintaan disekat atau sudah tamat & mdash untuk yang terakhir, anda boleh menggunakan pelayan Blackhole WebPageTest blackhole.webpagetest.org yang anda dapat menunjukkan domain tertentu ke dalam fail hos anda.

Apa pilihan yang kita ada? Pertimbangkan menggunakan pekerja perkhidmatan dengan menjalankan muat turun sumber dengan masa tamat dan jika sumber tersebut belum memberi respons dalam jangka masa tertentu, kembalikan respons kosong untuk memberitahu penyemak imbas untuk meneruskan dengan menguraikan halaman. Anda juga boleh log atau menyekat permintaan pihak ketiga yang tidak berjaya atau tidak memenuhi kriteria tertentu. Sekiranya anda boleh, muatkan skrip pihak ketiga dari pelayan anda sendiri dan bukannya dari pelayan vendor dan malas memuatkannya.

Pilihan lain adalah dengan mewujudkan a Dasar Keselamatan Kandungan (CSP) untuk menyekat kesan skrip pihak ketiga, mis. tidak membenarkan memuat turun audio atau video. Pilihan terbaik adalah memasukkan skrip melalui & ltiframe & gt supaya skrip berjalan dalam konteks iframe dan oleh itu tidak mempunyai akses ke DOM halaman, dan tidak dapat menjalankan kod sewenang-wenang di domain anda. Iframe dapat dikekang lebih lanjut menggunakan atribut kotak pasir, jadi Anda dapat menonaktifkan fungsi apa pun yang mungkin dilakukan oleh iframe, mis. cegah skrip berjalan, cegah makluman, penyerahan borang, pemalam, akses ke navigasi teratas, dan sebagainya.

Anda juga dapat mengawasi pihak ketiga melalui penyempurnaan prestasi dalam penyemak imbas dengan kebijakan fitur, fitur yang agak baru yang memungkinkan Anda memilih atau tidak menggunakan ciri penyemak imbas tertentu di laman web anda. (Sebagai sidenote, ini juga dapat digunakan untuk menghindari gambar yang terlalu besar dan tidak dioptimalkan, media yang tidak berukuran, skrip penyegerakan dan lain-lain). Kini disokong dalam penyemak imbas berasaskan Blink.

Oleh kerana banyak skrip pihak ketiga berjalan dalam iframe, anda mungkin perlu berhati-hati dalam membataskan elaunnya. Iframe kotak pasir selalu merupakan idea yang baik, dan setiap batasan dapat dicabut melalui sejumlah nilai yang dibenarkan pada atribut kotak pasir.Kotak pasir disokong hampir di mana-mana, jadi hadkan skrip pihak ketiga dengan minimum apa yang harus mereka lakukan.

ThirdPartyWeb.Today mengelompokkan semua skrip pihak ketiga mengikut kategori (analitik, sosial, pengiklanan, hosting, pengurus tag dll) dan memvisualisasikan berapa lama skrip entiti diperlukan (rata-rata). (Pratonton besar)

Pertimbangkan untuk menggunakan Pemerhati Persimpangan yang akan membolehkan iklan yang akan dilancarkan semasa masih menghantar acara atau mendapatkan maklumat yang mereka perlukan dari DOM (mis. keterlihatan iklan). Berhati-hati dengan dasar baru seperti Dasar ciri, had ukuran sumber daya dan keutamaan CPU / Lebar jalur untuk menghadkan ciri dan skrip web berbahaya yang akan melambatkan penyemak imbas, mis. skrip segerak, permintaan XHR segerak, dokumen.menulis dan pelaksanaan yang ketinggalan zaman.

Akhirnya, semasa memilih perkhidmatan pihak ketiga, pertimbangkan untuk memeriksa ThirdPartyWeb Patrick Hulce. Hari ini, perkhidmatan yang mengumpulkan semua skrip pihak ketiga mengikut kategori (analitik, sosial, periklanan, hosting, pengurus tag dll) dan menggambarkan berapa lama skrip entiti tersebut dilaksanakan (rata-rata). Jelas sekali, entiti terbesar mempunyai kesan prestasi terburuk ke halaman yang mereka buka. Hanya dengan mengecilkan halaman, anda akan mendapat idea mengenai jejak prestasi yang semestinya anda harapkan.

Ah, dan jangan lupakan suspek yang biasa: sebagai ganti widget pihak ketiga untuk berkongsi, kami boleh menggunakan butang perkongsian sosial statik (seperti oleh SSBG) dan pautan statik ke peta interaktif dan bukannya peta interaktif.

Secara umum, sumber daya harus disimpan dalam cache baik untuk waktu yang sangat singkat (jika mereka mungkin akan berubah) atau selama-lamanya (jika ia statik) & mdash anda boleh menukar versi mereka dalam URL apabila diperlukan. Anda boleh menyebutnya strategi Cache-Forever, di mana kita dapat menyampaikan tajuk Cache-Control dan Expires ke penyemak imbas untuk membenarkan aset habis masa dalam setahun. Oleh itu, penyemak imbas tidak akan membuat permintaan untuk aset tersebut jika memilikinya dalam cache.

Pengecualian adalah tindak balas API (mis. / Api / pengguna). Untuk mengelakkan cache, kita dapat menggunakan peribadi, tanpa kedai, dan bukan max-age = 0, tanpa kedai:

Gunakan kawalan Cache: tidak berubah untuk mengelakkan pengesahan semula jangka hayat cache eksplisit yang panjang ketika pengguna menekan butang tambah nilai. Untuk kes tambah nilai, tidak berubah menyimpan permintaan HTTP dan meningkatkan masa muat HTML dinamik kerana mereka tidak lagi bersaing dengan banyak 304 respons.

Contoh tipikal di mana kita ingin menggunakan tidak berubah adalah aset CSS / JavaScript dengan hash dalam namanya. Bagi mereka, kami mungkin mahu menyimpan cache selama mungkin, dan memastikan mereka tidak dapat disahkan semula:

Menurut penyelidikan Colin Bendell, tidak berubah mengurangkan 304 pengalihan sekitar 50% kerana walaupun dengan usia maksimum, pelanggan masih mengesahkan semula dan menyekat semasa menyegarkan semula. Ia disokong di Firefox, Edge dan Safari dan Chrome masih membahaskan masalah tersebut.

Menurut Web Almanac, "penggunaannya telah meningkat menjadi 3.5%, dan digunakan secara meluas dalam respons pihak ketiga Facebook dan Google."

Cache-Control: Immutable mengurangkan 304s sekitar 50%, menurut penyelidikan Colin Bendell di Cloudinary. (Pratonton besar)

Adakah anda masih ingat yang baik ol 'basi-sementara-mengesahkan semula? Apabila kita menentukan masa cache dengan tajuk respons Cache-Control (mis. Cache-Control: max-age = 604800), setelah usia maksimum berakhir, penyemak imbas akan mengambil semula kandungan yang diminta, menyebabkan halaman dimuat lebih lambat. Kelambatan ini dapat dielakkan dengan basi-sementara-mengesahkan semula pada dasarnya menentukan jangka masa tambahan di mana cache dapat menggunakan aset basi selagi ia mengesahkannya semula tidak segerak di latar belakang. Oleh itu, ia "menyembunyikan" kependaman (baik dalam rangkaian dan pelayan) dari pelanggan.

Pada bulan Jun & ndashJulai 2019, Chrome dan Firefox melancarkan sokongan stale-while-revalidate dalam HTTP Cache-Control header, oleh itu, ia harus meningkatkan latensi pemuatan halaman berikutnya kerana aset basi tidak lagi berada di jalan kritikal. Hasil: sifar RTT untuk paparan berulang.

Berhati-hatilah dengan tajuk yang berbeza-beza, terutama yang berkaitan dengan CDN, dan awasi Varian Perwakilan HTTP yang membantu mengelakkan perjalanan pergi balik tambahan untuk pengesahan setiap kali permintaan baru sedikit berbeza (tetapi tidak ketara) dari permintaan sebelumnya (terima kasih, Guy dan Mark!).

Juga, periksa semula bahawa anda tidak menghantar header yang tidak diperlukan (contohnya x-powered-by, pragma, x-ua-kompatibel, expired, X-XSS-Protection dan lain-lain) dan bahawa anda menyertakan header keselamatan dan prestasi yang berguna (seperti seperti Content-Security-Policy, X-Content-Type-Options dan lain-lain). Akhirnya, perlu diingat kos prestasi permintaan CORS dalam aplikasi satu halaman.

Nota: Kami sering menganggap bahawa aset yang disimpan dalam cache diambil dengan serta-merta, tetapi penyelidikan menunjukkan bahawa mengambil objek dari cache dapat memakan waktu ratusan milisaat. Sebenarnya, menurut Simon Hearne, "kadangkala rangkaian mungkin lebih cepat daripada cache, dan mengambil aset dari cache boleh mahal dengan sebilangan besar aset yang di-cache (bukan ukuran fail) dan peranti pengguna. Contohnya: pengambilan cache rata-rata Chrome OS berganda dari

50ms dengan 5 sumber cache hingga

Selain itu, kami sering menganggap bahawa ukuran bundel bukanlah masalah besar dan pengguna akan memuat turunnya sekali dan kemudian menggunakan versi cache. Pada masa yang sama, dengan CI / CD kami mendorong kod ke pengeluaran berkali-kali sehari, cache tidak sah setiap kali, jadi bersikap strategik mengenai masalah cache.

Untuk cache, terdapat banyak sumber yang patut dibaca:

    , menyelami semua perkara yang berkaitan dengan Harry Roberts. , oleh Jake Archibald, oleh Ilya Grigorik, oleh Jeff Posnick. oleh Lydia Hallie adalah penjelasan hebat mengenai CORS, bagaimana ia berfungsi dan bagaimana mengerti.
  • Bercakap di CORS, berikut adalah sedikit peringatan mengenai Dasar Asal Sama oleh Eric Portis.

Pengoptimuman Penghantaran

  1. Adakah kita menggunakan penangguhan untuk memuat JavaScript kritikal secara serentak?
    Apabila pengguna meminta halaman, penyemak imbas mengambil HTML dan membina DOM, kemudian mengambil CSS dan membina CSSOM, dan kemudian menghasilkan pohon rendering dengan mencocokkan DOM dan CSSOM. Sekiranya ada JavaScript yang perlu diselesaikan, penyemak imbasnya tidak akan mula membuat halaman sehingga ia dapat diselesaikan, sehingga menunda rendering. Sebagai pembangun, kita harus secara jelas memberitahu penyemak imbas untuk tidak menunggu dan mula membuat halaman. Cara untuk melakukan ini untuk skrip adalah dengan atribut penangguhan dan asinkron dalam HTML.

Dalam praktiknya, ternyata lebih baik menggunakan penangguhan dan bukannya penyegerakan. Ah, apa itu beza lagi? Menurut Steve Souders, setelah skrip asinkron tiba, skrip tersebut akan segera dilaksanakan & mdash sebaik sahaja skrip tersebut siap. Sekiranya ia berlaku dengan sangat pantas, misalnya ketika skrip sudah ada dalam cache, ia sebenarnya dapat menyekat penghurai HTML. Dengan penangguhan, penyemak imbas tidak menjalankan skrip sehingga HTML dihuraikan. Oleh itu, melainkan jika anda memerlukan JavaScript untuk dilaksanakan sebelum mula membuat, lebih baik menggunakan penangguhan. Juga, banyak fail async akan dijalankan dalam urutan yang tidak deterministik.

Perlu diingat bahawa terdapat beberapa kesalahpahaman mengenai async dan defer. Yang paling penting, async tidak bermaksud bahawa kod akan dijalankan setiap kali skrip siap, ia bermaksud akan berjalan setiap kali skrip siap dan semua kerja penyegerakan sebelumnya dilakukan. Dalam kata-kata Harry Roberts, "Jika anda meletakkan skrip asinkron setelah skrip penyegerakan, skrip asinkron anda hanya secepat skrip penyegerakan paling lambat anda."

Juga, tidak digalakkan menggunakan kedua-dua async dan penangguhan. Penyemak imbas moden menyokong kedua-duanya, tetapi apabila kedua-dua atribut digunakan, async akan selalu menang.

Sekiranya anda ingin mengetahui lebih terperinci, Milica Mihajlija telah menulis panduan yang sangat terperinci mengenai Membangun DOM dengan lebih cepat, dengan melihat butiran penghuraian, penyinkronan dan penangguhan spekulatif.

Ambang batas itu bergantung pada beberapa perkara, dari jenis sumber gambar yang diambil hingga jenis sambungan yang berkesan. Tetapi percubaan yang dilakukan menggunakan Chrome di Android menunjukkan bahawa pada 4G, 97.5% gambar di bawah lipatan yang dimuatkan malas dimuat sepenuhnya dalam masa 10 ms sehingga dapat dilihat, jadi harus selamat.

Kami juga boleh menggunakan atribut kepentingan (tinggi atau rendah) pada elemen & ltscript & gt, & ltimg & gt, atau & ltlink & gt (Blink only). Sebenarnya, ia adalah kaedah yang bagus untuk merendahkan gambar dalam karusel, serta mengutamakan semula skrip. Namun, kadang-kadang kita mungkin memerlukan kawalan yang lebih terperinci.

Cara paling berkesan untuk melakukan pemuatan malas yang sedikit lebih canggih adalah dengan menggunakan Intersection Observer API yang menyediakan cara untuk memerhatikan perubahan secara tidak segerak di persimpangan elemen sasaran dengan elemen leluhur atau dengan paparan dokumen tingkat atas. Pada asasnya, anda perlu membuat objek IntersectionObserver baru, yang menerima fungsi panggilan balik dan sekumpulan pilihan. Kemudian kita menambah sasaran untuk diperhatikan.

Fungsi panggil balik dilaksanakan ketika sasaran menjadi kelihatan atau tidak kelihatan, jadi apabila memintas viewport, anda boleh mula melakukan beberapa tindakan sebelum elemen tersebut dapat dilihat. Sebenarnya, kita mempunyai kawalan terperinci mengenai kapan panggilan balik pemerhati harus dipanggil, dengan rootMargin (margin sekitar akar) dan ambang (satu nombor atau sebilangan nombor yang menunjukkan berapa peratus keterlihatan sasaran yang kita sasarkan).

Alejandro Garcia Anglada telah menerbitkan tutorial berguna tentang bagaimana sebenarnya menerapkannya, Rahul Nanwani menulis catatan terperinci mengenai gambar latar depan dan latar belakang pemalas malas, dan Asas Google memberikan tutorial terperinci mengenai pemuatan gambar dan video malas dengan Intersection Observer juga.

Ingat penceritaan seni yang dibaca panjang dengan objek bergerak dan melekit? Anda juga boleh melaksanakan scrollytelling berprestasi dengan Intersection Observer.

Periksa lagi apa lagi yang boleh anda muatkan dengan malas. Walaupun rentetan terjemahan pemalas dan emoji dapat membantu. Dengan berbuat demikian, Mobile Twitter berjaya mencapai 80% pelaksanaan JavaScript lebih cepat dari saluran pengantarabangsaan baru.

Walau bagaimanapun, berhati-hati: perlu diperhatikan bahawa pemuatan malas harus menjadi pengecualian dan bukannya peraturan. Mungkin tidak masuk akal untuk memuatkan apa-apa yang sebenarnya anda mahu orang melihat dengan cepat, mis. gambar halaman produk, gambar wira atau skrip yang diperlukan agar navigasi utama menjadi interaktif.

Pendapat berbeza jika teknik ini meningkatkan pengalaman pengguna atau tidak, tetapi ia pasti meningkatkan masa untuk Cat Isi Kandungan Pertama. Kita bahkan dapat mengautomasikannya dengan menggunakan SQIP yang menghasilkan versi gambar berkualiti rendah sebagai placeholder SVG, atau Placeholder Imej Gradien dengan kecerunan linear CSS.

Tempat letak ini dapat disisipkan dalam HTML kerana secara semula jadi kompres dengan baik dengan kaedah pemampatan teks. Dalam artikelnya, Dean Hume telah menerangkan bagaimana teknik ini dapat dilaksanakan menggunakan Intersection Observer.

Kekurangan? Sekiranya penyemak imbas tidak menyokong pemerhati persimpangan, kami masih boleh memuatkan polibil atau memuatkan gambar dengan malas. Malah ada perpustakaan untuknya.

Mahu pergi lebih menarik? Anda boleh mengesan gambar anda dan menggunakan bentuk dan tepi primitif untuk membuat placeholder SVG ringan, memuatkannya terlebih dahulu, dan kemudian beralih dari gambar vektor placeholder ke gambar bitmap (dimuat).

Sebagai contoh, anda mungkin melangkau rendering bahagian kaki dan akhir pada beban awal:

Perhatikan bahawa keterlihatan kandungan: automatik berkelakuan seperti limpahan: tersembunyi, tetapi anda boleh memperbaikinya dengan menerapkan padding-kiri dan padding-right dan bukannya default-margin-kiri: auto, margin-right: auto dan lebar yang dinyatakan. Padding pada dasarnya membolehkan elemen melimpah-kotak isi dan memasuki kotak padding tanpa meninggalkan model kotak secara keseluruhan dan terputus.

Juga, ingat bahawa anda mungkin memperkenalkan beberapa CLS ketika kandungan baru akhirnya diberikan, jadi ada baiknya anda menggunakan ukuran yang mengandungi intrinsik dengan tempat letak berukuran betul (terima kasih, Una!).

Thijs Terluin mempunyai lebih banyak butiran mengenai kedua-dua sifat dan bagaimana ukuran kandungan-intrinsik dikira oleh penyemak imbas, Malte Ubl menunjukkan bagaimana anda dapat menghitungnya dan penjelasan video ringkas oleh Jake dan Surma menerangkan bagaimana semuanya berfungsi.

Dan jika anda perlu mendapatkan sedikit lebih terperinci, dengan CSS Containment, anda boleh melangkau susun atur, gaya dan cat secara manual untuk keturunan nod DOM jika anda hanya memerlukan ukuran, penjajaran atau gaya yang dikira pada elemen lain & mdash atau elemennya kini di luar kanvas.

Sebagai alternatif, untuk gambar di luar skrin, kita dapat memaparkan placeholder terlebih dahulu, dan ketika gambar berada di dalam viewport, menggunakan IntersectionObserver, memicu panggilan rangkaian agar gambar tersebut dapat diunduh di latar belakang. Juga, kita dapat menangguhkan rendering hingga decode dengan img.decode () atau memuat turun gambar jika API Decode Imej tidak tersedia.

Sekiranya anda melampaui itu, penyemak imbas memerlukan perjalanan pergi balik tambahan untuk mendapatkan lebih banyak gaya. CriticalCSS dan Critical membolehkan anda mengeluarkan CSS kritikal untuk setiap templat yang anda gunakan. Walau begitu, dalam pengalaman kami, tidak ada sistem automatik yang lebih baik daripada koleksi manual CSS kritikal untuk setiap templat, dan memang itulah pendekatan yang kami jalankan baru-baru ini.

Anda kemudian boleh menyisipkan CSS yang kritikal dan memuatkan selebihnya dengan plugin Webpack critter. Sekiranya mungkin, pertimbangkan untuk menggunakan pendekatan sebaris bersyarat yang digunakan oleh Filament Group, atau ubah kod sebaris menjadi aset statik dengan cepat.

Sekiranya anda sekarang muatkan CSS penuh anda secara tidak segerak dengan perpustakaan seperti loadCSS, tidak begitu diperlukan. Dengan media = "print", anda boleh memperdayakan penyemak imbas untuk mengambil CSS secara asinkron tetapi menerapkannya ke persekitaran skrin setelah dimuat. (terima kasih, Scott!)

Semasa mengumpulkan semua CSS kritikal untuk setiap templat, adalah biasa untuk meneroka kawasan "paro atas" sahaja. Namun, untuk susun atur yang rumit, mungkin merupakan ide yang baik untuk memasukkan dasar tata letak juga elakkan pengiraan semula secara besar-besaran dan mengecat semula kos, mencederakan skor Core Web Vital anda.

Bagaimana jika pengguna mendapat URL yang menghubungkan terus ke tengah halaman tetapi CSS belum dimuat turun? Dalam kes itu, sudah biasa untuk menyembunyikan kandungan yang tidak kritikal, mis. dengan opacity: 0 dalam CSS sebaris dan opacity: 1 dalam fail CSS penuh, dan paparkan apabila CSS tersedia. Ia mempunyai kelemahan utama walaupun, kerana pengguna pada sambungan perlahan mungkin tidak dapat membaca kandungan halaman. Itulah sebabnya lebih baik untuk selalu memastikan konten tetap kelihatan, walaupun mungkin tidak digayakan dengan baik.

Menempatkan CSS kritikal (dan aset penting lain) dalam fail berasingan di domain root mempunyai faedah, kadang-kadang bahkan lebih daripada sebaris, kerana cache. Chrome secara spekulatif membuka sambungan HTTP kedua ke domain root ketika meminta halaman, yang menghilangkan perlunya sambungan TCP untuk mengambil CSS ini. Ini bermakna anda boleh membuat satu set kritikal-CSS-fail (mis. kritikal-homepage.css, kritikal-produk-halaman.css dan lain-lain) dan sajikannya dari akar anda, tanpa perlu menyusunnya. (terima kasih, Philip!)

Dengan berhati-hati: dengan HTTP / 2, CSS kritikal dapat disimpan dalam fail CSS yang terpisah dan dihantar melalui push server tanpa kembung HTML. Puncanya adalah bahawa penekanan pelayan menyusahkan dengan banyak syarat dan keadaan perlumbaan di penyemak imbas. Ia tidak pernah disokong secara konsisten dan mempunyai beberapa masalah cache (lihat slaid 114 seterusnya persembahan Hooman Beheshti).

Kesannya, sebenarnya, boleh menjadi negatif dan memburukkan penyangga rangkaian, mencegah bingkai asli dalam dokumen dihantar. Oleh itu, tidak menghairankan bahawa buat masa ini, Chrome merancang untuk membuang sokongan untuk Server Push.

Juga, elakkan meletakkan & ltlink rel = "stylesheet" / & gt sebelum coretan tak segerak. Sekiranya skrip tidak bergantung pada helaian gaya, pertimbangkan untuk meletakkan skrip penyekat di atas gaya menyekat. Sekiranya betul, pisahkan JavaScript itu menjadi dua dan muatkan kedua-dua sisi CSS anda.

Scott Jehl menyelesaikan masalah lain yang menarik dengan mencache fail CSS sebaris dengan pekerja perkhidmatan, masalah biasa yang biasa dilakukan jika anda menggunakan CSS kritikal. Pada dasarnya, kami menambahkan atribut ID ke elemen gaya sehingga mudah mencarinya menggunakan JavaScript, kemudian sepotong kecil JavaScript menemukan CSS itu dan menggunakan API Cache untuk menyimpannya dalam cache penyemak imbas tempatan (dengan jenis teks isi / css) untuk digunakan pada halaman berikutnya. Untuk mengelakkan melekat pada halaman berikutnya dan sebaliknya merujuk aset cache secara luaran, kami kemudian menetapkan kuki pada lawatan pertama ke laman web. Voilà!

Perlu diingat bahawa gaya dinamik juga mahal, tetapi biasanya hanya dalam kes apabila anda bergantung pada ratusan komponen yang disusun secara serentak. Oleh itu, jika anda menggunakan CSS-in-JS, pastikan perpustakaan CSS-in-JS anda mengoptimumkan pelaksanaan ketika CSS anda tidak bergantung pada tema atau alat peraga, dan jangan terlalu menyusun komponen yang digayakan. Aggelos Arvanitakis berkongsi lebih banyak pandangan mengenai kos prestasi CSS-in-JS.

Kami dapat membuat satu aliran dari pelbagai sumber. Sebagai contoh, daripada melayani shell UI kosong dan membiarkan JavaScript mengisi, anda boleh membiarkan pekerja perkhidmatan membina aliran di mana cangkang berasal dari cache, tetapi badannya berasal dari rangkaian. Seperti yang dinyatakan oleh Jeff Posnick, jika aplikasi web anda dikuasakan oleh CMS yang memberikan pelayan HTML dengan menggabungkan templat separa, model itu diterjemahkan secara langsung ke dalam menggunakan respons streaming, dengan logik templat direplikasi dalam pekerja perkhidmatan dan bukan pelayan anda. Artikel Jake Archibald The Year of Web Streams menyoroti bagaimana sebenarnya anda boleh membuatnya. Peningkatan prestasi cukup ketara.

Satu kelebihan penting untuk streaming keseluruhan respons HTML ialah HTML yang diberikan semasa permintaan navigasi awal dapat memanfaatkan sepenuhnya penghurai HTML streaming penyemak imbas. Potongan HTML yang dimasukkan ke dalam dokumen setelah halaman dimuat (seperti biasa dengan konten yang diisi melalui JavaScript) tidak dapat memanfaatkan pengoptimuman ini.

Sokongan penyemak imbas? Masih sampai ke sana dengan sokongan separa di Chrome, Firefox, Safari dan Edge yang menyokong API dan Pekerja Perkhidmatan yang disokong di semua penyemak imbas moden. Dan jika anda merasa berpetualang lagi, anda dapat memeriksa pelaksanaan eksperimental permintaan streaming, yang memungkinkan anda untuk mulai mengirim permintaan sambil masih menghasilkan isi. Terdapat dalam Chrome 85.

Sebenarnya, anda boleh menulis semula permintaan untuk gambar DPI tinggi ke gambar DPI rendah, membuang fon web, kesan paralaks mewah, lakaran kecil pratonton dan tatal tak terhingga, mematikan putaran automatik video, menekan pelayan, mengurangkan jumlah item yang dipaparkan dan menurunkan kualiti gambar, atau malah mengubah cara anda memberikan markup. Tim Vereecke telah menerbitkan artikel yang sangat terperinci mengenai strategi aver data-s (h) yang menampilkan banyak pilihan untuk penjimatan data.

Siapa yang menggunakan data simpan, anda mungkin tertanya-tanya? 18% pengguna Chrome Android global telah mengaktifkan Mode Ringan (dengan Save-Data aktif), dan jumlahnya mungkin lebih tinggi.Menurut kajian Simon Hearne, kadar opt-in adalah yang paling tinggi pada peranti yang lebih murah, tetapi terdapat banyak outlier. Sebagai contoh: pengguna di Kanada mempunyai kadar pilihan lebih dari 34% (berbanding dengan

7% di AS) dan pengguna di Samsung flagship terbaru mempunyai kadar pilihan hampir 18% di seluruh dunia.

Dengan mod Save-Data dihidupkan, Chrome Mobile akan memberikan pengalaman yang dioptimumkan, iaitu a pengalaman web proksi dengan skrip yang ditangguhkan, paparan fon yang dikuatkuasakan: menukar dan memuatkan pemuatan yang malas. Adalah lebih masuk akal untuk membina pengalaman anda sendiri daripada bergantung pada penyemak imbas untuk membuat pengoptimuman ini.

Header pada masa ini hanya disokong di Chromium, pada Chrome versi Android atau melalui sambungan Data Saver pada peranti desktop. Akhirnya, anda juga dapat menggunakan Network Information API untuk menyampaikan modul JavaScript yang mahal, gambar dan video beresolusi tinggi berdasarkan jenis rangkaian. Rangkaian API Maklumat dan khususnya navigator.connection.effectiveType menggunakan nilai RTT, downlink, efektifType (dan beberapa yang lain) untuk memberikan gambaran mengenai sambungan dan data yang dapat dikendalikan oleh pengguna.

Dalam konteks ini, Max Böck membincangkan komponen yang sedar akan sambungan dan Addy Osmani bercakap mengenai penyediaan modul adaptif. Sebagai contoh, dengan React, kita dapat menulis komponen yang berbeza untuk jenis sambungan yang berbeza. Seperti yang dicadangkan oleh Max, komponen & ltMedia / & gt dalam artikel berita mungkin akan dikeluarkan:

  • Luar talian: ruang letak dengan teks alt,
  • Mod 2G / save-data: gambar beresolusi rendah,
  • 3G pada skrin bukan Retina: gambar resolusi pertengahan,
  • 3G pada skrin Retina: gambar Retina beresolusi tinggi,
  • 4G: video HD.

Dean Hume memberikan pelaksanaan praktikal logik serupa menggunakan pekerja perkhidmatan. Untuk video, kami dapat memaparkan poster video secara lalai, dan kemudian memaparkan ikon "Main" serta shell pemutar video, meta-data video dll pada sambungan yang lebih baik. Sebagai pengganti untuk penyemak imbas yang tidak menyokong, kami dapat mendengarkan acara canplaythrough dan menggunakan Promise.race () untuk menghentikan masa memuatkan sumber jika acara canplaythrough tidak menyala dalam 2 saat.

Sekiranya anda ingin menyelam lebih dalam, berikut adalah beberapa sumber untuk memulakan:

  • Addy Osmani menunjukkan cara melaksanakan penyediaan adaptif di React. menyediakan coretan kod untuk React,
  • Netanel Basel meneroka Komponen Sambungan-Sadar di Sudut,
  • Theodore Vorilas berkongsi bagaimana Melayan Komponen Adaptif Menggunakan API Maklumat Rangkaian di Vue berfungsi.
  • Umar Hansa menunjukkan cara memuat turun / melaksanakan JavaScript mahal secara selektif.

Bonus: Umar Hansa menunjukkan cara menangguhkan skrip mahal dengan import dinamik untuk mengubah pengalaman berdasarkan memori peranti, sambungan rangkaian dan kesesuaian perkakasan.

Ingat prerender? Petunjuk sumber yang digunakan untuk mendorong penyemak imbas membina keseluruhan halaman di latar belakang untuk navigasi seterusnya. Masalah pelaksanaannya cukup bermasalah, mulai dari penggunaan memori yang besar dan penggunaan jalur lebar hingga beberapa klik analisis dan tayangan iklan yang didaftarkan.

Tidak mengejutkan, ia tidak digunakan lagi, tetapi pasukan Chrome telah membawanya kembali sebagai mekanisme NoState Prefetch. Sebenarnya, Chrome menganggap petunjuk prerender sebagai Prefetch NoState, jadi kami masih dapat menggunakannya hari ini. Seperti yang dijelaskan oleh Katie Hempenius dalam artikel itu, "seperti prerendering, PreStetch NoState mengambil sumber terlebih dahulu tetapi tidak seperti prerendering, ia tidak melaksanakan JavaScript atau membuat bahagian halaman terlebih dahulu. "

PreStetch NoState hanya menggunakan

Memori dan sumber daya 45MiB yang diambil akan diambil dengan Prioriti Bersih IDLE. Sejak Chrome 69, NoState Prefetch menambah tajuk Tujuan: Prefetch untuk semua permintaan untuk membuat mereka dapat dibezakan dari penyemakan imbas biasa.

Juga, perhatikan alternatif dan portal prarendering, usaha baru ke arah prerendering yang peka terhadap privasi, yang akan memberikan pratonton isi kandungan untuk navigasi yang lancar.

Menggunakan petunjuk sumber mungkin kaedah termudah untuk meningkatkan prestasi, dan ia berfungsi dengan baik. Bila hendak menggunakan apa? Seperti yang dijelaskan oleh Addy Osmani, adalah wajar untuk memuatkan sumber yang kami tahu kemungkinan besar akan digunakan pada halaman semasa dan untuk navigasi akan datang melintasi pelbagai sempadan navigasi, mis. Kumpulan paket web yang diperlukan untuk halaman yang belum dikunjungi pengguna.

Artikel Addy mengenai "Memuat Keutamaan di Chrome" menunjukkan caranya betul-betul Chrome menafsirkan petunjuk sumber, jadi setelah anda memutuskan aset mana yang penting untuk diberikan, anda boleh memberikan keutamaan tinggi kepada mereka. Untuk melihat bagaimana permintaan anda diprioritaskan, Anda dapat mengaktifkan lajur "prioriti" di tabel permintaan rangkaian Chrome DevTools (serta Safari).

Sebilangan besar masa ini, kita akan menggunakan sekurang-kurangnya preonnect dan dns-prefetch, dan kita akan berhati-hati dengan menggunakan prefetch, preload dan prerender. Perhatikan bahawa walaupun dengan preonnect dan dns-prefetch, penyemak imbas mempunyai had bilangan host yang akan dicari / disambungkan secara selari, jadi pertaruhan selamat untuk memesannya berdasarkan keutamaan (terima kasih Philip Tellis!).

Sejak fon biasanya merupakan aset penting pada halaman, kadangkala ada baiknya meminta penyemak imbas memuat turun fon kritikal dengan pramuat. Walau bagaimanapun, periksa sama ada ia benar-benar membantu prestasi kerana terdapat teka-teki keutamaan semasa memuatkan fon: kerana pramuat dilihat sebagai kepentingan yang tinggi, ia dapat melancarkan sumber yang lebih penting seperti CSS kritikal. (terima kasih, Barry!)

Oleh kerana & ltlink rel = "preload" & gt menerima atribut media, anda boleh memilih untuk memuat turun sumber secara selektif berdasarkan peraturan pertanyaan @media, seperti yang ditunjukkan di atas.

Selanjutnya, kita dapat menggunakan atribut imagesrcset dan imagesize untuk memuatkan lebih awal gambar pahlawan yang ditemui dengan lebih cepat, atau gambar yang dimuat melalui JavaScript, mis. poster filem:

Kita juga boleh pramuat JSON sebagai ambil, jadi ditemui sebelum JavaScript memintanya:

Kami juga dapat memuat JavaScript secara dinamis, berkesan untuk pelaksanaan skrip yang malas.

Beberapa perkara yang perlu diingat: pramuat adalah baik untuk memindahkan masa muat turun aset yang lebih dekat dengan permintaan awal, tetapi aset yang dimuatkan akan tiba di cache memori yang terikat pada halaman membuat permintaan. pramuat bermain dengan baik dengan cache HTTP: permintaan rangkaian tidak akan pernah dihantar jika item tersebut sudah ada di cache HTTP.

Oleh itu, ia berguna untuk sumber yang dijumpai lewat, gambar pahlawan yang dimuat melalui gambar latar, memasukkan CSS (atau JavaScript) yang kritikal dan sebelum memuatkan CSS (atau JavaScript) yang lain.

Pramuat gambar penting lebih awal tidak perlu menunggu JavaScript untuk mencarinya. (Kredit gambar: “Preload Imej Wira yang Ditemui Lebih Lambat” oleh Addy Osmani) (Pratonton besar)

Tag preload dapat memulakan pramuat hanya setelah penyemak imbas menerima HTML dari pelayan dan pengurai lookahead telah menemui tag pramuat. Pramuat melalui header HTTP mungkin sedikit lebih cepat kerana kita tidak perlu menunggu penyemak imbas menguraikan HTML untuk memulakan permintaan (walaupun diperdebatkan).

Petunjuk Awal akan membantu lebih jauh lagi, yang membolehkan pramuat masuk sebelum header respons untuk HTML dihantar (pada peta jalan di Chromium, Firefox). Tambahan, Petunjuk Prioriti akan membantu kami menunjukkan keutamaan memuat skrip.

Hati-hati: jika anda menggunakan pramuat, sebagai mesti didefinisikan atau tidak ada yang dimuat, ditambah fon pramuat tanpa atribut crossorigin akan diambil dua kali. Sekiranya anda menggunakan prefetch, berhati-hatilah dengan masalah header Age di Firefox.

Seperti yang disarankan oleh Phil Walton, dengan pekerja perkhidmatan, kami dapat mengirimkan muatan HTML yang lebih kecil dengan menghasilkan respons kami secara terprogram. Pekerja perkhidmatan boleh meminta data minimum yang diperlukannya dari pelayan (mis. Sebahagian kandungan HTML, fail Markdown, data JSON, dll.), Dan kemudian ia dapat mengubah secara teratur data tersebut ke dalam dokumen HTML lengkap. Oleh itu, apabila pengguna melawat laman web dan pekerja perkhidmatan dipasang, pengguna tidak akan meminta halaman HTML penuh lagi. Impak prestasi dapat dilihat dengan cukup hebat.

Sokongan penyemak imbas? Pekerja perkhidmatan disokong secara meluas dan cadangan adalah rangkaiannya. Adakah ia membantu meningkatkan prestasi? Oh ya, memang begitu. Dan semakin baik, mis. dengan Latar Belakang yang membolehkan muat naik latar belakang / muat turun melalui pekerja perkhidmatan juga.

Terdapat sebilangan kes penggunaan untuk pekerja perkhidmatan. Sebagai contoh, anda dapat menerapkan fitur "Simpan untuk offline", menangani gambar yang rusak, memperkenalkan pemesejan antara tab atau memberikan strategi cache yang berbeza berdasarkan jenis permintaan. Secara umum, strategi yang boleh dipercayai yang boleh dipercayai adalah menyimpan shell aplikasi di cache pekerja perkhidmatan bersama dengan beberapa halaman kritikal, seperti halaman luar talian, halaman depan dan apa sahaja yang mungkin penting dalam kes anda.

Terdapat beberapa perkara yang perlu diingat. Dengan adanya pekerja perkhidmatan, kita harus berhati-hati dengan permintaan jarak jauh di Safari (jika anda menggunakan Workbox untuk pekerja perkhidmatan, ia memiliki modul permintaan jangkauan). Sekiranya anda tersandung DOMException: Kuota terlampaui. ralat pada konsol penyemak imbas, kemudian perhatikan artikel Gerardo Bila 7KB sama dengan 7MB.

Seperti yang ditulis oleh Gerardo, "Jika anda membuat aplikasi web yang progresif dan mengalami penyimpanan cache yang kembung ketika pekerja perkhidmatan anda menyimpan aset statik yang dilayan dari CDN, pastikan tajuk respons CORS yang betul ada untuk sumber silang, anda tidak menyimpan respons buram dengan pekerja perkhidmatan anda dengan tidak sengaja, anda memilih aset gambar silang asal ke mod CORS dengan menambahkan atribut crossorigin pada tag & ltimg & gt. "

Terdapat banyak sumber yang hebat untuk memulakan pekerja perkhidmatan:

    , yang membantu anda memahami bagaimana pekerja perkhidmatan bekerja di belakang tabir dan perkara yang perlu difahami semasa membuat pekerja. Chris Ferdinandi menyediakan rangkaian artikel hebat mengenai pekerja perkhidmatan, menerangkan cara membuat aplikasi luar talian dan merangkumi pelbagai senario, dari menyimpan halaman yang dilihat baru-baru ini sehingga menetapkan tarikh luput untuk item dalam cache pekerja perkhidmatan.

Sebagai contoh, dalam ujian A / B, ketika HTML perlu mengubah isi kandungannya untuk pengguna yang berlainan, kita dapat menggunakan Pekerja Servis di pelayan CDN untuk menangani logiknya. Kami juga dapat mengalirkan penulisan semula HTML untuk mempercepat laman web yang menggunakan Google Font.

Setiap kali anda mengalami, debug repaints yang tidak perlu dalam DevTools:

    . Periksa beberapa petua berguna mengenai cara memahaminya.
  • Untuk memulakan, periksa kursus Udacity percuma Paul Lewis mengenai pengoptimuman rendering penyemak imbas dan artikel Georgy Marchuk mengenai lukisan Browser dan pertimbangan untuk prestasi web. dalam "Lebih banyak alat → Rendering → Paint Flashing" di Firefox DevTools.
  • Dalam React DevTools, periksa "Sorot kemas kini" dan aktifkan "Rekod mengapa setiap komponen diberikan",
  • Anda juga dapat menggunakan Why Did You Render, jadi ketika komponen dibuat ulang, lampu kilat akan memberitahu Anda tentang perubahan tersebut.

Adakah anda menggunakan susun atur Masonry? Perlu diingat bahawa mungkin dapat membina susun atur Masonry dengan grid CSS sahaja, tidak lama lagi.

Sekiranya anda ingin menyelami topik ini dengan lebih mendalam, Nolan Lawson telah berkongsi trik untuk mengukur prestasi susun atur dalam artikelnya dengan tepat, dan Jason Miller juga mencadangkan teknik alternatif. Kami juga mempunyai artikel lil 'oleh Sergey Chikuyonok tentang cara mendapatkan animasi GPU dengan betul.

Penyemak imbas dapat menghidupkan transformasi dan kelegapan dengan murah. Pencetus CSS berguna untuk memeriksa apakah CSS mencetuskan susun atur semula atau reflow. (Kredit gambar: Addy Osmani) (Pratonton besar)

Nota: perubahan pada lapisan GPU yang digubah adalah yang paling murah, jadi jika anda dapat melarikan diri dengan hanya mencetuskan penggabungan melalui kelegapan dan transformasi, anda akan berada di landasan yang betul. Anna Migas telah memberikan banyak nasihat praktikal dalam ceramahnya mengenai Debugging UI Rendering Performance juga. Dan untuk memahami cara debug prestasi cat di DevTools, periksa video audit Performance Paint Umar.

Apa maksudnya? Semasa memuatkan aset, kita boleh berusaha selalu satu langkah ke hadapan pelanggan, jadi pengalaman itu terasa pantas sementara banyak perkara berlaku di latar belakang. Untuk memastikan pelanggan tetap terlibat, kami dapat menguji layar kerangka (demo pelaksanaan) dan bukannya memuatkan indikator, menambahkan peralihan / animasi dan pada dasarnya menipu UX apabila tidak ada lagi yang dapat dioptimumkan.

Dalam kajian kes mereka di The Art of UI Skeletons, Kumar McMillan berkongsi beberapa idea dan teknik mengenai bagaimana mensimulasikan senarai, teks, dan layar akhir yang dinamik, serta cara mempertimbangkan pemikiran kerangka dengan React.

Berhati-hatilah: skrin kerangka harus diuji sebelum digunakan kerana beberapa ujian menunjukkan bahawa skrin kerangka dapat melakukan yang terburuk oleh semua metrik.

Komuniti telah mengembangkan beberapa teknik dan jalan keluar untuk mengelakkan reflow. Secara amnya, adalah idea yang baik untuk elakkan memasukkan kandungan baru di atas kandungan yang ada, melainkan jika ia berlaku sebagai tindak balas terhadap interaksi pengguna. Sentiasa tetapkan atribut lebar dan tinggi pada gambar, jadi penyemak imbas moden mengalokasikan kotak dan menempah ruang secara lalai (Firefox, Chrome).

Untuk kedua-dua gambar atau video, kami dapat menggunakan placeholder SVG untuk menempah kotak paparan di mana media akan muncul. Ini bermaksud bahawa kawasan tersebut akan disimpan dengan betul apabila anda juga perlu mengekalkan nisbah aspeknya. Kami juga dapat menggunakan placeholder, atau gambar pengganti untuk iklan dan kandungan dinamik, serta slot susun atur pra-peruntukkan.

Daripada memuatkan gambar malas dengan skrip luaran, pertimbangkan untuk menggunakan pemuatan malas asli, atau pemuatan malas hibrid apabila kita memuat skrip luaran hanya jika pemuatan malas asli tidak disokong.

Seperti yang disebutkan di atas, selalu kelompokkan pengecatan dan peralihan fon web dari semua fon fallback ke semua fon web sekaligus - pastikan suis itu tidak terlalu tiba-tiba, dengan menyesuaikan ketinggian garis dan jarak antara fon dengan pemadan gaya-font.

Ke ganti metrik fon untuk fon pengganti untuk meniru font web, kita dapat menggunakan deskripsi @ font-face untuk menggantikan metrik fon (demo, diaktifkan di Chrome 87). (Perhatikan bahawa penyesuaiannya rumit dengan tumpukan fon yang rumit.)

Untuk CSS lewat, kami dapat memastikannya CSS layout-kritikal diselaraskan di tajuk setiap templat. Lebih jauh lagi dari itu: untuk halaman panjang, apabila bar tatal menegak ditambahkan, ia mengalihkan kandungan utama 16px ke kiri. Untuk memaparkan bar tatal lebih awal, kita dapat menambahkan overflow-y: scroll on html untuk menegakkan bar tatal pada cat pertama. Yang terakhir ini membantu kerana bar tatal dapat menyebabkan pergeseran susun atur yang tidak remeh kerana kandungan di bahagian atas dilipat semula apabila lebar berubah. Sebilangan besarnya mesti berlaku pada platform dengan bar tatal tidak bertindih seperti Windows. Tetapi: memecahkan kedudukan: melekit kerana elemen tersebut tidak akan keluar dari bekas.

Sekiranya anda berurusan dengan tajuk yang tetap atau melekit di bahagian atas halaman pada tatal, simpan ruang untuk pengepala apabila ia menjadi pined, mis. dengan elemen placeholder atau margin atas pada kandungan. Pengecualian adalah sepanduk persetujuan cookie yang tidak boleh memberi kesan pada CLS, tetapi kadang-kadang ada: bergantung pada pelaksanaannya. Terdapat beberapa strategi dan cara menarik dalam untaian Twitter ini.

Untuk komponen tab yang mungkin merangkumi pelbagai jumlah teks, anda dapat mengelakkan peralihan susun atur dengan tumpukan grid CSS. Dengan meletakkan kandungan setiap tab di kawasan grid yang sama, dan menyembunyikan salah satu tab pada satu waktu, kita dapat memastikan bahawa wadah selalu mengambil ketinggian elemen yang lebih besar, sehingga tidak akan terjadi pergeseran tata letak.

Ah, dan tentu saja, pengguliran yang tidak terbatas dan "Muat lebih banyak" boleh menyebabkan pergeseran susun atur juga jika terdapat kandungan di bawah senarai (mis. Footer). Untuk meningkatkan CLS, simpan cukup ruang untuk kandungan yang akan dimuatkan sebelum ini pengguna menatal ke bahagian halaman itu, membuang footer atau elemen DOM di bahagian bawah halaman yang mungkin diturunkan oleh memuatkan kandungan. Juga, mengambil data dan gambar untuk kandungan di bawah lipatan sehingga oleh semasa pengguna menatal sejauh itu, sudah ada. Anda boleh menggunakan perpustakaan virtualisasi senarai seperti React-window untuk mengoptimumkan senarai panjang juga (terima kasih, Addy Osmani!).

Untuk memastikan bahawa kesan reflows dibendung, ukur kestabilan susun atur dengan Layout Instability API. Dengan itu, anda boleh mengira Peralihan Tata Letak Kumulatif (CLS) skor dan sertakannya sebagai syarat dalam ujian anda, jadi setiap kali regresi muncul, anda dapat mengesannya dan memperbaikinya.

Untuk mengira skor peralihan susun atur, penyemak imbas melihat ukuran ruang pandang dan pergerakan elemen yang tidak stabil di ruang pandang antara dua bingkai yang diberikan. Sebaik-baiknya, skor hampir dengan 0. Terdapat panduan hebat oleh Milica Mihajlija dan Philip Walton mengenai apa itu CLS dan bagaimana mengukurnya. Ini adalah titik permulaan yang baik untuk mengukur dan mengekalkan prestasi yang dirasakan dan mengelakkan gangguan, terutama untuk tugas-tugas penting perniagaan.

Petua cepat: untuk mengetahui apa yang menyebabkan peralihan susun atur di DevTools, anda boleh meneroka peralihan susun atur di bawah "Pengalaman" di Panel Prestasi.

Bonus: jika anda ingin mengurangkan reflow dan repaint, periksa panduan Charis Theodoulou untuk Meminimumkan DOM Reflow / Layout Thrashing dan senarai Paul Irish tentang Apa yang memaksa tata letak / reflow serta CSSTriggers.com, jadual rujukan mengenai sifat CSS yang mencetuskan tata letak, cat dan menyusun.

Rangkaian dan HTTP / 2

  1. Adakah stapling OCSP diaktifkan?
    Dengan mengaktifkan stapling OCSP pada pelayan anda, anda dapat mempercepat jabat tangan TLS anda. Protokol Status Sijil Dalam Talian (OCSP) dibuat sebagai alternatif kepada protokol Senarai Pembatalan Sijil (CRL). Kedua-dua protokol digunakan untuk memeriksa sama ada sijil SSL telah dicabut.

Walau bagaimanapun, protokol OCSP tidak memerlukan penyemak imbas menghabiskan masa memuat turun dan kemudian mencari senarai untuk mendapatkan maklumat sijil, oleh itu mengurangkan masa yang diperlukan untuk berjabat tangan.

Seperti yang ditulis oleh Simon, dalam dunia HTTPS, terdapat beberapa jenis tahap pengesahan sijil yang digunakan untuk menjamin lalu lintas:

  • Pengesahan Domain (DV) mengesahkan bahawa pemohon sijil memiliki domain,
  • Pengesahan Organisasi (OV) mengesahkan bahawa organisasi memiliki domain,
  • Pengesahan Lanjutan (EV) mengesahkan bahawa organisasi memiliki domain, dengan pengesahan yang ketat.

Penting untuk diperhatikan bahawa semua sijil ini adalah sama dari segi teknologi, mereka hanya berbeza dalam maklumat dan sifat yang diberikan dalam sijil tersebut.

Sijil EV mahal dan memakan masa kerana mereka memerlukan manusia untuk menyemak sijil dan memastikan kesahihannya. Sebaliknya, sijil DV sering disediakan secara percuma & mdash cth. oleh Let’s Encrypt - pihak berkuasa sijil automatik terbuka yang disatukan dengan baik ke dalam banyak penyedia hosting dan CDN. Sebenarnya, pada masa penulisan, ia mempunyai lebih daripada 225 juta laman web (PDF), walaupun hanya 2.69% halaman (dibuka di Firefox).

Jadi apa masalahnya? Masalahnya ialah Sijil EV tidak sepenuhnya menyokong stapling OCSP yang disebut di atas. Walaupun stapling membolehkan pelayan memeriksa dengan Certificate Authority jika sijil telah dicabut dan kemudian menambahkan ("staple") maklumat ini ke sijil, tanpa stapling klien harus melakukan semua pekerjaan, mengakibatkan permintaan yang tidak perlu selama perundingan TLS . Pada sambungan yang lemah, ini mungkin berakhir dengan kos prestasi yang ketara (1000ms +).

Sijil EV bukanlah pilihan yang bagus untuk prestasi web, dan ia boleh memberi kesan yang lebih besar pada prestasi daripada sijil DV. Untuk prestasi web yang optimum, selalu berikan sijil DV yang disertakan OCSP. Mereka juga jauh lebih murah daripada sijil EV dan kurang sukar untuk diperoleh. Baiklah, sekurang-kurangnya sehingga CRLite tersedia.

Perkara pemampatan: 40 & ndash43% rantai sijil tidak terkompresi terlalu besar untuk dimuat dalam penerbangan QUIC 3 datagram UDP. (Kredit gambar :) Cepat) (Pratonton besar)

Nota: Dengan adanya QUIC / HTTP / 3, perlu diperhatikan bahawa rantai sijil TLS adalah satu-satunya kandungan bersaiz pemboleh ubah yang menguasai jumlah bait dalam Jabat Tangan QUIC. Ukurannya berbeza antara beberapa ratus bait dan lebih dari 10 KB.

Oleh itu, menjaga sijil TLS sangat penting pada QUIC / HTTP / 3, kerana sijil besar akan menyebabkan banyak berjabat tangan. Juga, kita perlu memastikan bahawa sijil dimampatkan, kerana jika tidak, rantai sijil akan terlalu besar untuk muat dalam satu penerbangan QUIC.

Awak boleh cari cara lebih terperinci dan menunjukkan masalah dan penyelesaian mengenai:

Penting untuk memahami bahawa HTTP / 2 tidak sempurna dan mempunyai masalah keutamaan, tetapi disokong dengan baik dan, dalam kebanyakan kes, anda lebih baik menggunakannya.

Perhatian: HTTP / 2 Server Push dikeluarkan dari Chrome, jadi jika pelaksanaan anda bergantung pada Server Push, anda mungkin perlu mengunjunginya semula. Sebagai gantinya, kita mungkin melihat Petunjuk Awal, yang sudah diintegrasikan sebagai percubaan dalam Cepat.

Sekiranya anda masih menggunakan HTTP, tugas yang paling memakan masa adalah untuk bermigrasi ke HTTPS terlebih dahulu, dan kemudian menyesuaikan proses build anda untuk memenuhi multiplexing dan paralelisasi HTTP / 2. Membawa HTTP / 2 ke Gov.uk adalah kajian kes yang hebat untuk melakukan perkara itu, mencari jalan melalui CORS, SRI dan WPT sepanjang perjalanan. Untuk sisa artikel ini, kami menganggap bahawa anda beralih atau sudah beralih ke HTTP / 2.

Di satu pihak, anda mungkin ingin mengelakkan menggabungkan aset sama sekali, daripada memecahkan keseluruhan antara muka anda ke dalam banyak modul kecil, memampatkannya sebagai sebahagian daripada proses membina dan memuatkannya secara selari. Perubahan dalam satu fail tidak memerlukan keseluruhan helaian gaya atau JavaScript dimuat turun semula. Ini juga meminimumkan masa penghuraian dan menjaga muatan setiap halaman tetap rendah.

Sebaliknya, pembungkusan masih penting. Dengan menggunakan banyak skrip kecil, pemampatan keseluruhan akan menderita dan kos pengambilan objek dari cache akan meningkat. Pemampatan pakej besar akan mendapat manfaat daripada penggunaan kamus lagi, sedangkan pakej kecil yang kecil tidak akan dapat digunakan. Ada kerja standard untuk mengatasi perkara itu, tetapi sekarang masih belum selesai. Kedua, penyemak imbas mempunyai belum dioptimumkan untuk aliran kerja sedemikian. Sebagai contoh, Chrome akan mencetuskan komunikasi antara proses (IPC) yang linear dengan jumlah sumber, jadi termasuk ratusan sumber akan mempunyai kos waktu penyemak imbas.

Untuk mencapai hasil terbaik dengan HTTP / 2, pertimbangkan untuk memuat CSS secara berperingkat, seperti yang disarankan oleh Jake Archibald Chrome.

Namun, anda boleh cuba memuatkan CSS secara berperingkat. Sebenarnya, CSS dalam badan tidak lagi menyekat rendering untuk Chrome. Tetapi ada beberapa masalah keutamaan sehingga tidak begitu mudah, tetapi patut dicuba.

Anda boleh melepaskan dengan penyatuan HTTP / 2, yang membolehkan anda menggunakan pelindung domain sambil mendapat manfaat dari HTTP / 2, tetapi mencapainya dalam praktik adalah sukar, dan secara umum, ini tidak dianggap sebagai amalan yang baik. Juga, HTTP / 2 dan Integriti Sub Sumber tidak selalu aktif.

Apa nak buat? Jika anda menjalankan HTTP / 2, menghantarnya 6-10 pakej nampaknya kompromi yang baik (dan tidak terlalu buruk untuk penyemak imbas lama). Eksperimen dan ukuran untuk mencari keseimbangan yang tepat untuk laman web anda.

Untuk memeriksa sama ada semua permintaan menggunakan sambungan HTTP / 2 tunggal, atau ada yang salah dikonfigurasi, aktifkan lajur "ID Sambungan" di DevTools → Network. Cth., Di sini, semua permintaan mempunyai sambungan yang sama (286) & mdash kecuali manifest.json, yang membuka yang terpisah (451).

Rujuk penyelidikan luar biasa Pat Meenan mengenai keutamaan HTTP / 2 (video) dan uji sokongan pelayan untuk keutamaan HTTP / 2. Menurut Pat, disarankan untuk mengaktifkan kawalan kesesakan BBR dan tetapkan tcp_notsent_lowat ke 16KB agar keutamaan HTTP / 2 berfungsi dengan baik pada kernel Linux 4.9 dan kemudian (terima kasih, Yoav!). Andy Davies melakukan kajian serupa untuk memprioritaskan HTTP / 2 di seluruh penyemak imbas, CDN dan Perkhidmatan Hosting Awan.

Semasa menggunakannya, periksa semula apakah kernel anda menyokong TCP BBR dan aktifkan jika mungkin. Saat ini digunakan di Google Cloud Platform, Amazon Cloudfront, Linux (mis. Ubuntu).

Juga, pastikan bahawa semua plugin luaran dan skrip penjejakan dimuat melalui HTTPS, bahawa skrip merentas laman web tidak boleh dilakukan dan kedua tajuk HTTP Strict Transport Security dan tajuk Kandungan Keselamatan Kandungan diset dengan betul.

Untuk mengatasi masalah HTTP / 2, IETF, bersama dengan Google, Akamai dan lain-lain, telah mengerjakan protokol baru yang baru-baru ini diseragamkan sebagai HTTP / 3.

Robin Marx telah menjelaskan HTTP / 3 dengan sangat baik, dan penjelasan berikut berdasarkan penjelasannya. Pada intinya, HTTP / 3 adalah sangat serupa dengan HTTP / 2 dari segi ciri, tetapi di bawah tudungnya berfungsi sangat berbeza. HTTP / 3 memberikan sejumlah peningkatan: jabat tangan yang lebih pantas, penyulitan yang lebih baik, aliran bebas yang lebih dipercayai, penyulitan dan kawalan aliran yang lebih baik. Perbezaan yang ketara ialah HTTP / 3 menggunakan QUIC sebagai lapisan pengangkutan, dengan paket QUIC yang dikemas di atas diagram UDP, dan bukan TCP.

QUIC mengintegrasikan TLS 1.3 sepenuhnya ke dalam protokol, sementara di TCP berlapis di atas. Dalam timbunan TCP biasa, kami mempunyai beberapa kali overhead berulang-ulang kerana TCP dan TLS perlu melakukan jabat tangan sendiri, tetapi dengan QUIC kedua-duanya dapat digabungkan dan diselesaikan hanya dalam satu perjalanan pergi balik. Oleh kerana TLS 1.3 membolehkan kita mengatur kunci penyulitan untuk sambungan yang berlanjutan, dari sambungan kedua dan seterusnya, kita sudah dapat mengirim dan menerima data lapisan aplikasi dalam perjalanan pulang pertama, yang disebut "0-RTT".

Juga, algoritma pemampatan header HTTP / 2 ditulis sepenuhnya, bersama dengan sistem keutamaannya. Tambahan, sokongan QUIC penghijrahan sambungan dari Wi-Fi ke rangkaian selular melalui ID sambungan di tajuk setiap paket QUIC. Sebilangan besar implementasi dilakukan di ruang pengguna, bukan ruang kernel (seperti yang dilakukan dengan TCP), jadi kita harus mengharapkan protokol ini akan berkembang di masa depan.

Adakah semua itu memberi perbezaan besar? Mungkin ya, terutama memberi kesan pada masa memuatkan di telefon bimbit, tetapi juga pada bagaimana kita melayani aset kepada pengguna akhir. Sementara di HTTP / 2, beberapa permintaan berbagi sambungan, dalam permintaan HTTP / 3 juga berkongsi sambungan tetapi streaming secara bebas, jadi paket yang dijatuhkan tidak lagi mempengaruhi semua permintaan, hanya satu aliran.

Itu bermakna bahawa walaupun dengan satu kumpulan JavaScript besar, pemrosesan aset akan diperlambat ketika satu aliran berhenti, impaknya akan menjadi kurang signifikan apabila banyak fail mengalir secara selari (HTTP / 3). Jadi pembungkusan masih penting.

HTTP / 3 masih dalam proses. Chrome, Firefox dan Safari sudah dilaksanakan. Beberapa CDN sudah menyokong QUIC dan HTTP / 3. Pada akhir tahun 2020, Chrome mula menggunakan HTTP / 3 dan IETF QUIC, dan sebenarnya semua perkhidmatan Google (Google Analytics, YouTube dll) sudah berjalan melalui HTTP / 3. Pelayan Web LiteSpeed ​​menyokong HTTP / 3, tetapi Apache, nginx atau IIS belum menyokongnya, tetapi kemungkinan akan berubah dengan cepat pada tahun 2021.

The pokoknya: jika anda mempunyai pilihan untuk menggunakan HTTP / 3 di pelayan dan di CDN anda, mungkin idea yang sangat baik untuk melakukannya. Manfaat utama akan datang dari pengambilan beberapa objek secara serentak, terutamanya pada sambungan latensi tinggi. Kami belum tahu pasti kerana tidak banyak kajian dilakukan di ruang itu, tetapi hasil pertama sangat menjanjikan.

Sekiranya anda ingin menyelami lebih banyak spesifikasi dan kelebihan protokol, berikut adalah beberapa titik permulaan yang baik untuk diperiksa:

    , usaha kolaboratif untuk mendokumentasikan protokol HTTP / 3 dan QUIC. Terdapat dalam pelbagai bahasa, juga dalam bentuk PDF. dengan Daniel Stenberg. dengan Robin Marx memperkenalkan konsep asas protokol QUIC dan HTTP / 3, menerangkan bagaimana HTTP / 3 menangani penyekat kepala dan penghijrahan sambungan, dan bagaimana HTTP / 3 dirancang untuk menjadi malar hijau (terima kasih, Simon!).
  • Anda boleh memeriksa sama ada pelayan anda berjalan di HTTP / 3 di HTTP3Check.net.

Pengujian Dan Pemantauan

  1. Adakah anda mengoptimumkan aliran kerja pengauditan anda?
    Ini mungkin tidak terdengar seperti masalah besar, tetapi dengan menetapkan tetapan yang betul di hujung jari anda mungkin dapat menjimatkan sedikit masa dalam ujian. Pertimbangkan untuk menggunakan Aliran Kerja Alfred Tim Kadlec untuk WebPageTest untuk menghantar ujian ke contoh umum WebPageTest. Sebenarnya, WebPageTest mempunyai banyak ciri yang tidak jelas, jadi luangkan masa untuk belajar membaca carta Paparan Air Terjun WebPageTest dan cara membaca carta Paparan Sambungan WebPageTest untuk mendiagnosis dan menyelesaikan masalah prestasi dengan lebih cepat.

Lihat AutoWebPerf yang baru dikeluarkan, alat modular yang membolehkan pengumpulan data prestasi secara automatik dari pelbagai sumber. Sebagai contoh, kami dapat menetapkan ujian harian pada halaman kritikal anda untuk menangkap data lapangan dari CrUX API dan data makmal dari laporan Lighthouse dari PageSpeed ​​Insights.

Dan jika anda perlu men-debug sesuatu dengan cepat tetapi proses build anda nampaknya sangat lambat, ingatlah bahawa "penghapusan ruang kosong dan mangling simbol menyumbang 95% pengurangan saiz kod minified kerana kebanyakan JavaScript & mdash tidak mengubah kod yang terperinci. Anda boleh hanya matikan pemampatan untuk mempercepat binaan Uglify sebanyak 3 hingga 4 kali. "

  1. Sudahkah anda menguji penyemak imbas proksi dan penyemak imbas lama?
    Ujian di Chrome dan Firefox tidak mencukupi. Lihat bagaimana laman web anda berfungsi dalam penyemak imbas proksi dan penyemak imbas lama. UC Browser dan Opera Mini, misalnya, mempunyai bahagian pasaran yang signifikan di Asia (hingga 35% di Asia). Ukur rata-rata kelajuan Internet di negara yang anda minati untuk mengelakkan kejutan besar di jalan. Uji dengan pendikit rangkaian, dan tiru peranti DPI tinggi. BrowserStack sangat bagus untuk diuji jauh peranti sebenar, dan lengkapkannya dengan sekurang-kurangnya beberapa peranti sebenar di pejabat anda juga & moga ia berbaloi.

Aspek penting dari 404 tindak balas adalah sebenarnya ukuran badan tindak balas yang dihantar ke penyemak imbas. Menurut kajian 404 halaman oleh Matt Hobbs, sebahagian besar 404 respons berasal dari favicon yang hilang, permintaan muat naik WordPress, permintaan JavaScript yang rusak, fail manifes serta fail CSS dan fon. Setiap kali pelanggan meminta aset yang tidak ada, mereka akan menerima respons 404 - dan selalunya respons itu sangat besar.

Pastikan untuk memeriksa dan mengoptimumkan strategi caching untuk 404 halaman anda. Tujuan kami adalah untuk menyediakan HTML ke penyemak imbas hanya apabila mengharapkan respons HTML, dan mengembalikan muatan ralat kecil untuk semua respons lain. Menurut Matt, "jika kita meletakkan CDN di depan asal kita, kita berpeluang menyimpan respons 404 halaman di CDN. Itu berguna kerana tanpanya, memukul halaman 404 dapat digunakan sebagai vektor serangan DoS, oleh memaksa server asal untuk menjawab setiap permintaan 404 daripada membiarkan CDN bertindak balas dengan versi cache. "

Ralat 404 bukan sahaja boleh menjejaskan prestasi anda, tetapi juga dapat menyebabkan lalu lintas, jadi ada baiknya anda memasukkan halaman ralat 404 dalam rangkaian pengujian Rumah Api anda, dan mengesan skornya dari masa ke masa.

Sudah tentu, persetujuan sebenarnya mungkin akan mengubah kesan skrip terhadap prestasi keseluruhan, jadi, seperti yang dinyatakan oleh Boris Schapira, kami mungkin ingin mengkaji beberapa profil prestasi web yang berbeza:

  • Persetujuan ditolak sepenuhnya,
  • Persetujuan ditolak sebahagiannya,
  • Persetujuan diberikan sepenuhnya.
  • Pengguna belum bertindak atas permintaan izin (atau permintaan itu disekat oleh penyekat kandungan),

Lazimnya, arahan persetujuan cookie tidak boleh memberi kesan kepada CLS, tetapi kadang-kadang berlaku, jadi pertimbangkan untuk menggunakan pilihan sumber terbuka dan bebas Osano atau cookie-izin-box.

Secara amnya, perlu dikaji persembahan pop timbul kerana anda perlu menentukan ofset mendatar atau menegak peristiwa tetikus dan meletakkan pop timbul dengan betul pada jangkar. Noam Rosenthal berkongsi pembelajaran pasukan Wikimedia dalam artikel Kajian kes prestasi Web: Pratonton halaman Wikipedia (juga tersedia sebagai video dan minit).

Cth. anda mungkin ingin memastikan bahawa tidak ada gambar di bahagian atas yang malas dimuat. Anda boleh menyesuaikan coretan untuk keperluan anda, mis. untuk menonjolkan fon web yang tidak digunakan, atau mengesan fon ikon. Alat kecil yang bagus untuk memastikan bahawa kesilapan dapat dilihat semasa melakukan debug, atau hanya untuk mengaudit projek semasa dengan sangat cepat.

Apabila bercakap mengenai Waktu Cepat untuk Interaktif, biasanya kita bermaksud petunjuk bagaimana tidak lama lagi pengguna boleh berinteraksi dengan halaman dengan mengklik atau mengetuk pautan dan butang. Konteksnya sedikit berbeza dengan pembaca skrin. Dalam kes itu, Waktu pantas untuk Interaktif bermaksud berapa banyak masa berlalu sehingga pembaca skrin boleh mengumumkan navigasi pada halaman tertentu dan pengguna pembaca skrin sebenarnya boleh menekan papan kekunci untuk berinteraksi.

Léonie Watson telah memberikan ceramah terbuka mengenai prestasi kebolehaksesan dan khususnya kesan pemuatan lambat pada kelewatan pengumuman pembaca skrin. Pembaca skrin digunakan untuk pengumuman pantas dan navigasi pantas, dan oleh itu berpotensi menjadi lebih sabar daripada pengguna yang melihat.

Halaman besar dan manipulasi DOM dengan JavaScript akan menyebabkan kelewatan pengumuman pembaca skrin. Kawasan yang belum diterokai yang dapat menggunakan perhatian dan pengujian kerana pembaca skrin tersedia di setiap platform (Jaws, NVDA, Voiceover, Narrator, Orca).

Cuba gunakan penyelesaian RUM untuk memantau perubahan prestasi dari masa ke masa. Untuk alat ujian automatik unit-test-sama, anda boleh menggunakan k6 dengan API skripnya. Juga, perhatikan SpeedTracker, Mercusuar dan Kaliber.

Menang Pantas

Senarai ini cukup lengkap, dan menyelesaikan semua pengoptimuman mungkin memerlukan masa yang lama. Oleh itu, jika anda hanya mempunyai 1 jam untuk mendapatkan peningkatan yang ketara, apa yang anda akan lakukan? Mari kita rebus semuanya 17 buah gantung rendah. Jelas, sebelum anda memulakan dan setelah anda selesai, ukur hasilnya, termasuk Cat Isi Masa Terbesar dan Waktu Untuk Interaktif pada sambungan 3G dan kabel.

  1. Ukur pengalaman dunia nyata dan tetapkan matlamat yang sesuai. Bertujuan untuk sekurang-kurangnya 20% lebih pantas daripada pesaing terpantas anda. Tetap berada dalam Cat Kandungan Terbesar & 2.5s, Kelewatan Input Pertama & 100ms, Masa untuk Interaktif & 5s pada 3G perlahan, untuk lawatan berulang, TTI & lt 2s. Optimumkan sekurang-kurangnya untuk Cat Berguna Pertama dan Masa Untuk Interaktif.
  2. Optimumkan gambar dengan Squoosh, mozjpeg, guetzli, pingo dan SVGOMG, dan sajikan AVIF / WebP dengan CDN gambar.
  3. Sediakan CSS kritikal untuk templat utama anda, dan sebariskannya dalam & lthead & gt setiap templat. Untuk CSS / JS, beroperasi dengan anggaran saiz fail kritikal maks. 170KB gzip (0.7MB dinyahkompresi).
  4. Potong, optimasi, tangguhkan dan skrip pemalas. Melabur dalam konfigurasi bundler anda untuk menghilangkan kelebihan dan periksa alternatif yang ringan.
  5. Selalu hoskan aset statik anda sendiri dan selalu lebih suka memilih aset pihak ketiga sendiri. Hadkan kesan skrip pihak ketiga. Gunakan fasad, muat widget pada interaksi dan berhati-hati dengan coretan anti-kerlipan.
  6. Bersikap selektif semasa memilih kerangka. Untuk aplikasi satu halaman, kenal pasti halaman kritikal dan layari secara statik, atau sekurang-kurangnya prerender mereka, dan gunakan hidrasi progresif pada tahap komponen dan modul import pada interaksi.
  7. Penyampaian sisi pelanggan sahaja bukan pilihan yang baik untuk prestasi. Prerender jika halaman anda tidak banyak berubah, dan menangguhkan boot kerangka jika anda boleh. Sekiranya boleh, gunakan penstriman dari sisi pelayan streaming.
  8. Layan kod warisan hanya untuk penyemak imbas lama dengan & ltscript type = "module" & gt dan modul / corak nomodul.
  9. Eksperimen dengan menyusun semula peraturan CSS anda dan menguji CSS dalam badan.
  10. Tambahkan petunjuk sumber untuk mempercepat penghantaran dengan dns-lookup, preonnect, prefetch, preload dan prerender yang lebih pantas.
  11. Subset fon web dan muatkan secara tidak segerak, dan gunakan paparan fon dalam CSS untuk rendering pertama yang cepat.
  12. Periksa bahawa header cache HTTP dan header keselamatan diset dengan betul.
  13. Dayakan pemampatan Brotli pada pelayan. (Sekiranya itu tidak mungkin, sekurang-kurangnya pastikan pemampatan Gzip diaktifkan.)
  14. Aktifkan kesesakan TCP BBR selagi pelayan anda berjalan pada kernel Linux versi 4.9+.
  15. Aktifkan stapling OCSP dan IPv6 jika boleh. Sentiasa berikan sijil DV yang disertakan OCSP.
  16. Aktifkan pemampatan HPACK untuk HTTP / 2 dan pindah ke HTTP / 3 jika tersedia.
  17. Aset cache seperti fon, gaya, JavaScript dan gambar dalam cache pekerja perkhidmatan.

Muat turun Senarai Semak (PDF, Halaman Apple)

Dengan mempertimbangkan senarai semak ini, anda harus bersedia untuk sebarang jenis projek prestasi depan. Jangan ragu untuk memuat turun PDF yang siap dicetak dari senarai semak dan juga dokumen Apple Pages yang boleh diedit untuk menyesuaikan senarai semak untuk keperluan anda:

Sekiranya anda memerlukan alternatif, anda juga boleh menyemak senarai semak bahagian depan oleh Dan Rublic, "Senarai Semak Prestasi Web Pereka" oleh Jon Yablonski dan Senarai Semak Frontend.

Jom bergerak!

Sebilangan pengoptimuman mungkin berada di luar jangkauan kerja atau anggaran anda atau mungkin berlebihan kerana kod lama yang harus anda tangani. Baiklah! Gunakan senarai semak ini sebagai panduan umum (dan semoga komprehensif), dan buat senarai masalah anda sendiri yang sesuai dengan konteks anda. Tetapi yang paling penting, uji dan ukur projek anda sendiri untuk mengenal pasti masalah sebelum mengoptimumkan. Hasil prestasi gembira pada tahun 2021, semua orang!

Ucapan terima kasih yang tidak terhingga kepada Guy Podjarny, Yoav Weiss, Addy Osmani, Artem Denysov, Denys Mishunov, Ilya Pukhalski, Jeremy Wagner, Colin Bendell, Mark Zeman, Patrick Meenan, Leonardo Losoviz, Andy Davies, Rachel Andrew, Anselm Hannemann, Barry Pollard, Patrick 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 dan Rodney Rehm untuk meninjau artikel ini, serta komuniti hebat kami yang telah berkongsi teknik dan pelajaran yang diperoleh dari kerjanya dalam pengoptimuman prestasi agar semua orang dapat menggunakan. Anda benar-benar hebat!


Sentiasa Berfikir untuk G E the E xtra M ile

71% pelanggan mengatakan bahawa jika mereka menganggap jenama mengutamakan keuntungan berbanding orang, mereka akan hilang kepercayaan terhadap jenama itu selama-lamanya. Pada masa-masa yang mencabar, adalah tanggungjawab anda sebagai jenama dan perkhidmatan pelanggan untuk memberi dan menyokong masyarakat setempat anda.

Contohnya semasa COVID-19, restoran menawarkan makanan dan perkhidmatan penghantaran percuma kepada pekerja barisan hadapan. Beberapa kedai juga memasang stesen sanitasi yang boleh digunakan secara bebas oleh pelanggan.

Kevin adalah perunding pemasaran kandungan yang membantu syarikat perisian membina corong pemasaran dan melaksanakan kempen pemasaran kandungan untuk meningkatkan petunjuk masuk mereka.


Tonton videonya: Cara Sederhana Melayani Pelanggan dengan Baik


Komen:

  1. Gretel

    Not a bad blog, read it - added it to bookmarks, write more, I will follow the RSS.

  2. Miguel

    Saya memohon maaf, tetapi bolehkah anda menerangkan dengan lebih terperinci.

  3. Gillean

    Mari bincang, berikan saya apa yang perlu saya katakan mengenai isu ini.

  4. Amphitryon

    Apa kata-kata yang diperlukan ... Hebat, idea yang sangat baik

  5. Eldan

    Maksud saya, anda membenarkan kesilapan itu. Saya boleh mempertahankan kedudukan saya. Tulis kepada saya dalam PM.



Tulis mesej