cari

WordPress is a Slow CMS

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!

Kenyataan
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
Di luar gembar -gembur: Menilai peranan PHP hari iniDi luar gembar -gembur: Menilai peranan PHP hari iniApr 12, 2025 am 12:17 AM

PHP kekal sebagai alat yang kuat dan digunakan secara meluas dalam pengaturcaraan moden, terutamanya dalam bidang pembangunan web. 1) PHP mudah digunakan dan diintegrasikan dengan lancar dengan pangkalan data, dan merupakan pilihan pertama bagi banyak pemaju. 2) Ia menyokong penjanaan kandungan dinamik dan pengaturcaraan berorientasikan objek, sesuai untuk membuat dan mengekalkan laman web dengan cepat. 3) Prestasi PHP dapat ditingkatkan dengan caching dan mengoptimumkan pertanyaan pangkalan data, dan komuniti yang luas dan ekosistem yang kaya menjadikannya masih penting dalam timbunan teknologi hari ini.

Apakah rujukan yang lemah dalam PHP dan bilakah mereka berguna?Apakah rujukan yang lemah dalam PHP dan bilakah mereka berguna?Apr 12, 2025 am 12:13 AM

Dalam PHP, rujukan lemah dilaksanakan melalui kelas lemah dan tidak akan menghalang pemungut sampah daripada menebus objek. Rujukan lemah sesuai untuk senario seperti sistem caching dan pendengar acara. Harus diingat bahawa ia tidak dapat menjamin kelangsungan hidup objek dan pengumpulan sampah mungkin ditangguhkan.

Terangkan kaedah sihir __invoke dalam PHP.Terangkan kaedah sihir __invoke dalam PHP.Apr 12, 2025 am 12:07 AM

Kaedah \ _ \ _ membolehkan objek dipanggil seperti fungsi. 1. Tentukan kaedah \ _ \ _ supaya objek boleh dipanggil. 2. Apabila menggunakan sintaks $ OBJ (...), PHP akan melaksanakan kaedah \ _ \ _ invoke. 3. Sesuai untuk senario seperti pembalakan dan kalkulator, meningkatkan fleksibiliti kod dan kebolehbacaan.

Terangkan serat dalam Php 8.1 untuk keserasian.Terangkan serat dalam Php 8.1 untuk keserasian.Apr 12, 2025 am 12:05 AM

Serat diperkenalkan dalam Php8.1, meningkatkan keupayaan pemprosesan serentak. 1) Serat adalah model konkurensi ringan yang serupa dengan coroutine. 2) Mereka membenarkan pemaju mengawal aliran pelaksanaan tugas secara manual dan sesuai untuk mengendalikan tugas I/O-intensif. 3) Menggunakan serat boleh menulis kod yang lebih cekap dan responsif.

Komuniti PHP: Sumber, Sokongan, dan PembangunanKomuniti PHP: Sumber, Sokongan, dan PembangunanApr 12, 2025 am 12:04 AM

Komuniti PHP menyediakan sumber dan sokongan yang kaya untuk membantu pemaju berkembang. 1) Sumber termasuk dokumentasi rasmi, tutorial, blog dan projek sumber terbuka seperti Laravel dan Symfony. 2) Sokongan boleh didapati melalui saluran StackOverflow, Reddit dan Slack. 3) Trend pembangunan boleh dipelajari dengan mengikuti RFC. 4) Integrasi ke dalam masyarakat dapat dicapai melalui penyertaan aktif, sumbangan kepada kod dan perkongsian pembelajaran.

PHP vs Python: Memahami PerbezaanPHP vs Python: Memahami PerbezaanApr 11, 2025 am 12:15 AM

PHP dan Python masing -masing mempunyai kelebihan sendiri, dan pilihannya harus berdasarkan keperluan projek. 1.Php sesuai untuk pembangunan web, dengan sintaks mudah dan kecekapan pelaksanaan yang tinggi. 2. Python sesuai untuk sains data dan pembelajaran mesin, dengan sintaks ringkas dan perpustakaan yang kaya.

PHP: Adakah ia mati atau hanya menyesuaikan diri?PHP: Adakah ia mati atau hanya menyesuaikan diri?Apr 11, 2025 am 12:13 AM

PHP tidak mati, tetapi sentiasa menyesuaikan diri dan berkembang. 1) PHP telah menjalani beberapa lelaran versi sejak tahun 1994 untuk menyesuaikan diri dengan trend teknologi baru. 2) Ia kini digunakan secara meluas dalam e-dagang, sistem pengurusan kandungan dan bidang lain. 3) Php8 memperkenalkan pengkompil JIT dan fungsi lain untuk meningkatkan prestasi dan pemodenan. 4) Gunakan OPCACHE dan ikut piawaian PSR-12 untuk mengoptimumkan prestasi dan kualiti kod.

Masa Depan PHP: Adaptasi dan InovasiMasa Depan PHP: Adaptasi dan InovasiApr 11, 2025 am 12:01 AM

Masa depan PHP akan dicapai dengan menyesuaikan diri dengan trend teknologi baru dan memperkenalkan ciri -ciri inovatif: 1) menyesuaikan diri dengan pengkomputeran awan, kontena dan seni bina microservice, menyokong Docker dan Kubernetes; 2) memperkenalkan pengkompil JIT dan jenis penghitungan untuk meningkatkan prestasi dan kecekapan pemprosesan data; 3) Berterusan mengoptimumkan prestasi dan mempromosikan amalan terbaik.

See all articles

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
3 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
3 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
3 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
4 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌

Alat panas

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

MinGW - GNU Minimalis untuk Windows

MinGW - GNU Minimalis untuk Windows

Projek ini dalam proses untuk dipindahkan ke osdn.net/projects/mingw, anda boleh terus mengikuti kami di sana. MinGW: Port Windows asli bagi GNU Compiler Collection (GCC), perpustakaan import yang boleh diedarkan secara bebas dan fail pengepala untuk membina aplikasi Windows asli termasuk sambungan kepada masa jalan MSVC untuk menyokong fungsi C99. Semua perisian MinGW boleh dijalankan pada platform Windows 64-bit.

EditPlus versi Cina retak

EditPlus versi Cina retak

Saiz kecil, penyerlahan sintaks, tidak menyokong fungsi gesaan kod

SublimeText3 Linux versi baharu

SublimeText3 Linux versi baharu

SublimeText3 Linux versi terkini