Rumah > Artikel > pembangunan bahagian belakang > Bagaimana untuk menukar prestasi laman web php
Kaedah untuk menukar prestasi laman web PHP: 1. HTML statik; 2. Asingkan pelayan gambar; . Gunakan teknologi pengimbangan beban 7. Optimumkan penulisan kod, dsb.
Persekitaran pengendalian tutorial ini: sistem Windows 7, PHP versi 8.1, komputer Dell G3.
Bagaimana untuk menukar prestasi laman web php?
Prestasi tapak web PHP yang besar dan penyelesaian pengoptimuman akses serentak
Pengoptimuman prestasi tapak web adalah sangat penting untuk tapak web yang besar Kepantasan akses dan pembukaan tapak web mempengaruhi pengguna Dari segi pengalaman, kelajuan akses laman web yang perlahan akan menyebabkan kadar lantunan yang tinggi, yang mudah diselesaikan untuk laman web yang kecil Namun, untuk laman web yang besar, kerana banyak lajur dan gambar dan imej yang besar, bagaimana untuk mengoptimumkan prestasi keseluruhan?
1 Strategi peningkatan prestasi untuk tapak web yang besar
1 statik HTML
Malah, semua orang tahu bahawa kaedah yang paling berkesan dan paling murah ialah. halaman HTML statik tulen, jadi kami cuba sedaya upaya untuk menggunakan halaman statik untuk halaman di tapak web kami Kaedah paling mudah ini sebenarnya kaedah yang paling berkesan.
2. Asingkan pelayan imej
Seperti yang kita sedia maklum, untuk pelayan web, sama ada Apache, IIS atau bekas lain, imej menggunakan sumber yang paling banyak, jadi adalah perlu untuk kita mengasingkan imej dari halaman Pemisahan ialah strategi yang pada asasnya diguna pakai oleh tapak web yang besar Mereka semua mempunyai pelayan imej bebas atau berbilang. Seni bina sedemikian boleh mengurangkan tekanan pada sistem pelayan yang menyediakan permintaan capaian halaman, dan boleh memastikan sistem tidak ranap disebabkan masalah imej. Pada pelayan aplikasi dan pelayan imej, pengoptimuman konfigurasi yang berbeza boleh dilakukan Contohnya, apabila mengkonfigurasi ContentType, apache boleh menyokong LoadModules sesedikit mungkin untuk memastikan penggunaan sistem dan kecekapan pelaksanaan yang lebih tinggi.
3. Kluster pangkalan data, pencincangan jadual pangkalan data
Tapak web yang besar mempunyai aplikasi yang kompleks, dan aplikasi ini mesti menggunakan pangkalan data apabila berhadapan dengan bilangan akses yang banyak, kesesakan pangkalan data akan meningkat dengan cepat . Dapat dilihat bahawa satu pangkalan data tidak lama lagi tidak akan dapat memenuhi aplikasi, jadi kita perlu menggunakan pengelompokan pangkalan data atau pencincangan jadual pangkalan data.
Dari segi kluster pangkalan data, banyak pangkalan data mempunyai penyelesaiannya sendiri, dan Master/Slave yang biasa digunakan yang disediakan oleh MySQL mempunyai penyelesaian yang serupa.
Kluster biasanya menggunakan teknologi pengimbangan beban CDN, GSBL dan DNS Setiap rantau mempunyai satu set kumpulan pelayan bahagian hadapan Sebagai contoh: NetEase dan Baidu menggunakan teknologi pengimbangan beban DNS. pelayan akhir. Satu carian Menggunakan teknologi pemuatan DNS, semua saluran berkongsi kluster pelayan bahagian hadapan.
Pencincangan jadual perpustakaan ialah penyelesaian biasa dan paling berkesan.
Kami memasang modul perniagaan dan aplikasi atau berfungsi dalam aplikasi untuk memisahkan pangkalan data Modul yang berbeza sepadan dengan pangkalan data atau jadual yang berbeza, dan kemudian mengikut strategi tertentu, pangkalan data yang lebih kecil bertaburan untuk halaman atau fungsi tertentu , seperti jadual pengguna, dicincang mengikut ID pengguna, yang boleh meningkatkan prestasi sistem pada kos rendah dan mempunyai kebolehskalaan yang baik.
Forum Sohu menggunakan struktur sedemikian, yang memisahkan pengguna forum, tetapan, siaran dan maklumat lain ke dalam pangkalan data, dan kemudian mencincang siaran dan pengguna mengikut bahagian dan ID dalam pangkalan data dan jadual. ia boleh dikonfigurasikan Konfigurasi ringkas dalam fail membolehkan sistem menambah pangkalan data kos rendah pada bila-bila masa untuk menambah prestasi sistem.
4. Cache
Sesiapa sahaja yang merupakan orang teknikal telah menemui perkataan cache, dan cache digunakan di banyak tempat. Seni bina laman web dan caching dalam pembangunan laman web juga sangat penting. Di sini kita mula-mula bercakap tentang dua cache paling asas. Caching lanjutan dan diedarkan diterangkan kemudian. Dari segi caching seni bina, sesiapa yang biasa dengan Apache akan tahu bahawa Apache menyediakan modul cachingnya sendiri, dan anda juga boleh menggunakan modul Squid tambahan untuk caching Kedua-dua kaedah ini boleh meningkatkan keupayaan respons akses Apache dengan berkesan.
Caching dalam pembangunan program laman web, Memory Cache yang disediakan pada Linux ialah antara muka cache yang biasa digunakan, yang boleh digunakan dalam pembangunan web Sebagai contoh, apabila membangun dalam Java, anda boleh memanggil MemoryCache untuk cache dan berkomunikasi dengan beberapa data, sesetengah komuniti besar menggunakan seni bina sedemikian. Di samping itu, apabila menggunakan pembangunan bahasa web, setiap bahasa pada asasnya mempunyai modul dan kaedah cache sendiri PHP mempunyai modul Pear's Cache, dan Java mempunyai lebih banyak lagi.
5. Pencerminan
Pencerminan ialah kaedah yang sering digunakan oleh tapak web besar untuk meningkatkan prestasi dan teknologi Pencerminan boleh menyelesaikan perbezaan dalam kelajuan akses pengguna yang disebabkan oleh penyedia akses rangkaian dan wilayah yang berbeza. , sebagai contoh, perbezaan antara ChinaNet dan EduNet telah mendorong banyak tapak web untuk membina tapak cermin dalam rangkaian pendidikan, dan data dikemas kini dengan kerap atau dalam masa nyata.
6. Pengimbangan beban
Pengimbangan beban akan menjadi penyelesaian mewah untuk tapak web besar untuk menyelesaikan akses muatan tinggi dan sejumlah besar permintaan serentak. Teknologi pengimbangan beban telah dibangunkan selama bertahun-tahun, dan terdapat banyak penyedia perkhidmatan dan produk profesional untuk dipilih.
2. Pengoptimuman penulisan kod PHP:
1.
Kedua-dua kaedah akan mencetak sesuatu pada halaman, tetapi gema tidak mengembalikan sebarang nilai, dan cetakan akan mengembalikan 0 atau 1 pada kejayaan atau kegagalan.
2. include_once lebih memakan masa daripada include.
Kerana ia perlu menyemak sama ada kelas yang anda ingin sertakan telah disertakan.
3. Pastikan anda menggunakan petikan tunggal dan bukannya petikan berganda untuk rentetan perenggan yang panjang.
Kerana petikan berganda akan mencari pembolehubah dalam rentetan. Contohnya: echo 'Ini adalah rentetan panjang'.$nama adalah lebih cepat daripada gema 'Ini rentetan panjang $nama'.
4. Jangan gunakan untuk gelung bersarang dalam gelung
5. Jika fungsi itu boleh ditakrifkan sebagai statik, maka jangan tentukan ia sebagai fungsi ahli adalah 33% lebih cepat daripada fungsi ahli.
6 Jika anda boleh menyelesaikan masalah tanpa menggunakan ungkapan biasa, maka jangan gunakan ungkapan biasa.
Ungkapan biasa adalah lebih perlahan daripada fungsi asli PHP. Contohnya, gunakan str_replace dan bukannya preg_replae.
7 Cuba untuk tidak menggunakan laluan relatif untuk memasukkan fail
Apabila mencari fail dalam laluan relatif, ia akan dicari dalam direktori semasa, dan kemudian dicari semula dalam urutan. Ini menjadikan pencarian fail sangat perlahan. Adalah lebih baik untuk menentukan pemalar seperti WEB_ROOT dahulu, dan kemudian gunakan pemalar ini untuk memasukkan fail.
8. Simbol kongruen === lebih cepat daripada sama ==
Dan jika(1 == '1′) akan kembali benar, jika(0 == ”) juga akan kembali benar , manakala if(1 ==='1′) dan if(0===”) kedua-duanya akan kembali palsu apabila anda menggunakan simbol kongruen. Oleh itu, sebaiknya gunakan simbol kongruen apabila anda perlu mengesan beberapa pembolehubah Boolean dalam program anda.
3. Terdapat kaedah berikut untuk thinkphp
1 Matikan mod nyahpepijat
Memandangkan selepas mematikan mod nyahpepijat, sistem akan secara automatik. menjana penyusunan projek Cache dan mematikan penulisan log, yang boleh mengurangkan banyak pemuatan IO dan overhed penulisan log.
2. Dayakan output pemampatan halaman
Bermula dari versi 3.1, parameter konfigurasi OUTPUT_ENCODE telah ditambahkan untuk mengawal output pemampatan halaman.
3. Hidupkan caching
Memasang cache APC atau Xcache dalam persekitaran penggunaan tapak web dengan berkesan boleh meningkatkan prestasi tapak web dan penggunaan memori XCache ialah cache/pengoptimum opcode sumber terbuka, yang bermaksud Ia boleh meningkatkan prestasi PHP pada pelayan anda Ia mengelakkan proses penyusunan berulang dengan menimbal data PHP yang disusun ke dalam memori yang dikongsi, dan boleh terus menggunakan kod terkumpul terkumpul untuk meningkatkan kelajuan Ia biasanya boleh meningkatkan kadar penjanaan halaman anda 2 hingga 5 kali, mengurangkan beban pelayan. Alternatif PHP Cache (APC) ialah alat cache sumber terbuka yang berkesan untuk PHP, yang boleh menyimpan kod perantaraan PHP bagi opcode.
4. Cache medan
Secara lalai, cache medan dijana secara automatik Selepas pembangunan selesai, pada asasnya terdapat lebih sedikit perubahan pada pangkalan data, jadi anda boleh mempertimbangkan untuk menggabungkan cache medan kelas Model yang sepadan, yang boleh mengurangkan overhed IO untuk membaca cache medan setiap kali. Kaedah penggabungan adalah untuk mencari fail cache medan yang sepadan di bawah Runtime/Data/_fields
4. Pengoptimuman pangkalan data
1 Pilih enjin storan yang betul
Mengambil MySQL sebagai contoh, ia termasuk dua enjin storan, MyISAM dan InnoDB Setiap enjin mempunyai kelebihan dan kekurangan. MyISAM sesuai untuk aplikasi yang memerlukan sejumlah besar pertanyaan. Trend InnoDB akan menjadi enjin storan yang sangat kompleks, dan untuk beberapa aplikasi kecil, ia akan menjadi lebih perlahan daripada MyISAM. Tetapi ia menyokong "kunci baris" dan transaksi.
2. Optimumkan jenis data medan
Ingat satu prinsip, semakin kecil lajur, semakin pantas lajur itu. Bagi kebanyakan enjin pangkalan data, operasi cakera keras mungkin merupakan kesesakan yang paling ketara. Jadi, menjadikan data anda padat boleh sangat membantu dalam situasi ini kerana ia mengurangkan akses kepada cakera keras. Jika jadual hanya mempunyai beberapa lajur (seperti jadual kamus, jadual konfigurasi), maka kami tidak mempunyai sebab untuk menggunakan INT sebagai kunci utama. Ia akan menjadi lebih menjimatkan untuk menggunakan MEDIUMINT, SMALLINT atau TINYINT yang lebih kecil. Jika anda tidak perlu merakam masa, lebih baik menggunakan DATE daripada DATETIME. Sudah tentu, anda juga perlu meninggalkan ruang yang cukup untuk pengembangan.
3. Menambah indeks pada medan carianIndeks tidak semestinya kunci utama atau medan unik. Jika terdapat medan dalam jadual anda yang anda akan sentiasa gunakan untuk mencari, sebaiknya anda mengindeksnya Melainkan medan yang anda ingin cari ialah medan teks yang besar, maka anda harus mencipta indeks teks penuh. 4 Elakkan menggunakan Pilih * Semakin banyak data dibaca daripada pangkalan data, semakin perlahan pertanyaan itu.
Dan, jika pelayan pangkalan data dan pelayan WEB anda adalah dua pelayan bebas, ini juga akan meningkatkan beban penghantaran rangkaian. Walaupun anda ingin menanyakan semua medan dalam jadual data, cuba jangan gunakan aksara kad bebas * Menggunakan definisi pengecualian medan terbina dalam dengan baik mungkin membawa lebih banyak kemudahan.
5. Gunakan ENUM dan bukannya VARCHAR
Jenis ENUM sangat pantas dan padat. Malah, ia memegang TINYINT, tetapi ia muncul sebagai rentetan. Dengan cara ini, ia menjadi agak sempurna untuk menggunakan medan ini untuk membuat beberapa senarai pilihan. Contohnya, jika nilai medan seperti jantina, etnik, jabatan dan status adalah terhad dan tetap, anda harus menggunakan ENUM dan bukannya VARCHAR.
6. Gunakan NOT NULL bila boleh
Melainkan anda mempunyai sebab yang sangat khusus untuk menggunakan nilai NULL, anda harus sentiasa memastikan medan anda BUKAN NULL. NULL sebenarnya memerlukan ruang tambahan, dan program anda akan menjadi lebih kompleks apabila anda melakukan perbandingan. Sudah tentu, ini tidak bermakna anda tidak boleh menggunakan NULL Realitinya sangat rumit, dan masih terdapat situasi di mana anda perlu menggunakan nilai NULL.
7. Jadual panjang tetap akan menjadi lebih pantas
Jika semua medan dalam jadual adalah "panjang tetap", keseluruhan jadual akan dianggap "statik" atau "panjang tetap" . Sebagai contoh, tiada medan jenis berikut dalam jadual: VARCHAR, TEXT, BLOB. Selagi anda memasukkan salah satu medan ini, jadual itu bukan lagi "jadual statik panjang tetap" dan enjin MySQL akan memprosesnya dengan cara lain.
Jadual panjang tetap akan meningkatkan prestasi kerana MySQL akan mencari dengan lebih pantas Kerana panjang tetap ini memudahkan pengiraan mengimbangi data seterusnya, pembacaan secara semula jadi akan menjadi lebih pantas. Dan jika medan itu bukan panjang tetap, maka setiap kali anda ingin mencari yang seterusnya, program perlu mencari kunci utama.
Selain itu, jadual panjang tetap lebih mudah untuk dicache dan dibina semula. Walau bagaimanapun, satu-satunya kesan sampingan ialah medan panjang tetap membazirkan sedikit ruang, kerana medan panjang tetap memerlukan banyak ruang tanpa mengira sama ada anda menggunakannya atau tidak.
8 Gunakan teknologi "vertical split"
Anda boleh membahagikan meja anda kepada dua, satu dengan panjang tetap dan satu dengan panjang berubah. Pemisahan menegak "Pemisahan menegak" ialah kaedah menukar jadual dalam pangkalan data kepada beberapa jadual mengikut lajur, yang boleh mengurangkan kerumitan jadual dan bilangan medan, dengan itu mencapai tujuan pengoptimuman. Sebagai contoh: Terdapat medan dalam jadual Pengguna yang merupakan alamat rumah Medan ini adalah pilihan Sebagai perbandingan, kecuali untuk maklumat peribadi apabila anda beroperasi dalam pangkalan data, anda tidak perlu membaca atau menulis semula medan ini dengan kerap. Jadi, mengapa tidak meletakkannya dalam jadual lain? Ini akan menjadikan jadual anda mempunyai prestasi yang lebih baik, sering kali, untuk jadual pengguna, saya hanya mempunyai ID pengguna, nama pengguna dan kata laluan. dan lain-lain akan digunakan dengan kerap. Jadual yang lebih kecil akan sentiasa mempunyai prestasi yang lebih baik. Di samping itu, anda perlu memberi perhatian kepada fakta bahawa anda tidak akan kerap menyertai jadual yang dibentuk oleh medan yang dipisahkan ini, jika tidak, prestasi akan menjadi lebih teruk daripada apabila tidak dibahagikan, dan ia akan menjadi penurunan tahap yang melampau.
9 JELASKAN pertanyaan PILIH anda
Menggunakan kata kunci EXPLAIN boleh memberitahu anda bagaimana MySQL memproses pernyataan SQL anda. Ini boleh membantu anda menganalisis kesesakan prestasi penyata pertanyaan atau struktur jadual anda. Hasil pertanyaan EXPLAIN juga akan memberitahu anda cara kunci utama indeks anda digunakan, cara jadual data anda dicari dan diisih...dsb., dsb. Biasanya kita boleh menambah kata kunci EXPLAIN di hadapan kenyataan SELECT yang lebih kompleks, terutamanya yang melibatkan berbilang jadual. Anda boleh menggunakan phpmyadmin untuk melakukan ini.
5. Pengoptimuman bahagian hadapan
Selepas mengoptimumkan bahagian belakang dan pangkalan data, perkara yang perlu kami lakukan seterusnya ialah mengoptimumkan halaman hadapan dan fail sumber anda untuk halaman output Terutamanya termasuk pengoptimuman imej, JS dan fail gaya. Adalah disyorkan untuk menggunakan alat ujian prestasi halaman web berikut untuk pengesanan dan analisis, dan cadangan pengoptimuman yang berkaitan akan diberikan:
Alat PageSpeed yang dibangunkan oleh Google
Pembangun boleh menggunakan PageSpeed untuk menilai prestasi halaman web mereka dan Dapatkan cadangan tentang cara meningkatkan prestasi.
Pembelajaran yang disyorkan: "Tutorial Video PHP"
Atas ialah kandungan terperinci Bagaimana untuk menukar prestasi laman web php. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!