Rumah  >  Artikel  >  rangka kerja php  >  Bagaimana untuk mengoptimumkan prestasi dalam Laravel8? Perkongsian Petua Pengoptimuman

Bagaimana untuk mengoptimumkan prestasi dalam Laravel8? Perkongsian Petua Pengoptimuman

青灯夜游
青灯夜游ke hadapan
2022-10-08 18:23:432088semak imbas

Bagaimana untuk mengoptimumkan prestasi dalam Laravel8? Perkongsian Petua Pengoptimuman

Panduan ini menyenaraikan pelbagai petua pengoptimuman prestasi, daripada pengoptimuman pantas kepada penalaan mendalam, yang boleh membantu membina aplikasi Laravel berprestasi tinggi.

Ramai pelajar di Enlightn membantu kami menulis panduan ini. Jika anda mencari alat prestasi automasi atau keselamatan Laravel, anda mungkin ingin melawati tapak web ini.

Mengapa meningkatkan prestasi?

Tidak dinafikan bahawa pengguna lebih suka apl yang lebih pantas daripada yang dimuatkan dengan perlahan .

Menurut kajian Google, 53% pengguna pada peranti mudah alih akan kehilangan (memilih untuk meninggalkan) jika tapak web mengambil masa lebih daripada 3 saat untuk dimuatkan. Dan purata masa memuatkan untuk tapak web mudah alih ialah kira-kira 15 saat. Inilah sebabnya mengapa prestasi penting!

Setiap saat tambahan yang diperlukan apl anda untuk dimuatkan, semakin rendah kadar penukaran pelanggan anda. Nasib baik, untuk aplikasi Laravel, ini bukan masalah yang sukar untuk diselesaikan.

1 Gunakan keupayaan prestasi terbina dalam untuk menang dengan cepat

Laravel mempunyai beberapa ciri peningkatan prestasi terbina dalam yang boleh digunakan dengan konfigurasi mudah.

Peningkatan prestasi yang paling kritikal ialah cache laluan. Tahukah anda bahawa setiap kali aplikasi Laravel anda dilancarkan, perisian tengah ditentukan, alias diselesaikan, kumpulan laluan diselesaikan, tindakan pengawal laluan ditentukan dan parameter permintaan diproses?

Anda boleh menggunakan arahan Artisan route:cache untuk menyimpan semua maklumat penghalaan yang diperlukan, dengan itu melangkau pemprosesan penghalaan:

php artisan route:cache

Arahan ini boleh memberi anda peningkatan prestasi 5x ganda! Ia adalah pengoptimuman yang paling mudah dan paling berkesan.

Selain caching laluan, Laravel juga menyediakan yang berikut:

Petua: Anda harus memastikan untuk menambah perintah cache di atas pada skrip penggunaan anda supaya ia dicache semula setiap kali anda menggunakan. Jika tidak, sebarang perubahan pada fail penghalaan atau konfigurasi tidak akan ditunjukkan dalam apl.

2. Optimumkan Komposer

Kesilapan biasa yang dilakukan oleh pembangun Laravel ialah memasang semua kebergantungan dalam mod pengeluaran. Beberapa pakej pembangunan, seperti Pencucuhan, rekod pertanyaan, log dan pembuangan dalam ingatan, menyediakan mesej ralat mesra dengan konteks dan memudahkan penyahpepijatan. Walaupun ini berguna dalam pembangunan, ia boleh melambatkan aplikasi anda dalam pengeluaran.

Dalam skrip penggunaan, pastikan anda menggunakan pilihan -no-dev apabila menggunakan Composer untuk memasang pakej pengembangan:

composer install --prefer-dist --no-dev -o

Selain itu, sila pastikan anda menggunakan -o dalam persekitaran pengeluaran seperti yang dinyatakan di atas pilihan. Ini membolehkan Komposer mengoptimumkan autoloader dengan menjana "peta kelas".

Jika apl anda tidak menjana kelas pada masa jalanan, anda boleh memilih untuk menggunakan pilihan --classmap-authoritative dan bukannya pilihan -o untuk pengoptimuman selanjutnya. Sila pastikan anda menyemak dokumentasi Komposer untuk AutoloaderStrategi pengoptimuman.

3 Pilih pemacu yang betul

Pilih pemacu yang betul Cache, baris gilir dan pemacu sesi boleh memberi kesan besar pada prestasi aplikasi.

Untuk caching dalam persekitaran pengeluaran, pemacu cache dalam memori seperti Redis, Memcached atau DynamoDB disyorkan. Anda mungkin mempertimbangkan untuk menggunakan caching sistem fail tempatan untuk persediaan pelayan tunggal, walaupun ini akan menjadi lebih perlahan daripada pilihan cache-ke-memori.

Untuk beratur, disyorkan untuk menggunakan pemandu Redis, SQS atau Beanstalkd. Pemacu baris gilir pangkalan data tidak sesuai untuk persekitaran pengeluaran dan diketahui mempunyai masalah kebuntuan.

Untuk Sesi, pangkalan data, pemacu Redis, Memcached atau DynamoDB disyorkan. Pemacu kuki mempunyai saiz fail dan sekatan keselamatan dan tidak disyorkan untuk persekitaran pengeluaran.

4 Memproses tugasan yang memakan masa melalui baris gilir

Semasa permintaan web biasa, mungkin terdapat beberapa tugasan khusus yang memerlukan banyak perkara. mengambil masa yang lama untuk disiapkan. Laravel mempunyai Sistem Gilir kelas pertama, yang membolehkan kami mengalihkan tugas yang memakan masa ke dalam tugas beratur, membolehkan aplikasi anda bertindak balas terhadap permintaan dengan sangat pantas.

Secara amnya, contoh biasa tugas sedemikian termasuk menghuraikan dan menyimpan fail CSV, berinteraksi dengan API pihak ketiga, menghantar pemberitahuan kepada pengguna, pertanyaan pangkalan data yang lama dan memakan masa serta kemas kini indeks carian.

5. Menetapkan pengepala mampatan HTTP untuk fail teks

Pengepala mampatan boleh memberi kesan yang ketara pada prestasi aplikasi. Pastikan anda mendayakan pemampatan atau CDN pada pelayan web anda untuk fail format teks seperti CSS, JS, XML atau JSON.

Format imej sudah mempunyai algoritma pemampatan yang dilaksanakan dan dalam kebanyakan kes, fail format imej telah dimampatkan dan imej bukan fail format teks (kecuali untuk format SVG, yang merupakan dokumen XML). Oleh itu, format imej tidak memerlukan pemampatan.

Anda boleh menyediakan gzip atau brotli pada pelayan web anda atau CDN (pelayar lama mungkin tidak menyokong brotli) untuk mendapatkan peningkatan prestasi yang besar.

Secara amnya, pemampatan boleh mengurangkan saiz fail kira-kira 80%!

6. Tetapkan pengepala cache HTTP pada sumber statik

Caching boleh meningkatkan prestasi aplikasi anda, terutamanya untuk sumber statik, seperti Imej , fail CSS dan JS. Adalah disyorkan untuk mendayakan pengepala kawalan cache pada pelayan web atau peringkat CDN, jika berkenaan. Jika anda ingin menetapkan pengepala kawalan ini pada aplikasi Larvel dan bukannya WebServer, anda boleh menggunakan perisian tengah kawalan cache Larvel.

Medan pengepala Cache memastikan bahawa penyemak imbas tidak berulang kali meminta sumber statik apabila melawat tapak web beberapa kali. Ini meningkatkan pengalaman pengguna apabila tapak web dimuatkan dengan lebih pantas pada lawatan berikutnya.

Laravel Mix menyediakan fungsi pembersihan cache di luar kotak supaya apabila kod CSS atau JS ditukar, penyemak imbas tidak terus menggunakan kandungan cache lama.

7 Mempercepatkan sumber statik menggunakan perkhidmatan CDN

Rangkaian penghantaran kandungan (CDN) ialah kumpulan pelayan yang diedarkan secara geografi yang menggunakan Pelayan lebih dekat dengan pelawat laman web disediakan. Ini membolehkan pengguna mengalami masa pemuatan yang lebih pantas.

Selain kelajuan pemuatan yang lebih pantas dan masa pemuatan yang lebih singkat, CDN juga mempunyai kelebihan lain, seperti mengurangkan beban pelayan web, perlindungan DDOS dan analisis perkhidmatan sumber statik, dsb.

Sesetengah CDN popular termasuk CloudFlare, AWS CloudFront dan Azure CDN. Kebanyakan CDN mempunyai had percubaan percuma tertentu. Sila pertimbangkan untuk menggunakan CDN untuk meningkatkan prestasi pemuatan sumber statik.

Laravel menyediakan komponen sokongan CDN yang luar biasa Campuran dan fungsi pembantu aset dalam rangka kerja.

8. Minimumkan kod JS dan CSS

Meminimumkan skrip akan mengalih keluar overhed yang tidak perlu daripada Kod aplikasi anda (seperti ulasan kod, ruang kosong, dipendekkan nama pembolehubah, dan pengoptimuman lain). Ini ialah cara biasa dan berkesan untuk mengurangkan saiz fail JS dan CSS dalam persekitaran pengeluaran.

Laravel Mix menyediakan out-of-the-box minimumkan output fungsi untuk skrip pengeluaran anda

9. Gunakan cache dengan bijak

Laravel mempunyai sokongan caching terbina dalam. Caching paling sesuai digunakan untuk beban kerja yang berat membaca. Beban kerja ini selalunya melibatkan pengambilan data atau tugas pemprosesan data yang memakan masa.

Sesetengah senario biasa untuk caching mungkin termasuk:

  • Caching halaman statik: Caching halaman statik ialah sebahagian daripada laman web rasmi Laravel menggunakan Halaman caching cache setiap halaman dokumen.
  • Cache serpihan atau separa: Kadangkala mungkin lebih berguna untuk menyimpan serpihan halaman daripada menyimpan cache keseluruhan halaman. Sebagai contoh, anda mungkin mahu cache pengepala halaman yang mengandungi nama pengguna dan avatar pengguna. Anda boleh cache serpihan pengepala halaman sekali tanpa perlu mengambil data daripada pangkalan data setiap kali.
  • Cache Pertanyaan: Cache pertanyaan mungkin berguna jika aplikasi anda kerap menanyakan pangkalan data untuk item yang jarang berubah. Sebagai contoh, apabila anda menjalankan tapak web e-dagang, anda mungkin mahu menyimpan cache kategori item yang dipaparkan pada halaman utama pusat membeli-belah dan bukannya membaca kategori item ini daripada pangkalan data setiap kali anda melawati pusat membeli-belah.

Ingat bahawa caching tidak berguna untuk long tail (item yang jarang diminta). Sebaliknya, ia harus digunakan dengan berhati-hati untuk sebarang pengambilan data (berbanding dengan kemas kini data) yang kerap berlaku.

Anda juga mesti memastikan bahawa cache tidak sah atau disiram setiap kali kandungan cache berubah. Contohnya, jika anda menyimpan pengepala profil, muat semula cache selepas pengguna mengemas kini gambar profil mereka.

10. Kenal pasti kesesakan prestasi dalam aplikasi anda

Jika sesetengah halaman anda mengambil masa yang lebih lama untuk dimuatkan atau mempunyai penggunaan memori yang lebih tinggi, anda mungkin perlu untuk mengenal pasti kesesakan prestasi. Terdapat banyak alatan dalam ekosistem Laravel untuk membantu anda melakukan ini, termasuk Teleskop Laravel, Laravel Debugbar dan Clockwork.

Beberapa kesesakan prestasi biasa termasuk:

  • N 1 pertanyaan : Jika kod anda melaksanakan satu pertanyaan untuk setiap rekod, ia akan menghasilkan lebih banyak perjalanan pergi balik Rangkaian dan banyak lagi pertanyaan. Ini boleh dilakukan dalam Laravel menggunakan Pramuat Data.
  • Permintaan Pendua: Jika kod anda melaksanakan pertanyaan yang sama beberapa kali semasa mengendalikan permintaan yang sama, ia mungkin melambatkan anda turun Kelajuan aplikasi berjalan. Biasanya, jika berbilang perkhidmatan atau kelas memerlukan set data yang sama, isu ini boleh diselesaikan dengan mengekstrak pengiraan atau pengambilan data ke dalam kelas yang berasingan.
  • Penggunaan memori yang tinggi: Untuk mengurangkan penggunaan memori aplikasi anda, pertimbangkan untuk menggunakan Koleksi malas dan Pecahan pertanyaan untuk mengurangkan jumlah tunggal data diproses. Untuk menyimpan fail, gunakan Penstriman automatik untuk mengurangkan penggunaan memori.
  • Pertanyaan perlahan: Jika pertanyaan mengambil masa terlalu lama untuk dilaksanakan, anda harus mempertimbangkan untuk menggunakan cache pertanyaan dan/atau gunakan pernyataan EXPLAIN ​​​​untuk mengoptimumkan pertanyaan rancangan pelaksanaan.

Jika anda tidak dapat mengenal pasti kesesakan prestasi dalam aplikasi anda menggunakan alat nyahpepijat di atas, anda boleh mempertimbangkan untuk menggunakan alat pemprofilan seperti XDebug atau Blackfire.

Senarai Semak Dalam Talian

Selain itu, berikut adalah senarai semak dalam talian yang lengkap untuk rujukan41 Ringkasan Kursus | Bermula dengan Pengoptimuman》.

Ringkasan

Pengoptimuman prestasi ialah topik yang kekal, tetapi Laravel mempunyai beberapa komponen terbina dalam seperti Campuran, baris gilir dan cache, yang menjadikan Pengoptimuman prestasi kelihatan mudah! Kami harap anda mempelajari sesuatu yang baharu tentang meningkatkan prestasi aplikasi.

Alamat asal: https://laravel-news.com/performance-checklist

Alamat terjemahan: https://learnku.com/laravel/t/55702

[Cadangan berkaitan: tutorial video laravel]

Atas ialah kandungan terperinci Bagaimana untuk mengoptimumkan prestasi dalam Laravel8? Perkongsian Petua Pengoptimuman. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:learnku.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam