Rumah pembangunan bahagian belakang tutorial php WordPress ialah CMS Lambat

WordPress ialah CMS Lambat

Sep 05, 2024 pm 04:31 PM

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 Laman Web ini
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

Alat AI Hot

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

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.

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

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

Artikel Panas

Skop pembolehubah PHP dijelaskan
4 minggu yang lalu By 百草
Petua untuk menulis komen php
4 minggu yang lalu By 百草
Mengulas kod dalam php
4 minggu yang lalu By 百草

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Tutorial PHP
1510
276
Skop pembolehubah PHP dijelaskan Skop pembolehubah PHP dijelaskan Jul 17, 2025 am 04:16 AM

Masalah dan penyelesaian biasa untuk skop pembolehubah PHP termasuk: 1. Pembolehubah global tidak dapat diakses dalam fungsi, dan ia perlu diluluskan menggunakan kata kunci atau parameter global; 2. Pembolehubah statik diisytiharkan dengan statik, dan ia hanya dimulakan sekali dan nilai dikekalkan antara pelbagai panggilan; 3. Pembolehubah hyperglobal seperti $ _get dan $ _post boleh digunakan secara langsung dalam mana -mana skop, tetapi anda perlu memberi perhatian kepada penapisan yang selamat; 4. Fungsi Anonymous perlu memperkenalkan pembolehubah skop induk melalui kata kunci penggunaan, dan apabila mengubah suai pembolehubah luaran, anda perlu lulus rujukan. Menguasai peraturan ini boleh membantu mengelakkan kesilapan dan meningkatkan kestabilan kod.

Mengulas kod dalam php Mengulas kod dalam php Jul 18, 2025 am 04:57 AM

Terdapat tiga kaedah umum untuk kod komen PHP: 1. Use // atau # untuk menyekat satu baris kod, dan disyorkan untuk menggunakan //; 2. Gunakan /.../ untuk membungkus blok kod dengan pelbagai baris, yang tidak boleh bersarang tetapi boleh diseberang; 3. Komen -komen kemahiran gabungan seperti menggunakan / jika () {} / untuk mengawal blok logik, atau untuk meningkatkan kecekapan dengan kunci pintasan editor, anda harus memberi perhatian kepada simbol penutupan dan mengelakkan bersarang apabila menggunakannya.

Petua untuk menulis komen php Petua untuk menulis komen php Jul 18, 2025 am 04:51 AM

Kunci untuk menulis komen PHP adalah untuk menjelaskan tujuan dan spesifikasi. Komen harus menjelaskan "mengapa" dan bukannya "apa yang dilakukan", mengelakkan redundansi atau terlalu kesederhanaan. 1. Gunakan format bersatu, seperti docblock (/*/) untuk deskripsi kelas dan kaedah untuk meningkatkan keserasian dan keserasian alat; 2. Menekankan sebab -sebab di sebalik logik, seperti mengapa JS melompat perlu dikeluarkan secara manual; 3. Tambahkan gambaran keseluruhan gambaran sebelum kod kompleks, terangkan proses dalam langkah -langkah, dan membantu memahami idea keseluruhan; 4. Gunakan Todo dan Fixme secara rasional untuk menandakan item dan masalah untuk memudahkan penjejakan dan kerjasama berikutnya. Anotasi yang baik dapat mengurangkan kos komunikasi dan meningkatkan kecekapan penyelenggaraan kod.

Tutorial pemasangan php cepat Tutorial pemasangan php cepat Jul 18, 2025 am 04:52 AM

Toinstallphpquickly, usexampponwindowsorhomeBrewonmacos.1.onwindows, downloadandInstallxampp, selectcomponents, startapache, andplaceFilesinhtdocs.2.alternative, secara manualstallphpfromphp.netandsheBerver.3

Belajar PHP: Panduan Pemula Belajar PHP: Panduan Pemula Jul 18, 2025 am 04:54 AM

Tolearnphpeffectively, startbysettingupalocalverenvironmentusingToolsLikexamppandaCodeDitorLikevscode.1) InstallXamppforapa Che, MySql, danPhp.2) UseAcodeeditorForsyntaxSupport.3) testyoursetupwithasimplephpfile.next, learnphpbasicsincludingvariables, ech

PHP memanggil AI Pembantu Suara Pintar PHP Pembinaan Sistem Interaksi Suara PHP PHP memanggil AI Pembantu Suara Pintar PHP Pembinaan Sistem Interaksi Suara PHP Jul 25, 2025 pm 08:45 PM

Input suara pengguna ditangkap dan dihantar ke backend PHP melalui API Mediarecorder JavaScript front-end; 2. PHP menjimatkan audio sebagai fail sementara dan memanggil STTAPI (seperti Pengiktirafan Suara Google atau Baidu) untuk mengubahnya menjadi teks; 3. PHP menghantar teks kepada perkhidmatan AI (seperti Openaigpt) untuk mendapatkan jawapan pintar; 4. PHP kemudian memanggil TTSAPI (seperti sintesis Baidu atau Google Voice) untuk menukar balasan ke fail suara; 5. PHP mengalir fail suara kembali ke bahagian depan untuk bermain, menyelesaikan interaksi. Seluruh proses dikuasai oleh PHP untuk memastikan hubungan lancar antara semua pautan.

Cara Menggunakan PHP untuk Membina Fungsi Perkongsian Sosial PHP Perkongsian Interface Integration Practice Cara Menggunakan PHP untuk Membina Fungsi Perkongsian Sosial PHP Perkongsian Interface Integration Practice Jul 25, 2025 pm 08:51 PM

Kaedah teras untuk membina fungsi perkongsian sosial dalam PHP adalah untuk menghasilkan pautan perkongsian secara dinamik yang memenuhi keperluan setiap platform. 1. Mula -mula dapatkan halaman semasa atau URL dan maklumat artikel yang ditentukan; 2. Gunakan urlencode untuk menyandikan parameter; 3. Sambutan dan menjana pautan perkongsian mengikut protokol setiap platform; 4. Pautan paparan di hujung depan untuk pengguna mengklik dan berkongsi; 5. Dinamik menghasilkan tag OG pada halaman untuk mengoptimumkan paparan kandungan perkongsian; 6. Pastikan untuk melepaskan input pengguna untuk mencegah serangan XSS. Kaedah ini tidak memerlukan pengesahan yang kompleks, mempunyai kos penyelenggaraan yang rendah, dan sesuai untuk kebanyakan keperluan perkongsian kandungan.

Cara Menggunakan PHP Digabungkan dengan AI Untuk Mencapai Ralat Pembetulan Ralat PHP Pengesanan dan Pengoptimuman Sintaks PHP Cara Menggunakan PHP Digabungkan dengan AI Untuk Mencapai Ralat Pembetulan Ralat PHP Pengesanan dan Pengoptimuman Sintaks PHP Jul 25, 2025 pm 08:57 PM

Untuk merealisasikan pembetulan ralat teks dan pengoptimuman sintaks dengan AI, anda perlu mengikuti langkah -langkah berikut: 1. Pilih model AI atau API yang sesuai, seperti Baidu, Tencent API atau perpustakaan NLP sumber terbuka; 2. Panggil API melalui curl atau Guzzle PHP dan memproses hasil pulangan; 3. Maklumat pembetulan ralat paparan dalam aplikasi dan membenarkan pengguna memilih sama ada untuk mengadopsinya; 4. Gunakan php-l dan php_codesniffer untuk pengesanan sintaks dan pengoptimuman kod; 5. Secara berterusan mengumpul maklum balas dan mengemas kini model atau peraturan untuk meningkatkan kesannya. Apabila memilih AIAPI, fokus pada menilai ketepatan, kelajuan tindak balas, harga dan sokongan untuk PHP. Pengoptimuman kod harus mengikuti spesifikasi PSR, gunakan cache yang munasabah, elakkan pertanyaan bulat, mengkaji semula kod secara berkala, dan gunakan x

See all articles