WordPress ialah CMS Lambat
Versi bahasa Inggeris bagi catatan lama saya WordPress es un CMS lento - 2014
Lebih daripada sekali, saya mendapati diri saya berada di tengah-tengah perdebatan: Adakah WordPress lambat? Nah, ia bukanlah satu perdebatan apabila satu-satunya jawapan daripada mereka yang dilampirkan pada WordPress ialah terdapat tapak dengan banyak lawatan menggunakannya, dan prestasinya adalah optimum. Orang-orang ini nampaknya lupa bahawa walaupun algoritma isihan gelembung Isih gelembung berfungsi dengan baik untuk sampel yang terlalu besar jika "dijalankan" pada mesin yang berkuasa. Walau bagaimanapun, ini tidak bermakna ia semestinya algoritma yang cekap (sebenarnya tidak) jika kita mempertimbangkan kerumitan pengiraannya. Perkara yang sama berlaku dengan WordPress. Memandangkan jumlah maklumat yang sama, ia memerlukan pengehosan yang lebih berkuasa daripada CMS lain. Bukan itu sahaja, tetapi seperti yang akan kita lihat, WordPress sememangnya perlahan sama ada ia mempunyai banyak maklumat atau tidak.
Ini tidak bermakna WordPress adalah buruk. Tidak ada yang lebih jauh dari kebenaran. Sama seperti dalam kereta, kelajuan bukanlah segala-galanya. Begitu juga dengan dunia CMS. Malah, banyak projek web saya dibina dengannya. Walau bagaimanapun, setiap projek adalah berbeza, dan oleh itu, anda perlu memilih alatan terbaik dengan bijak, bukan di luar lampiran.
Memandangkan saya seorang yang teknikal, hujah saya akan berdasarkan aspek teknikal. Terutama apabila saya faham bahawa WordPress adalah perlahan kerana reka bentuknya. Saya menjemput sesiapa sahaja yang tidak bersetuju untuk meninggalkan komen dengan alasan mereka.
Semua dalam Satu Meja
Apabila mereka bentuk skema pangkalan data untuk projek web, persoalan timbul sama ada mahu menggunakan kepraktisan atau kecekapan. Dalam kes WordPress, mereka memilih kepraktisan dan mengumpulkan siaran, siaran tersuai, sumber dan versi semuanya dalam satu jadual: wp_posts. Tindakan ini mempunyai kelebihan untuk memudahkan kod dan carian (walaupun ini adalah isu lain yang dihadapi oleh WordPress, seperti yang akan kita lihat dalam siaran lain), tetapi pada sisi negatifnya, ia secara drastik mengurangkan kecekapan WordPress. Beberapa contoh untuk menjadikannya lebih jelas:
Jika kami mempunyai 500 siaran, dan setiap satu mempunyai empat semakan berbeza (satu semasa dan tiga lagi), seolah-olah kami sedang berurusan dengan 2,000 siaran.
Jika kami mempunyai 500 produk dengan WooCommerce, dan setiap satu mempunyai imej yang ditampilkan dan empat dalam galeri produk, seolah-olah CMS kami terpaksa mengendalikan 3,000 produk.
Jika kami mempunyai tapak web kecil dengan 35 halaman dan 35 item menu, sama ada pautan luaran atau dalaman, pengurus kandungan kami akan berfungsi seolah-olah terdapat 70 halaman kerana setiap item menu dikira sebagai entri atau halaman dalam CMS kami . Ini mungkin tidak kelihatan dalam contoh ini, tetapi ia menunjukkan faktor lain yang mempengaruhi prestasi.
Jika anda mempunyai 500 produk dalam empat bahasa, WordPress anda akan bertindak seolah-olah ia mengendalikan 2,000 produk.
Sekarang, mari kita pergi ke contoh dunia nyata secara ringkasan: Jika anda mempunyai tapak web dengan 500 produk, setiap satu dengan imej yang ditampilkan, empat imej galeri produk dan PDF dengan maklumat teknikal dan tapak itu juga mempunyai blog dengan 200 entri, setiap satu dengan imej pilihan masing-masing. Jika tapak anda turut menyokong tiga bahasa dan ditetapkan untuk membenarkan hanya dua semakan setiap siaran, WordPress mesti mencari melalui lebih 5,500 item setiap kali ia menanyakan pangkalan data anda. Saya mengabaikan faktor lain seperti item menu, halaman dan siaran tersuai. Nasihat:
Hadkan bilangan semakan kepada dua atau lumpuhkan semakan sepenuhnya:
// Limit revisions to two: define('WP_POST_REVISIONS', 2); // Completely disable revisions: // define('WP_POST_REVISIONS', false);
- Padam semua semakan dari semasa ke semasa. Anda boleh melakukan ini dengan menjalankan pertanyaan SQL berikut:
DELETE a, b, c FROM wp_posts a LEFT JOIN wp_term_relationships b ON (a.ID = b.object_id) LEFT JOIN wp_postmeta c ON (a.ID = c.post_id) WHERE a.post_type = 'revision';
Berjimat-cermat dengan imej di tapak web anda. Jangan tambahkan imej pada CMS anda yang anda tidak akan gunakan.
Elakkan mempunyai berbilang menu melainkan ia penting. Alih keluar masukan menu yang anda tidak mahu gunakan.
Jika anda tiada pilihan lain, kerana pelanggan anda berkeras mahu menggunakan WordPress untuk projek sederhana atau besar, cuba buat jadual tambahan untuk meringankan beban pada wp_posts sebanyak mungkin.
WordPress Anda Menghidap Alzheimer
WordPress mencari fleksibiliti pada sebarang kos, walaupun dengan mengorbankan kelajuan. Mungkin kerana pada permulaannya, ia hanya akan menjadi sistem blog, dan dalam kes itu, begitu banyak fleksibiliti tidak akan menyebabkan banyak kerosakan. Namun, apabila kami mula menggunakannya sebagai CMS, masalah prestasi yang disebabkan oleh fleksibiliti ini mula timbul.
Let me give you some bad news: your content manager has Alzheimer’s. It forgets everything from one request to another. You will have to repeat each time which custom posts, sidebars, or menus you are going to use. There is no other choice because it forgets. That's why, for example, if you want to add an entry to the admin menu, you will have to tell it every time it is to be displayed. Yes, it offers enormous flexibility, but it forces PHP and the CMS to process the same thing repeatedly, resulting in a loss of efficiency. The same thing happens with plugins, which is why many plugins can significantly slow down your website. It’s not because of the plugin system itself (which is magnificently designed and programmed) but because plugins have to declare the same information repeatedly, forcing WordPress to go through them entirely with every request.
A performance-focused CMS would have done it differently. For example, by having the theme declare during activation what sidebars, custom posts, or other elements it needs. WordPress would register this information and adjust internally. The same could be applied to plugins. But, as mentioned earlier, such an approach would significantly reduce the CMS's flexibility, which is not desirable.
Tips:
Limit the number of plugins.
Choose minimalist themes that only have what you need.
You might be advised to use a cache plugin; I don't. Only use one if your website is extremely slow and do so with caution. I will discuss this in another post (edit: now available: Don’t Use Cache Plugins with WordPress, but basically, it’s because you will disable all of WordPress’s internal workings based on hooks. That is, you will force WordPress to work in a way that is not intended.
Everything Always Available
As almost everyone knows, WordPress started as a blogging system based on a previous system. It wasn't designed for large projects, which is why its design leaned toward simplicity. No classes, just functions. As with any design aspect, this doesn’t have to be a bad thing (just ask those using desktops built with GTK) unless you are looking for flexibility. Then, the headaches begin.
If you come from the PHP world, you might be surprised that with WordPress, you don’t have to use "require," "include," or "namespace." This is easy to understand: WordPress always loads its entire arsenal of libraries. Yes, always, whether you use them or not. When you combine this with its memory issues, well... that's a lot of code to read with every request. But, of course, this is all for flexibility. You can use a core function without having to include a file that might change names or paths tomorrow.
Since PHP 5.6, there is full support for function namespaces. Maybe this is a solution for WordPress. But in that case, they will have to make the difficult decision of breaking backward compatibility. I don't know what they will do.
There’s nothing you can do to improve this, as it’s part of WordPress’s design. All you can do is your part: make sure your code doesn't follow this path. If you decide to do so, here are my tips:
- Create anonymous functions for "actions" that are nothing more than includes to external files where you keep your code. This way, if the action never triggers, PHP won’t have to parse all the code. Example:
add_action('admin_init', function() { include(__DIR__ . "/zones/panel/init.php"); }); add_action('admin_menu', function() { include(__DIR__ . "/zones/panel/menu.php"); });
- For widgets, shortcodes, and filters, use classes with namespaces. Also, make sure these classes are instantiated using autoloading.
// It's better to use: spl_autoload_register() function __autoload($classname) { $file = str_replace('\\', DIRECTORY_SEPARATOR, $classname); include_once(BASE_PATH . $file . '.php'); } add_shortcode('block', array('misshortcodesBlock', 'load')); //... my other shortcodes, filters, and widgets...
In summary, we have seen that WordPress's design principles are simplicity and flexibility, but in a way that sacrifices efficiency. It is essential to understand that no development tool is good for everything. If someone presents it that way, they are either misleading you or selling you a Swiss army knife that is good for nothing.
WordPress struggles with speed, but for showcase websites, this is not something to worry about. However, for websites where the business relies on the web, or for sites with a lot of traffic, alternative options should be considered. Still, if we choose WordPress for its ease of use and flexibility, we must compensate by investing in good hosting, being very careful with the selection of plugins, and using a high-quality theme tailored to our needs.
Atas ialah kandungan terperinci WordPress ialah CMS Lambat. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas











Dalam php, kata laluan_hash dan kata laluan 1) password_hash menjana hash yang mengandungi nilai garam untuk meningkatkan keselamatan. 2) Kata Laluan_verify Sahkan kata laluan dan pastikan keselamatan dengan membandingkan nilai hash. 3) MD5 dan SHA1 terdedah dan kekurangan nilai garam, dan tidak sesuai untuk keselamatan kata laluan moden.

Jenis PHP meminta untuk meningkatkan kualiti kod dan kebolehbacaan. 1) Petua Jenis Skalar: Oleh kerana Php7.0, jenis data asas dibenarkan untuk ditentukan dalam parameter fungsi, seperti INT, Float, dan lain -lain. 2) Return Type Prompt: Pastikan konsistensi jenis nilai pulangan fungsi. 3) Jenis Kesatuan Prompt: Oleh kerana Php8.0, pelbagai jenis dibenarkan untuk ditentukan dalam parameter fungsi atau nilai pulangan. 4) Prompt jenis yang boleh dibatalkan: membolehkan untuk memasukkan nilai null dan mengendalikan fungsi yang boleh mengembalikan nilai null.

PHP terutamanya pengaturcaraan prosedur, tetapi juga menyokong pengaturcaraan berorientasikan objek (OOP); Python menyokong pelbagai paradigma, termasuk pengaturcaraan OOP, fungsional dan prosedur. PHP sesuai untuk pembangunan web, dan Python sesuai untuk pelbagai aplikasi seperti analisis data dan pembelajaran mesin.

Menggunakan penyataan preprocessing dan PDO dalam PHP secara berkesan dapat mencegah serangan suntikan SQL. 1) Gunakan PDO untuk menyambung ke pangkalan data dan tetapkan mod ralat. 2) Buat kenyataan pra -proses melalui kaedah menyediakan dan lulus data menggunakan ruang letak dan laksanakan kaedah. 3) Hasil pertanyaan proses dan pastikan keselamatan dan prestasi kod.

PHP dan Python mempunyai kelebihan dan kekurangan mereka sendiri, dan pilihannya bergantung kepada keperluan projek dan keutamaan peribadi. 1.PHP sesuai untuk pembangunan pesat dan penyelenggaraan aplikasi web berskala besar. 2. Python menguasai bidang sains data dan pembelajaran mesin.

PHP menggunakan sambungan MySQLI dan PDO untuk berinteraksi dalam operasi pangkalan data dan pemprosesan logik sisi pelayan, dan memproses logik sisi pelayan melalui fungsi seperti pengurusan sesi. 1) Gunakan MySQLI atau PDO untuk menyambung ke pangkalan data dan laksanakan pertanyaan SQL. 2) Mengendalikan permintaan HTTP dan status pengguna melalui pengurusan sesi dan fungsi lain. 3) Gunakan urus niaga untuk memastikan atomik operasi pangkalan data. 4) Mencegah suntikan SQL, gunakan pengendalian pengecualian dan sambungan penutup untuk debugging. 5) Mengoptimumkan prestasi melalui pengindeksan dan cache, tulis kod yang sangat mudah dibaca dan lakukan pengendalian ralat.

PHP digunakan untuk membina laman web dinamik, dan fungsi terasnya termasuk: 1. Menjana kandungan dinamik dan menghasilkan laman web secara real time dengan menyambung dengan pangkalan data; 2. Proses Interaksi Pengguna dan Penyerahan Bentuk, Sahkan Input dan Menanggapi Operasi; 3. Menguruskan sesi dan pengesahan pengguna untuk memberikan pengalaman yang diperibadikan; 4. Mengoptimumkan prestasi dan ikuti amalan terbaik untuk meningkatkan kecekapan dan keselamatan laman web.

PHP sesuai untuk pembangunan web dan prototaip pesat, dan Python sesuai untuk sains data dan pembelajaran mesin. 1.Php digunakan untuk pembangunan web dinamik, dengan sintaks mudah dan sesuai untuk pembangunan pesat. 2. Python mempunyai sintaks ringkas, sesuai untuk pelbagai bidang, dan mempunyai ekosistem perpustakaan yang kuat.
