Rumah > Artikel > rangka kerja php > Mari kita bincangkan tentang cara mengoptimumkan PHP dan Laravel untuk meningkatkan prestasi aplikasi web
Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Laravel untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web mempunyai banyak barangan. Tetapi cepat bukanlah salah satu daripada mereka. Mari belajar beberapa petua pengoptimuman untuk menjadikan perkara berjalan lebih pantas!
Sejak kelahiran Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Laravel untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web, tiada pembangun PHP yang tidak terpengaruh dengannya. Mereka adalah pembangun peringkat rendah atau pertengahan yang menyukai pembangunan pesat yang Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Laravel untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web sediakan, atau mereka adalah pembangun kanan yang terpaksa mempelajari Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Laravel untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web kerana tekanan pasaran.
Apa pun, tidak dapat dinafikan bahawa Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Laravel untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web telah menghidupkan semula ekosistem PHP (saya pasti tanpa Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Laravel untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web, saya sudah lama meninggalkan dunia PHP).
Petikan daripada ulasan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Laravel untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web
Namun, memandangkan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Laravel untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web berusaha keras untuk memudahkan anda, ini bermakna ia melakukan banyak kerja di bawah tudung , untuk memastikan bahawa anda sebagai pembangun boleh mempunyai pengalaman pengaturcaraan yang selesa. Semua ciri Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Laravel untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web yang kelihatan "ajaib" mempunyai lapisan demi lapisan kod yang perlu dimulakan setiap kali ciri dijalankan. Malah pengecualian mudah akan digerudi ke bahagian bawah (bermula dari ralat, sehingga ke kernel):
Untuk apa yang kelihatan seperti ralat kompilasi dalam paparan , terdapat 18 panggilan Fungsi perlu dikesan. Saya secara peribadi telah menemui 40, mungkin lebih banyak jika anda menggunakan perpustakaan dan pemalam lain.
Intinya ialah secara lalai, lapisan kod bersarang sedemikian menjadikan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Laravel untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web sangat perlahan.
Seberapa lambat Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Laravel untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web?
Sejujurnya, soalan ini mustahil untuk dijawab atas beberapa sebab.
Pertama sekali , pada masa ini tiada piawaian yang diiktiraf, objektif dan munasabah untuk mengukur kelajuan aplikasi rangkaian. Lebih cepat atau lebih perlahan berbanding dengan apa? Dalam keadaan apa?
Kedua , aplikasi web bergantung pada banyak perkara (pangkalan data, sistem fail, rangkaian, cache, dll.), jadi bercakap tentang kelajuan adalah mengarut. Aplikasi web yang sangat pantas ialah aplikasi web yang sangat perlahan jika ia mempunyai pangkalan data yang sangat perlahan.
Tetapi ketidakpastian inilah yang menyebabkan penandaarasan begitu popular. Walaupun ia tidak bermakna (lihat di sini dan di sini ), ia menyediakan beberapa rangka rujukan untuk membantu kita mengelak daripada marah. Oleh itu, adalah lebih baik untuk mengambil sesuatu dengan secubit garam dan memberi kami gambaran kasar dan palsu tentang kelajuan antara rangka kerja PHP.
Berdasarkan kod sumber GitHub yang agak dihormati ini, berikut ialah perbandingan rangka kerja PHP.
Anda mungkin tidak perasan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Laravel untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web ada di sini (walaupun anda menjeling sangat kuat), melainkan anda melemparkan mata anda ke penghujung. Ya, kawan-kawan yang dikasihi, Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Laravel untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web datang yang terakhir! Sekarang, memang, kebanyakan "rangka kerja" ini tidak begitu praktikal malah tidak berguna, tetapi ia memberitahu kami betapa lambatnya Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Laravel untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web berbanding rangka kerja lain yang lebih popular.
Biasanya, "kelambatan" jenis ini tidak muncul dalam aplikasi, kerana aplikasi web harian kami jarang mencapai volum data yang tinggi. Tetapi apabila ia mencapai (contohnya, sehingga 200-500 atau lebih concurrency), pelayan akan mula menyekat dan mati. Pada masa ini, tidak kira berapa banyak perkakasan yang anda buang, ia tidak akan menyelesaikan masalah Kos infrastruktur meningkat dengan cepat, dan cita-cita tinggi pengkomputeran awan anda runtuh.
Tetapi hei, bergembiralah! Artikel ini bukan tentang apa yang tidak boleh dilakukan, tetapi apa yang boleh dilakukan.
Berita baiknya ialah, terdapat banyak perkara yang boleh anda lakukan untuk menjadikan aplikasi Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Laravel untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web anda lebih pantas. Beberapa kali ganda kelajuan. Ya, bukan jenaka. Anda boleh membuat asas kod yang sama pantas dan menjimatkan beratus-ratus dolar sebulan dalam yuran infrastruktur/penghosan. Bagaimana untuk melakukannya? Jom mulakan.
Empat Jenis Pengoptimuman
Pada pendapat saya, pengoptimuman boleh dilakukan pada empat tahap yang berbeza (apabila ia datang kepada aplikasi PHP, iaitu):
Tahap bahasa: Ini bermakna anda menggunakan versi bahasa yang lebih pantas dan mengelakkan ciri/gaya pengekodan tertentu dalam bahasa yang menjadikan kod anda lebih perlahan.
Tahap kerangka: Ini adalah perkara yang akan kami bincangkan dalam artikel ini.
Tahap infrastruktur: Laraskan pengurus proses PHP anda, pelayan web, pangkalan data, dsb.
Tahap perkakasan: Beralih ke penyedia pengehosan perkakasan yang lebih baik, lebih pantas dan berkuasa.
Semua jenis pengoptimuman ini mempunyai kewujudannya (contohnya, pengoptimuman php-fpm adalah sangat kritikal dan berkuasa). Tetapi fokus artikel ini adalah semata-mata pada pengoptimuman jenis 2: yang berkaitan dengan rangka kerja.
Sebenarnya, tiada sebab di sebalik nombor ini, dan juga bukan piawaian yang diterima. Saya hanya mengada-adakan ini. Tolong jangan sesekali memetik saya apabila saya mengatakan "pelayan kami memerlukan pengoptimuman jenis-3" atau ketua pasukan anda akan membunuh anda, mencari saya dan membunuh saya juga.
Kini, akhirnya kita berada di tanah yang dijanjikan.
n 1 masalah pertanyaan adalah masalah biasa apabila menggunakan ORM. Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Laravel untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web mempunyai ORM berkuasa yang dipanggil Eloquent, yang sangat cantik dan sangat mudah sehingga kita sering lupa untuk melihat apa yang berlaku.
Pertimbangkan senario yang sangat biasa: paparkan semua pesanan yang dibuat oleh senarai pelanggan yang ditentukan. Ini adalah perkara biasa dalam sistem e-dagang dan sebarang senarai yang perlu memaparkan semua entiti yang berkaitan dengan sesetengah entiti,
Kita boleh bayangkan mempunyai pengawal seperti ini:
class OrdersController extends Controller { // ... public function getAllByCustomers(Request $request, array $ids) { $customers = Customer::findMany($ids); $orders = collect(); // new collection foreach ($customers as $customer) { $orders = $orders->merge($customer->orders); } return view('admin.reports.orders', ['orders' => $orders]); } }
Hebat ! Apatah lagi anggun dan cantik. ??
Malangnya, menulis kod seperti ini dalam Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Laravel untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web adalah pendekatan yang membawa bencana.
Sebabnya adalah seperti berikut.
Apabila kami menggunakan ORM untuk mencari entiti pelanggan tertentu, pertanyaan SQL seperti ini dihasilkan:
SELECT * FROM customers WHERE id IN (22, 45, 34, . . .);
Ini betul-betul seperti yang dijangkakan. Akibatnya, semua baris yang dikembalikan disimpan dalam koleksi $customers
dalam fungsi pengawal.
Kini kami mengulangi setiap pelanggan satu demi satu dan mendapatkan pesanan mereka. Ini akan melaksanakan pertanyaan berikut...
SELECT * FROM orders WHERE customer_id = 22;
... seberapa kerap pelanggan.
Dengan kata lain, jika kita perlu mendapatkan data pesanan 1000 pelanggan, jumlah pertanyaan pangkalan data yang dilakukan adalah 1 (untuk mendapatkan data semua pelanggan) 1000 (untuk mendapatkan data pesanan setiap pelanggan )=1001. Di sinilah nama n 1 berasal.
Bolehkah kita melakukan yang lebih baik? Dengan menggunakan pemuatan yang bersemangat, kami boleh memaksa ORM untuk melakukan JOIN dan mengembalikan semua data yang diperlukan dalam satu pertanyaan! Seperti ini:
$orders = Customer::findMany($ids)->with('orders')->get();
Struktur data yang terhasil ialah struktur bersarang, sudah tentu, tetapi data pesanan boleh diekstrak dengan mudah. Dalam kes ini, pertanyaan tunggal yang dihasilkan kelihatan seperti ini.
SELECT * FROM customers INNER JOIN orders ON customers.id = orders.customer_id WHERE customers.id IN (22, 45, ...);
Sudah tentu, satu pertanyaan lebih baik daripada seribu pertanyaan lagi. Bayangkan apa yang akan berlaku jika terdapat sepuluh ribu pelanggan untuk berurusan! Dengan kata lain, jika kita juga ingin memaparkan item yang disertakan dalam setiap pesanan, itu adalah mustahil! Ingat, nama teknik ini adalah pramuat, dan ia boleh berguna hampir pada bila-bila masa.
Salah satu sebab fleksibiliti Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Laravel untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web ialah ia mempunyai sejumlah besar fail konfigurasi yang merupakan sebahagian daripada rangka kerja. Ingin menukar cara/di mana gambar disimpan?
Baiklah, ubah suai sahaja fail config/filesystems.php
(sekurang-kurangnya setakat ini). Mahu menggunakan berbilang pemacu baris gilir? Sila terangkan dalam config/queue.php
. Saya baru sahaja membuat pengiraan dan mendapati terdapat 13 fail konfigurasi untuk pelbagai aspek rangka kerja, jadi anda tidak akan kecewa tidak kira apa yang anda mahu ubah.
Memandangkan ciri PHP, setiap kali permintaan web baharu masuk, Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Laravel untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web akan bangun, memulakan segala-galanya dan menghuraikan semua fail konfigurasi ke ketahui cara melakukan perkara yang berbeza kali ini. Ia akan menjadi bodoh jika tiada apa yang berubah hari ini! Membina semula fail konfigurasi untuk setiap permintaan adalah satu pembaziran, yang boleh (sebenarnya, mesti) dielakkan Penyelesaiannya ialah arahan mudah yang disediakan oleh Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Laravel untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web:
php artisan config:cache
Tujuan ini Semua fail konfigurasi yang tersedia adalah. digabungkan menjadi satu fail dan dicache di suatu tempat untuk mendapatkan semula cepat. Pada kali berikutnya permintaan web masuk, Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Laravel untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web hanya akan membaca fail tunggal ini dan mula berfungsi.
Maksudnya, mengkonfigurasi cache ialah operasi yang sangat halus yang mungkin meletup di muka anda. Perangkap terbesar ialah sebaik sahaja anda mengeluarkan arahan ini, sebagai tambahan kepada fail konfigurasi, semua env()
panggilan fungsi di tempat lain akan kembali null
!
Memang masuk akal jika anda memikirkannya dengan teliti. Jika anda menggunakan cache konfigurasi, anda memberitahu rangka kerja: "Anda tahu, saya rasa saya telah menyediakan perkara dengan baik, dan saya pasti 100% tidak mahu ia berubah." anda mahu persekitaran kekal statik, Itulah gunanya .env
fail.
Bercakap mengenainya, berikut adalah beberapa peraturan caching konfigurasi yang kukuh, suci dan tidak boleh dipecahkan:
Hanya lakukan ini pada sistem pengeluaran.
Hanya lakukan ini jika anda sangat-sangat pasti anda mahu membekukan konfigurasi.
Sekiranya berlaku masalah, gunakan php artisan cache:clear
untuk membuat asal tetapan.
Doakan agar kerugian perniagaan tidak besar!
Untuk membantu semua orang, Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Laravel untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web memuatkan sejumlah besar perkhidmatan apabila bangun tidur , Perkhidmatan ini terdapat dalam config/app.php
fail sebagai sebahagian daripada kekunci tatasusunan 'providers'
. Mari kita lihat keadaan saya:
/* |-------------------------------------------------------------------------- | Autoloaded Service Providers |-------------------------------------------------------------------------- | | The service providers listed here will be automatically loaded on the | request to your application. Feel free to add your own services to | this array to grant expanded functionality to your applications. | */ 'providers' => [ /* * Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Laravel untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web Framework Service Providers... */ Illuminate\Auth\AuthServiceProvider::class, Illuminate\Broadcasting\BroadcastServiceProvider::class, Illuminate\Bus\BusServiceProvider::class, Illuminate\Cache\CacheServiceProvider::class, Illuminate\Foundation\Providers\ConsoleSupportServiceProvider::class, Illuminate\Cookie\CookieServiceProvider::class, Illuminate\Database\DatabaseServiceProvider::class, Illuminate\Encryption\EncryptionServiceProvider::class, Illuminate\Filesystem\FilesystemServiceProvider::class, Illuminate\Foundation\Providers\FoundationServiceProvider::class, Illuminate\Hashing\HashServiceProvider::class, Illuminate\Mail\MailServiceProvider::class, Illuminate\Notifications\NotificationServiceProvider::class, Illuminate\Pagination\PaginationServiceProvider::class, Illuminate\Pipeline\PipelineServiceProvider::class, Illuminate\Queue\QueueServiceProvider::class, Illuminate\Redis\RedisServiceProvider::class, Illuminate\Auth\Passwords\PasswordResetServiceProvider::class, Illuminate\Session\SessionServiceProvider::class, Illuminate\Translation\TranslationServiceProvider::class, Illuminate\Validation\ValidationServiceProvider::class, Illuminate\View\ViewServiceProvider::class, /* * Package Service Providers... */ /* * Application Service Providers... */ App\Providers\AppServiceProvider::class, App\Providers\AuthServiceProvider::class, // App\Providers\BroadcastServiceProvider::class, App\Providers\EventServiceProvider::class, App\Providers\RouteServiceProvider::class, ],
我再一次数了数,一共列出了 27 项服务! 现在,你可能需要所有的服务,但不太可能。
例如,我现在正好在构建一个 REST API,这意味着我不需要 Session Service Provider、View Service Provider 等。而且由于我是按照自己的方式来做一些事情,而不是按照框架的默认值来做,所以我也可以禁用 Auth Service Provider、Pagination Service Provider、Translation Service Provider 等。总而言之,对于我的用例来说,这些几乎有一半是不必要的。
仔细审视一下你的应用吧。它是否需要所有这些服务提供者?但是看在上帝的份上,请不要盲目地注释掉这些服务,然后推送到生产中去! 运行所有的测试,在开发机和暂存机上手动检查,并且在扣动扳机之前要非常非常偏执。
当你需要对传入的 Web 请求进行一些自定义处理时,创建一个新的中间件就是答案。现在,打开 app/Http/Kernel.php
并将中间件粘在 web
或 api
堆栈中是很有诱惑力的;这样一来,它就会在整个应用程序中变得可用,而且如果它没有做一些侵入性的事情(例如,像日志或通知)。
然而,随着应用程序的增长,如果所有(或大多数)这些全局中间件都存在于每个请求中,那么这个全局中间件的集合可能会成为应用程序的一个无声负担,即使没有业务原因。
换句话说,要小心你在哪里添加/应用新的中间件。在全局范围内添加一些东西可能会更方便,但从长远来看,性能惩罚是非常高的。我知道如果每次有新的变化都要有选择地应用中间件,你要承受的痛苦,但这是我心甘情愿承受的痛苦,也是我所推荐的!
虽然 Eloquent 让 DB 交互的很多方面变得愉悦,但它是以速度为代价的。作为一个映射器,ORM 不仅要从数据库中获取记录,还要实例化模型对象,并用列数据对其进行填充。
所以,如果你做一个简单的 $users = User::all()
,比如有10000个用户,框架会从数据库中获取 10000 行记录,并在内部做 10000 个 new User()
,并用相关数据填充他们的属性。这是大量的工作在幕后进行,如果数据库是你的应用成为瓶颈的地方,绕过 ORM 有时是个好主意。
这对于复杂的 SQL 查询来说尤其如此,在这种情况下,你必须跳很多的圈子,写一个又一个的闭包,但最终还是能得到一个高效的查询。在这种情况下,最好做一个 DB::raw()
,然后手工写查询。
根据 这个 的性能研究, 即使是简单的插入, Eloquent 也会随着记录数量的增加而变慢:
Web 应用优化中最保守的秘密之一就是缓存。
对于新手来说,缓存的意思是预先计算和存储昂贵的结果(昂贵的 CPU 和内存使用量),并在重复相同的查询时简单地返回。
例如,在一个电商商店里,可能会遇到,在 200 万种产品中,大多数时候人们都会对那些新鲜出炉的、在一定价格范围内的、针对特定年龄段的产品感兴趣。在数据库中查询这些信息是很浪费的——因为查询的内容不会经常变化,所以最好把这些结果存储在我们可以快速访问的地方。
Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Laravel untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web 内置支持多种类型的缓存。除了使用缓存驱动和从底层构建缓存系统外,你可能还想使用一些Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Laravel untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web 包,方便模型缓存、查询缓存等。
但是请注意, 在一定的简化用例之外, 预制的缓存包可能会带来更多的问题, 而不是解决这些问题.
当你在 Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Laravel untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web 中缓存一些东西时, 你有几个选项可以选择将需要缓存的计算结果存储在哪里。这些选项也被称为 缓存驱动。所以, 虽然使用文件系统来存储缓存结果是可能的,也是完全合理的,但这并不是缓存的真正目的。
理想情况下,你希望使用内存中(完全活在 RAM 中)的缓存,比如 Redis、Memcached、MongoDB 等,这样在较高的负载下,缓存就能起到至关重要的作用,而不是自己成为瓶颈。
现在,你可能会认为拥有 SSD 磁盘和使用 RAM 棒几乎是一样的,但还差得远。即使是非正式的 基准测试也显示,在速度方面,RAM优于SSD的10-20倍。
在缓存方面,我最喜欢的系统是 Redis。它的速度 快得离谱(每秒 10 万次读取操作是很常见的),对于非常大的缓存系统,可以很容易地演变成一个 集群。
就像应用程序的配置一样,路由不会随着时间的推移而改变,是缓存的理想选择。如果你像我一样无法忍受大文件,并且最终把你的 web.php
和 api.php
分割成几个文件的话,这一点尤其适用。 一个简单的Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Laravel untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web命令就可以把所有可用的路由打包并保存起来, 方便以后的访问:
php artisan route:cache
而当你最终要增加或改变路由时,只需这样做即可。
php artisan route:clear
图片是大多数网络应用的核心和灵魂。巧合的是,它们也是最大的带宽消耗者,也是导致应用程序/网站速度慢的最大原因之一。如果你只是简单地将上传的图片天真地存储在服务器上,然后以 HTTP 响应的方式发送回来,你就会让一个巨大的优化机会溜走。
我的第一个建议是不要在本地存储图片——有数据丢失的问题要处理,而且取决于你的客户在哪个地理区域,数据传输可能会非常缓慢。
相反,选择像 Cloudinary 这样的解决方案,它可以自动动态调整和优化图像的大小。
如果这不可能,使用类似 Cloudflare 的东西来缓存和服务图像,同时它们存储在你的服务器上。
如果连这一点都做不到,调整一下你的网络服务器软件,压缩资产并引导访问者的浏览器去缓存东西,就会有很大的不同。下面是一个 Nginx 配置的片段。
server { # file truncated # gzip compression settings gzip on; gzip_comp_level 5; gzip_min_length 256; gzip_proxied any; gzip_vary on; # browser cache control location ~* \.(ico|css|js|gif|jpeg|jpg|png|woff|ttf|otf|svg|woff2|eot)$ { expires 1d; access_log off; add_header Pragma public; add_header Cache-Control "public, max-age=86400"; } }
我知道图片优化与 Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Laravel untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web 无关, 但这是一个如此简单而强大的技巧 (而且经常被忽视), 所以我忍不住了。
自动加载是 PHP 中一个整洁的、并不古老的功能,它可以说是拯救了这门语言的末日。尽管如此,通过破译给定的命名空间字符串来寻找和加载相关类的过程是需要时间的,在生产部署中,如果需要高性能,可以避免这个过程。 再一次,Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Laravel untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web 有一个单一命令的解决方案来解决这个问题:
composer install --optimize-autoloader --no-dev
队列 是指当有很多事情时,你如何处理这些事情,而且每件事情都需要几毫秒才能完成。一个很好的例子是发送电子邮件——在网络应用中,一个广泛的用例是当用户执行一些操作时,发出几封通知邮件。
例如,在一个新推出的产品中,你可能希望每当有人下单超过一定值时,公司领导层(大约6-7个电子邮件地址)就会收到通知。假设你的邮件网关能在500ms内响应你的SMTP请求,那么在订单确认启动之前,用户需要等待3-4秒。一个非常糟糕的用户体验,我相信你会同意。
补救的办法是在任务进来的时候就把它们存储起来,告诉用户一切都很顺利,然后再处理它们(几秒钟)。如果出现错误,在宣布失败之前,排队的任务可以重试几次。
虽然队列系统使设置复杂化了一些 (并增加了一些监控开销), 但它在现代Web应用中是不可缺少的。
对于你的 Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Laravel untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web 应用中的任何前端资源,请确保有一个管道可以编译和最小化所有的资源文件。 那些对 Webpack,Gulp,Parcel 等打包器系统很熟悉的人不需要费心,但如果你还没有这样做,Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Laravel untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web Mix是一个可靠的推荐。
Mix 是一个轻量级的 (老实说,很讨人喜欢!) 围绕Webpack的打包器,它可以处理你所有的 CSS,SASS,JS 等文件。 一个典型的 .mix.js
文件可以像这样小,但仍然可以发挥出巨大的作用。
const mix = require('laravel-mix').mix.js('resources/js/app.js', 'public/js'); mix.js('resources/js/app.js', 'public/js') .sass('resources/sass/app.scss', 'public/css');
当您准备部署生产环境并运行 npm run production
时,它将自动处理导入,最小化,优化以及整个工作流程。 Mix 不仅关心传统的 JS和 CSS 文件,而且还关心您在应用程序工作流程中可能使用的 Vue 和 React 组件。
更多信息参考 这里!
结论
Pengoptimuman prestasi adalah lebih seni daripada sains - mengetahui cara melakukannya dan perkara yang perlu dilakukan adalah lebih penting daripada perkara yang perlu dilakukan. Yang berkata, tiada had untuk apa dan berapa banyak yang anda boleh optimumkan dalam aplikasi Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Mari kita bincangkan tentang cara mengoptimumkan PHP dan Laravel untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web untuk meningkatkan prestasi aplikasi web.
Tetapi apa sahaja yang anda lakukan, saya ingin meninggalkan anda dengan beberapa nasihat perpisahan - pengoptimuman harus dilakukan untuk alasan yang baik, bukan kerana bunyinya bagus atau kerana anda berminat dengan lebih daripada 100,000 Pengguna paranoid tentang prestasi aplikasinya apabila sebenarnya hanya terdapat 10 pengguna.
Jika anda tidak pasti sama ada anda perlu mengoptimumkan apl anda, jangan kacau sarang tebuan. Apl yang hanya berfungsi, kadangkala terasa membosankan, tetapi melakukan apa yang perlu dilakukan adalah sepuluh kali lebih baik daripada apl yang dioptimumkan menjadi mesin super hibrid mutan yang gagal dari semasa ke semasa.
Alamat asal bahasa Inggeris: https://geekflare.com/laravel-optimization/
Alamat terjemahan: https://learnku.com/laravel/t/47213
[Cadangan berkaitan: tutorial video laravel]
Atas ialah kandungan terperinci Mari kita bincangkan tentang cara mengoptimumkan PHP dan Laravel untuk meningkatkan prestasi aplikasi web. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!