Rumah > hujung hadapan web > tutorial js > Aplikasi Web Progresif: Kursus Kemalangan

Aplikasi Web Progresif: Kursus Kemalangan

Jennifer Aniston
Lepaskan: 2025-02-16 08:56:15
asal
744 orang telah melayarinya

Aplikasi Web Progresif: Kursus Kemalangan

Aplikasi Web Progresif (PWAS) Cuba untuk bertindih di dunia aplikasi web mudah alih dan aplikasi mudah alih asli dengan menawarkan ciri -ciri terbaik masing -masing kepada pengguna mudah alih.

syarat, dan mereka mempunyai sokongan luar talian, pemuatan segera dan pemberitahuan push. Konsep PWAS pertama kali diperkenalkan oleh Google, dan masih disokong oleh banyak ciri krom dan alat yang hebat, seperti Lighthouse, alat sumber terbuka untuk aksesibiliti, prestasi dan pengauditan kemajuan yang akan kita lihat sedikit kemudian.

Sepanjang kursus kemalangan ini, kami akan membina PWA dari awal dengan ES6 dan bertindak balas dan mengoptimumkan langkah demi langkah dengan mercusuar sehingga kami mencapai hasil terbaik dari segi UX dan prestasi.

istilah progresif semata -mata bermaksud bahawa PWA direka bentuk sedemikian Tiada ciri canggih.

Takeaways Key

Aplikasi asli boleh diedarkan dan boleh dimuat turun dari App Store masing -masing OS Mobile. Aplikasi web mudah alih, sebaliknya, boleh diakses dari dalam pelayar web dengan hanya memasukkan alamat atau URL mereka. Dari sudut pandangan pengguna, melancarkan penyemak imbas dan menavigasi ke alamat adalah lebih mudah daripada pergi ke App Store dan memuat turun, memasang, kemudian melancarkan aplikasi. Dari sudut pandang pemaju/pemilik, membayar yuran sekali untuk mendapatkan akaun App Store dan kemudian memuat naik aplikasi mereka untuk diakses oleh pengguna di seluruh dunia adalah lebih baik daripada harus berurusan dengan kerumitan web hosting.

Aplikasi asli boleh digunakan di luar talian. Dalam kes data jauh yang perlu diambil dari beberapa pelayan API, aplikasinya dapat dengan mudah dikandung untuk menyokong beberapa jenis caching SQLite data terkini yang diakses.

Aplikasi web mudah alih boleh diindeks oleh enjin carian seperti Google, dan melalui pengoptimuman enjin carian anda boleh mencapai lebih banyak pengguna. Ini juga berlaku untuk aplikasi asli, kerana kedai aplikasi mempunyai enjin carian mereka sendiri di mana pemaju boleh menggunakan teknik yang berbeza - biasanya dikenali sebagai Pengoptimuman App Store - untuk mencapai lebih banyak pengguna.

Apl asli dimuatkan dengan serta -merta, sekurang -kurangnya dengan skrin percikan, sehingga semua sumber siap untuk aplikasi dilaksanakan.

Ini adalah perbezaan yang paling penting. Setiap pendekatan untuk pengedaran aplikasi mempunyai kelebihan untuk pengguna akhir (mengenai pengalaman pengguna, ketersediaan dll) dan pemilik aplikasi (mengenai kos, jangkauan pelanggan dll.). Mengambil kira itu, Google memperkenalkan PWA untuk membawa ciri -ciri terbaik setiap sisi ke dalam satu konsep. Aspek -aspek ini diringkaskan dalam senarai ini yang diperkenalkan oleh Alex Russell, seorang jurutera Google Chrome. (Sumber: jarang dinyatakan.)

  • Responsif: Untuk menyesuaikan sebarang faktor bentuk.
  • Sambungan Bebas: Berkenaan dengan pekerja perkhidmatan untuk membiarkan mereka bekerja di luar talian.
  • interaksi seperti aplikasi: Mengamalkan model aplikasi kandungan shell untuk membuat Navigasi & Interaksi Appy.
  • Segar: Transparently sentiasa up-to-date terima kasih kepada proses kemas kini pekerja perkhidmatan.
  • selamat: Dihidangkan melalui TLS (keperluan pekerja perkhidmatan) untuk mengelakkan pengintipan.
  • ditemui: boleh dikenalpasti sebagai "aplikasi" terima kasih kepada W3C yang diterangkan dan skop pendaftaran pekerja perkhidmatan yang membolehkan enjin carian mencari mereka.
  • Re-engageable: boleh mengakses uis os os; mis. pemberitahuan tolak.
  • Dipasang: ke skrin utama melalui arahan yang disediakan penyemak imbas, membolehkan pengguna untuk "menyimpan" aplikasi yang mereka dapati paling berguna tanpa kerumitan kedai aplikasi.
  • Linkable: Bermakna mereka sifar-geseran, sifar dipasang, dan mudah dikongsi. Kuasa sosial URL penting.

Lighthouse

Lighthouse adalah alat untuk mengaudit aplikasi web yang dibuat oleh Google. Ia disepadukan dengan alat dev Chrome dan boleh dicetuskan dari panel audit.

anda juga boleh menggunakan Lighthouse sebagai alat NodeJS CLI:

<span>npm install -g lighthouse  
</span>
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

anda kemudian boleh menjalankannya dengan:

lighthouse https://sitepoint.com/
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Lighthouse juga boleh dipasang sebagai sambungan Chrome, tetapi Google mengesyorkan menggunakan versi yang disepadukan dengan DevTools dan hanya menggunakan pelanjutan jika anda tidak dapat menggunakan DevTools.

Sila ambil perhatian bahawa anda perlu memasang Chrome pada sistem anda untuk dapat menggunakan Lighthouse, walaupun anda menggunakan versi berasaskan CLI.

membina PWA pertama anda dari awal

Dalam bahagian ini, kami akan membuat aplikasi web progresif dari awal. Pertama, kami akan membuat aplikasi web mudah menggunakan API React dan Reddit. Seterusnya, kami akan menambah ciri PWA dengan mengikuti arahan yang disediakan oleh Laporan Mercusuar.

Sila ambil perhatian bahawa Reddit API yang tidak disahkan oleh orang awam mempunyai tajuk CORS yang didayakan supaya anda boleh memakannya dari aplikasi klien anda tanpa pelayan perantara.

Sebelum kita memulakan, kursus ini akan menganggap anda mempunyai persediaan persekitaran pembangunan dengan NodeJS dan NPM dipasang. Sekiranya anda tidak, mulakan dengan Homestead yang hebat, yang menjalankan versi terkini masing -masing dan bersedia untuk pembangunan dan ujian keluar dari kotak.

Kami mulakan dengan memasang Create React App, boilerplate projek yang dibuat oleh pasukan React yang menyelamatkan anda dari kerumitan konfigurasi Webpack.

<span>npm install -g lighthouse  
</span>
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Senibina Shell Aplikasi

Shell Aplikasi adalah konsep penting aplikasi web progresif. Ia hanya kod HTML, CSS dan JavaScript yang minimum yang bertanggungjawab untuk memberikan antara muka pengguna.

Aplikasi Web Progresif: Kursus Kemalangan

Shell aplikasi ini mempunyai banyak manfaat untuk prestasi. Anda boleh cache shell aplikasi jadi apabila pengguna melawat aplikasi anda pada masa akan datang, ia akan dimuatkan dengan serta -merta kerana penyemak imbas tidak perlu mengambil aset dari pelayan jauh.

Untuk membina UI mudah kami akan menggunakan UI Bahan, pelaksanaan Reka Bentuk Google dalam React.

Mari pasang pakej dari npm:

lighthouse https://sitepoint.com/
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Next Open Src/app.js kemudian tambahkan:

<span>npm install -g create-react-app
</span>create-react-app react-pwa
<span>cd react-pwa/
</span>
Salin selepas log masuk
Salin selepas log masuk
Seterusnya kita perlu mengambil jawatan reddit menggunakan dua kaedah fetchfirst () dan fetchNext ():

<span>npm install material-ui --save
</span>
Salin selepas log masuk
anda boleh mencari kod sumber dalam repositori github ini.

Sebelum anda boleh menjalankan audit terhadap aplikasi anda, anda perlu membuat binaan dan melayani aplikasi anda secara tempatan menggunakan pelayan tempatan:

<span>import <span>React, { Component }</span> from 'react';
</span><span>import <span>MuiThemeProvider</span> from 'material-ui/styles/MuiThemeProvider';
</span><span>import <span>AppBar</span> from 'material-ui/AppBar';
</span><span>import <span>{Card, CardActions, CardHeader,CardTitle,CardText}</span> from 'material-ui/Card';
</span><span>import <span>FlatButton</span> from 'material-ui/FlatButton';
</span><span>import <span>IconButton</span> from 'material-ui/IconButton';
</span><span>import <span>NavigationClose</span> from 'material-ui/svg-icons/navigation/close';
</span>
<span>import logo from './logo.svg';
</span><span>import './App.css';
</span>
<span>class App extends Component {
</span>
  <span>constructor(props) {
</span>    <span>super(props);
</span>
    <span>this.state = {
</span>      <span>posts: []
</span>    <span>};
</span>  <span>}
</span>
  <span>render() {
</span>    <span>return (
</span>
      <span><MuiThemeProvider>
</span>        <span><div>
</span>          <span><AppBar
</span>            title<span>={<span >React PWA</span>}
</span>
            iconElementLeft<span>={<IconButton><NavigationClose /></IconButton>}
</span>            iconElementRight<span>={<FlatButton onClick={() => this.fetchNext('reactjs', this.state.lastPostName)} label="next" />
</span>            <span>}
</span>          <span>/>
</span>
          <span>{this.state.posts.map(function (el<span>, index</span>) {
</span>            <span>return <Card key={index}>
</span>              <span><CardHeader
</span>                title<span>={el.data.title}
</span>
                subtitle<span>={el.data.author}
</span>                actAsExpander<span>={el.data.is_self === true}
</span>                showExpandableButton<span>={false}
</span>              <span>/>
</span>
              <span><CardText expandable={el.data.is_self === true}>
</span>                <span>{el.data.selftext}
</span>              <span></CardText>
</span>              <span><CardActions>
</span>                <span><FlatButton label="View" onClick={() => {
</span>                  <span>window.open(el.data.url);
</span>                <span>}} />
</span>
              <span></CardActions>
</span>            <span></Card>
</span>          <span>})}
</span>

          <span><FlatButton onClick={() => this.fetchNext('reactjs', this.state.lastPostName)} label="next" />
</span>        <span></div>
</span>      <span></MuiThemeProvider>
</span>
    <span>);
</span>  <span>}
</span><span>}
</span>
<span>export default App;
</span>
Salin selepas log masuk
Perintah ini memanggil skrip binaan dalam pakej.json dan menghasilkan binaan dalam folder React-PWA/Build.

Sekarang anda boleh menggunakan mana -mana pelayan tempatan untuk melayani aplikasi anda. Di Homestead bertambah baik, anda hanya boleh menunjuk tuan rumah maya nginx ke folder binaan dan buka homestead.app dalam penyemak imbas, atau anda boleh menggunakan pakej servis melalui NodeJS:

  <span>fetchFirst(url) {
</span>    <span>var that = this;
</span>    <span>if (url) {
</span>      <span>fetch('https://www.reddit.com/r/' + url + '.json').then(function (response) {
</span>        <span>return response.json();
</span>      <span>}).then(function (result) {
</span>
        that<span>.setState({ posts: result.data.children, lastPostName: result.data.children[result.data.children.length - 1].data.name });
</span>
        <span>console.log(that.state.posts);
</span>      <span>});
</span>    <span>}
</span>  <span>}  
</span>  <span>fetchNext(url<span>, lastPostName</span>) {
</span>    <span>var that = this;
</span>    <span>if (url) {
</span>      <span>fetch('https://www.reddit.com/r/' + url + '.json' + '?count=' + 25 + '&after=' + lastPostName).then(function (response) {
</span>        <span>return response.json();
</span>      <span>}).then(function (result) {
</span>
        that<span>.setState({ posts: result.data.children, lastPostName: result.data.children[result.data.children.length - 1].data.name });
</span>        <span>console.log(that.state.posts);
</span>      <span>});
</span>    <span>}
</span>  <span>}
</span>  <span>componentWillMount() {
</span>
     <span>this.fetchFirst("reactjs");
</span><span>}
</span>
Salin selepas log masuk
dengan servis, aplikasi anda akan dihidangkan secara tempatan dari http: // localhost: 5000/.

Aplikasi Web Progresif: Kursus Kemalangan Anda boleh mengaudit aplikasi anda tanpa sebarang masalah, tetapi sekiranya anda ingin mengujinya dalam peranti mudah alih, anda juga boleh menggunakan perkhidmatan seperti surge.sh untuk menggunakannya dengan satu arahan!

<span>npm run build
</span>
Salin selepas log masuk

Seterusnya, lonjakan lonjakan dari dalam mana -mana direktori untuk menerbitkan direktori itu ke web.

anda boleh mencari versi yang dihoskan aplikasi ini dari pautan ini.

Sekarang mari kita buka Chrome Devtools, pergi ke Audit Panel dan klik pada melakukan audit.

dari laporan yang kita dapat lihat kita sudah mempunyai skor 45/100 untuk aplikasi web progresif dan 68/100 untuk prestasi. Aplikasi Web Progresif: Kursus Kemalangan

Di bawah aplikasi web progresif kami mempunyai 6 audit gagal dan 5 audit lulus. Itu kerana projek yang dihasilkan sudah mempunyai beberapa ciri PWA yang ditambahkan secara lalai, seperti manifes web, meta viewport dan tag .

Di bawah Prestasi Kami mempunyai diagnostik dan metrik yang dikira yang berbeza, seperti cat pertama yang bermakna, indeks kelajuan interaktif, interaktif, interaktif yang konsisten, dan dianggarkan latensi input. Kami akan melihat perkara ini kemudian.

Lighthouse mencadangkan peningkatan prestasi beban halaman dengan mengurangkan panjang rantai render kritikal sama ada dengan mengurangkan saiz muat turun atau menangguhkan muat turun sumber yang tidak perlu.

Sila ambil perhatian bahawa skor prestasi dan nilai metrik boleh berubah antara sesi pengauditan yang berbeza pada mesin yang sama, kerana ia dipengaruhi oleh banyak keadaan yang berbeza -beza seperti keadaan rangkaian semasa anda dan juga keadaan mesin semasa anda.

Mengapa Page Load Prestasi dan Matter Speed ​​

Menurut DoubleClick (sebuah syarikat pengiklanan Google), 53% lawatan tapak mudah alih ditinggalkan jika memerlukan lebih dari 3 saat untuk memuatkan halaman. Dengan mengoptimumkan prestasi dan kelajuan beban halaman, PWAS menawarkan pengalaman web segera kepada pengguna melalui satu set teknik dan strategi yang akan kita lihat seterusnya.

Pertimbangkan prestasi

sebelum anda mula membina pwa anda

majoriti aplikasi sisi klien dibina menggunakan beberapa jenis perpustakaan atau rangka kerja JavaScript seperti React, Preact, Sudular, Vue dan lain-lain. Jika anda sedang membina PWA, anda perlu memastikan anda memilih perpustakaan pertama mudah alih Atau, dengan kata lain, perpustakaan yang direka untuk web mudah alih di tempat pertama. Jika tidak, mengoptimumkan aplikasi anda untuk prestasi akan menjadi misi yang mustahil.

Anda perlu menggunakan alat ujian yang berbeza, seperti Chrome Devtools, Lighthouse, Google PagesPeed dan lain -lain, untuk menguji aplikasi anda dengan berat di bawah keadaan rangkaian yang berbeza dan simulasi, jadi anda boleh mengoptimumkan prestasi beban halaman aplikasi anda.

metrik prestasi PWA yang anda perlukan untuk memakai radar anda

Anda boleh menggunakan Lighthouse untuk mengukur dan mengoptimumkan prestasi beban halaman aplikasi anda dengan metrik, diagnostik, dan peluang yang berbeza.

Lighthouse menggunakan metrik yang berbeza. Mari kita tutup mereka satu demi satu:

Cat pertama yang bermakna

Cat pertama yang bermakna adalah ukuran yang hanya menunjukkan masa di mana pengguna dapat melihat kandungan yang bermakna atau utama pada skrin. Semakin rendah audit ini, semakin baik prestasi aplikasi anda.

inilah metrik ini untuk aplikasi kami.

Aplikasi Web Progresif: Kursus Kemalangan kita melihat bahawa dari 1.3s penyemak imbas mula menjadikan latar belakang kosong, kemudian dari 2S pelayar mula memberikan header, 2.4s kedua -dua butang pada tajuk dan bahagian bawah diberikan. Ia tidak sampai kedua yang kedua bahawa jawatan itu diberikan. Seluruh proses mengambil masa 3.4 saat dan cat pertama bermakna sama dengan butang

2.340ms

- apabila header tanpa seterusnya butang diberikan. Cat pertama bermakna benar -benar bergantung kepada apa yang boleh kita pertimbangkan sebagai bermakna, yang boleh berbeza antara pengguna yang berbeza. Jika pengguna hanya berminat untuk membaca siaran, maka cat pertama yang bermakna untuk mereka adalah selepas tanda 3 saat. Anda dapat melihat bagaimana Google mengira metrik ini dari dokumen ini.

Aplikasi Web Progresif: Kursus Kemalangan

Ini adalah satu lagi filem untuk aplikasi yang sama di mana Lighthouse melaporkan FMP sebagai

2.560ms pada tangkapan skrin terakhir di mana tajuk utama dipaparkan sepenuhnya di kawasan di atas. Kedua, anda dapat melihat bahawa halaman itu diberikan secara progresif, tidak sekaligus, yang merupakan petunjuk prestasi yang baik.

anda boleh mengoptimumkan langkah ini dengan mengoptimumkan laluan rendering kritikal.

jalan rendering kritikal

Laluan rendering kritikal adalah konsep yang berkaitan dengan bagaimana pelayar web memberikan halaman - iaitu, dari saat pertama menerima aset HTML, CSS dan JavaScript ke langkah di mana pelayar memproses dan menjadikan kandungan yang bermakna. Untuk mengoptimumkan laluan rendering kritikal, anda perlu memberi keutamaan yang lebih tinggi kepada kandungan yang berkaitan dengan tindakan semasa pengguna. Iaitu, jika mereka hendak melawat aplikasi anda, anda boleh mulakan dengan terlebih dahulu memaparkan bahagian UI yang kelihatan, atau apa yang dipanggil kawasan di atas.

Untuk maklumat lanjut, anda boleh membaca "mengoptimumkan laluan rendering kritikal".

Anda juga boleh melihat senarai alat yang dikendalikan ini untuk merangka aset CSS kritikal. Periksa juga alat ini untuk merenung JavaScript dan aset lain:

inliner: utiliti nod untuk imej inline, CSS dan javascript untuk laman web
  • Sumber Inline: Alat untuk menggabungkan sumber JS, CSS, dan IMG yang ditandatangani dalam html
  • inline-source-cli: alat CLI untuk sumber inline.
  • Rantai Permintaan Kritikal

Rantaian Permintaan Kritikal adalah konsep yang berkaitan dengan laluan rendering kritikal dan boleh diwakili oleh rajah yang memecah sumber kritikal untuk menjadikan halaman, berapa banyak masa setiap sumber yang diperlukan dan berapa banyak bait untuk dimuat turun untuk setiap sumber. Anda boleh menggunakan rajah rantaian permintaan kritikal untuk mendapatkan pemahaman yang lebih baik tentang sumber kritikal untuk menghapuskan, menangguhkan atau menandakan sebagai async. Berikut adalah pukulan skrin dari contoh PWA contoh kami:

Sekarang mari kita cuba menyelesaikan masalah ini menggunakan sumber inline dan inline-source-cli: Aplikasi Web Progresif: Kursus Kemalangan

Kami kemudian menavigasi di dalam folder Build dan buka index.html, kemudian tambahkan kata kunci secara sebaris ke dan <script> elemen yang kita mahu sebaris: </script>

<span>npm install -g lighthouse  
</span>
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

mari kita sebaliknya sumber -sumber ini:

lighthouse https://sitepoint.com/
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

<span>npm install -g create-react-app
</span>create-react-app react-pwa
<span>cd react-pwa/
</span>
Salin selepas log masuk
Salin selepas log masuk
dengan menggabungkan aset CSS dan JavaScript, kami telah mengurangkan rantai permintaan kritikal kepada 2.

interaktif pertama dan konsisten interaktif

Kedua -dua metrik ini menunjukkan masa untuk pengguna dapat berinteraksi dengan aplikasinya. Kedua-dua metrik menyatakan keupayaan dan kebolehgunaan, tetapi ada perbezaan di antara mereka. Langkah -langkah interaktif pertama apabila halaman adalah sedikit interaktif, sementara langkah -langkah interaktif secara konsisten apabila halaman itu interaktif sepenuhnya.

anda boleh mengoptimumkan masa untuk menjadi interaktif dengan mengoptimumkan laluan rendering kritikal.

Indeks kelajuan persepsi

Indeks kelajuan persepsi adalah metrik yang mengukur prestasi visual di atas halaman sambil mengambil kira kestabilan susun atur (tiada anjakan unsur UI secara tiba-tiba). Ia hanya menunjukkan betapa cepatnya kandungan halaman kelihatan penduduk.

PSI adalah versi yang diubahsuai dari metrik indeks SI atau kelajuan, yang merupakan masa purata di mana kawasan di atas (kelihatan) di atas dipaparkan tanpa mengambil kira kestabilan visual.

anda juga boleh mengoptimumkan metrik ini dengan mengoptimumkan laluan rendering kritikal.

anggaran latency input

anggaran latency input adalah metrik yang menunjukkan apabila benang utama bersedia untuk memproses input.

anda boleh membaca lebih lanjut mengenai metrik ini dan bagaimana lulus di sini.

masa untuk pertama byte (ttfb)

Wikipedia mentakrifkan TTFB sebagai:

Masa untuk Byte Pertama (TTFB) adalah pengukuran yang digunakan sebagai petunjuk responsif pelayan web atau sumber rangkaian lain. TTFB mengukur tempoh dari pengguna atau klien yang membuat permintaan HTTP ke bait pertama halaman yang diterima oleh penyemak imbas klien.

Anda boleh menggunakan alat seperti WebpageTest dan Lighthouse untuk mengukur TTFB PWA anda. Untuk maklumat lanjut, lihat pautan ini.

mari kita lihat satu set konsep dan teknik biasa yang digunakan oleh pemaju untuk mengoptimumkan metrik ini.

Pembahagian kod dan Chunking berasaskan laluan

Ekosistem JavaScript telah berubah secara drastik pada tahun -tahun kebelakangan ini, dengan alat baru seperti bundlers modul seperti Webpack dan Browserify, yang digunakan untuk membungkus semua skrip ke dalam satu fail. Ini dianggap sebagai amalan yang baik, kerana ia membantu mengurangkan permintaan rangkaian untuk pelbagai fail skrip untuk hanya satu permintaan (untuk mendapatkan seluruh bundle), mengoptimumkan laluan rendering kritikal (tiada aset JavaScript dan CSS yang lama menyekat). Tetapi masalahnya, untuk aplikasi besar, bundle akan mempunyai saiz yang lebih besar, menjadikan proses memuat turun bundle, memprosesnya, kemudian boot aplikasi yang sangat tidak cekap, yang mempengaruhi pengalaman web segera (meningkatkan masa untuk yang pertama bermakna cat dan masa untuk UI menjadi interaktif).

Sebagai penyelesaian untuk masalah ini, aplikasi yang berbeza menggunakan pemisahan kod dan pemisahan berasaskan laluan (memisahkan kod ke dalam ketulan yang hanya diperlukan untuk setiap laluan). Oleh itu, penyemak imbas hanya perlu memuat turun bahagian pertama yang diperlukan untuk menjadikan halaman/laluan pertama, kemudian malas memuatkan ketulan yang tersisa apabila pengguna menavigasi laluan lain.

Rendering sisi pelayan

Rendering sisi pelayan adalah proses menjadikan kandungan awal pada pelayan dan bukannya penyemak imbas-yang mungkin, dalam banyak situasi, meningkatkan prestasi beban halaman, kerana penyemak imbas dapat memaparkan kandungan (HTML biasa) .

Rendering sisi pelayan sahaja tidak akan membantu banyak dalam mengoptimumkan masa untuk pengguna menjadi interaktif, kerana aset JavaScript perlu dimuat turun dan boot.

corak prestasi prpl

PRPL adalah corak prestasi yang menggunakan konsep seperti push http/2, pengepala preload, pekerja perkhidmatan, dan pemuatan malas untuk meningkatkan prestasi penghantaran dan pelancaran PWA.

prpl bermaksud:

Tekan sumber kritikal untuk laluan URL awal
  • Membuat laluan awal
  • Laluan baki pra-cache
  • beban malas dan buat laluan yang tinggal atas permintaan.
Sumber: Google Web Fundamentals

mengoptimumkan prestasi melalui caching

caching adalah proses menyimpan data yang sering diminta di lokasi penyimpanan yang dekat. Untuk web, itulah memori penyemak imbas atau pangkalan data. Penyemak imbas sebenarnya mempunyai lokasi cache yang direka khusus untuk tindak balas rangkaian caching, tetapi pemaju juga boleh memanfaatkan mekanisme penyimpanan lain seperti API Penyimpanan Tempatan HTML5 dan IndexedDB.

Anda boleh cache shell aplikasi (aset yang bertanggungjawab untuk menjadikan UI), data, atau idealnya kedua -duanya. Caching UI adalah penting untuk mencapai pengalaman web segera. Tetapi bagaimana dengan data?

kita boleh mempertimbangkan dua kategori aplikasi di sini. Apl yang hanya memerlukan sambungan rangkaian untuk mendapatkan aset yang bertanggungjawab untuk memberikan UI dan/atau memerlukannya untuk menyediakan fungsi teras. Fikirkan, sebagai contoh, aplikasi yang menyediakan perakaunan peribadi untuk pengguna, yang hanya bergantung kepada algoritma dan pengiraan (CPU tempatan).

Kategori kedua adalah aplikasi yang bergantung kepada pelayan jauh untuk mendapatkan maklumat terkini. Anda mungkin tertanya -tanya mengapa anda perlu data cache, memandangkan ia akan menjadi usang dan pengguna kebanyakannya memerlukan maklumat terkini. Perkara itu, di banyak bahagian di dunia masalahnya bukanlah gangguan kekal sambungan rangkaian, tetapi keadaan yang berubah -ubah rangkaian antara isyarat yang perlahan dan baik, dan itulah yang mempengaruhi pengalaman pengguna walaupun aplikasinya sudah dimuatkan.

Aplikasi ini boleh menggunakan caching data (memanfaatkan API penyegerakan latar belakang) untuk menjamin perkhidmatannya apabila pengguna menavigasi antara halaman, atau bahkan jika mereka pergi dan kembali ke aplikasi dalam masa yang singkat, oleh Secara berterusan menonton keadaan rangkaian, kemudian meneruskan pengambilan/menghantar data tanpa mengganggu pengguna.

Sekarang mari kita menyelesaikan masalah yang gagal untuk skor yang lebih baik.

mendaftarkan pekerja perkhidmatan

Audit gagal pertama mengatakan bahawa aplikasinya tidak mendaftarkan pekerja perkhidmatan. Sebelum menukarnya, mari kita mula -mula memahami pekerja perkhidmatan dan ciri -ciri yang berkaitan.

Pekerja perkhidmatan adalah teknologi penyemak imbas moden yang boleh digunakan sebagai proksi sisi klien yang membolehkan aplikasi anda (dengan memintas permintaan rangkaian) untuk melaksanakan caching untuk menambahkan ciri-ciri seperti pemuatan segera dan sokongan luar talian dan lain-lain

Pekerja perkhidmatan juga boleh digunakan untuk melaksanakan kemas kini dan terlibat dengan pemberitahuan push.

Pekerja perkhidmatan tidak dapat mengakses halaman dom, tetapi boleh berkomunikasi dengan klien (tetingkap, pekerja, atau pekerja kongsi) melalui kaedah postmessage ().

Banyak pelayar API tersedia untuk digunakan di dalam pekerja perkhidmatan, seperti:

  • API Fetch: untuk mengambil kandungan (menghantar permintaan dan mendapatkan respons) dari pelayan jauh
  • API cache: untuk kandungan cache (buat kedai cache respons yang dikemukakan oleh permintaan)
  • The Push API: Untuk mendapatkan pemberitahuan push
  • API Penyegerakan Latar Belakang: Membolehkan aplikasi web menangguhkan tindakan sehingga pengguna mempunyai sambungan yang stabil.

Pekerja perkhidmatan mempunyai banyak acara kitaran hayat yang perlu dikendalikan dengan betul.

  • Acara pemasangan: Anda dapat memasang acara apabila aplikasi pertama kali dikunjungi oleh pengguna dan pekerja perkhidmatan dimuat turun dan dipasang
  • Acara Aktif: dicetuskan selepas memanggil .Register () (selepas memuat turun dan memasang acara)
  • Acara FETCH: Anda mendapat peristiwa dalam kes navigasi dalam skop pekerja perkhidmatan atau sebarang permintaan yang mencetuskan halaman skop.

Projek React sudah mengandungi pekerja perkhidmatan. Kita boleh menggunakannya atau membuat yang baru supaya kita dapat mendapatkan idea yang lebih baik tentang bagaimana pekerja perkhidmatan berfungsi.

Dalam folder awam, mari buat fail baru bernama Service-worker.js, kemudian daftarkannya dari fail awam/index.html dengan menambahkan kod berikut sebelum

Atas ialah kandungan terperinci Aplikasi Web Progresif: Kursus Kemalangan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan