Selain menginstal W3 Total Cache atau plugin caching lain langkah apa yang bisa saya ambil untuk memastikan bahwa tema dan situs saya berjalan secepat mungkin.
performance
optimization
cache
server
Paul Sheldrake
sumber
sumber
Jawaban:
Anda dapat menginstal WordPress di Nginx. Ada sejumlah sumber daya untuk membantu:
Plugin Kompatibilitas nginx
HOWTO: Instal WordPress Di Nginx -
Diskusi slicehost
Cara Mempercepat WordPress Dengan Nginx Dan WP Super Cache
WordPress di nginx + lighttpd + FastCGI + php
Nginx sebagai cache proxy front-end untuk WordPress
Beberapa informasi kinerja dari tautan terakhir (yang tampaknya sedikit berbeda dari yang lain):
sumber
Atur expiries sisi klien untuk hal-hal seperti css, gambar, JavaScript dll yang tidak perlu diunduh ulang untuk setiap tampilan halaman. Sejauh ini, ini membuat perbedaan terbesar pada waktu pemuatan situs saya. Unduhan tercepat adalah unduhan yang tidak pernah terjadi ...
Anda dapat melakukan pre-gzip semua yang Anda bisa (7-zip adalah alat yang bagus untuk ini) & mengunggahnya di tempat yang sama dengan file yang baru saja Anda gzip. Ubah .htaccess untuk menyajikan file yang sudah di-gzip, seperti di bawah ini. Peringatan di sini adalah Anda harus ingat untuk melakukan gzip kembali jika / ketika Anda memperbarui sesuatu. Ini memotong overhead CPU, selain parsing .htaccess.
Ini hanya jawaban mentah. Ada banyak variasi pada tema ini. Saya membuat blog tentang hal ini dan menambahkan beberapa referensi ke artikel yang lebih mendalam di http://icanhazdot.net/2010/03/23/some-wordpress-stuff/ . Baca itu dan, yang lebih penting, referensi yang saya tunjukkan - itu adalah sumber yang bagus.
Ketahuilah bahwa jika Anda sering mengotak-atik pengguna perlu menyegarkan cache mereka.
Plugin yang saya temukan sangat berguna juga adalah wp-minify . Yang perlu diperhatikan dengan hal ini adalah Anda harus mengecualikan item spesifik halaman (formulir kontak, slider halaman depan, dll) sehingga Anda tidak mengunduh ulang seluruh rangkaian css, JS dll untuk setiap halaman. Ini adalah cara yang baik untuk meminimalkan, menggabungkan & mengompresi CSS dasar Anda, JS dll. Ini mengurangi banyak permintaan http. Wp-minify bermain baik dengan supercache dan juga dengan header kedaluwarsa yang saya perinci di atas.
Gunakan Yslow di Firebug (Firefox) atau yang serupa untuk memantau permintaan http Anda dan apa yang dikompresi dan tidak. Lihat header kedaluwarsa di sana juga. Anda akan segera melihat apa yang dapat Anda tingkatkan.
sumber
Minimalkan jumlah plugin yang Anda jalankan hanya untuk apa yang benar-benar Anda butuhkan. Berhati-hatilah dengan plugin yang menambahkan kode javascript dan CSS pada setiap halaman, bahkan ketika kode itu tidak digunakan pada halaman tersebut.
Jika Anda membuat tema Anda sendiri dari awal, pisahkan CSS Anda sehingga fitur yang hanya perlu untuk templat halaman tertentu atau jenis tampilan (posting tunggal, arsip, kategori, dll) hanya dimuat saat diperlukan.
Konfigurasikan W3TC untuk menggunakan CDN (seperti Amazon CloudFront, atau yang lainnya yang didukung oleh W3TC).
Lihat apakah opsi Minify berfungsi untuk Anda (beberapa plugin menghasilkan js / css yang tidak akan melakukan minify dengan baik, jadi pastikan untuk menguji situs Anda setelah mengaktifkan fitur minify).
Jika Anda memiliki kontrol penuh terhadap server MySQL Anda, pastikan Anda telah mengaktifkan query_cache. Gunakan skrip tuning MySQL untuk menemukan cara lain untuk mengoptimalkan konfigurasi basis data Anda.
Jika menggunakan CDN bermasalah karena beberapa alasan, konfigurasikan mod_expires di pengaturan apache Anda. Atur waktu kedaluwarsa selama masuk akal untuk jenis statis seperti gambar, css, javascript, video, audio, dll.
sumber
Jalankan memcached dan gunakan cache objek untuk mengurangi jumlah kueri basis data. Ini cache data dari database, bukan halaman. Tidak yakin apakah w3-total-cache sudah melakukan ini.
Pastikan Anda menjalankan opcode cache seperti APC . (Ada beberapa lagi yang tersedia.)
sumber
Selain menggunakan plugin caching disk seperti wp-cache, letakkan blog Anda di volume host yang memiliki properti "noatime" di atasnya. Jika tidak, SSH ke host Anda (jika hosting Anda menyediakannya) dan jalankan perintah ini secara rutin pada file Anda setiap beberapa hari:
~ / * Berarti "file saya di bawah direktori home saya". Anda dapat mengubah jalur itu sesuai keinginan Anda. Anda juga dapat mengatur ini di pekerjaan cron di cpanel jika hosting Anda menyediakannya.
Untuk info lebih lanjut tentang properti atime, lihat ini . Ini mempercepat kinerja membaca disk Linux sangat.
Terkadang situs Anda dipalu oleh laba-laba. Anda dapat menggunakan alat seperti SpyderSpanker atau Chennai Central untuk memfilter spider yang tidak membantu membawa peringkat halaman lebih banyak ke situs Anda dan hanya memperlambatnya, dan kemudian memperlambat spider yang baik (seperti Google, Bing, dll.) Dengan mengirimkannya secara acak HTTP 304 Tidak Dimodifikasi pesan.
Hal lain yang saya lihat adalah plugin yang ditulis dengan buruk. Jika Anda belajar cara membuat plugin, Anda mulai melihat bagaimana beberapa plugin dikodekan dengan tidak efisien, atau bahkan menemukan bom waktu, seperti tabel database yang mengisi dan mengisi dan tidak pernah dibersihkan, menyimpan hal-hal seperti data koneksi yang masuk.
Di luar semua solusi lain di sini, Anda juga dapat membuat kebun web WordPress dari blog Anda dengan hosting di beberapa PC node web yang semuanya terhubung kembali ke satu basis data tunggal dan satu volume disk tunggal untuk file (seperti volume yang dipasang di atas NFS ). Lihat Ultra Monkey untuk mengetahui cara menjalankan semuanya.
sumber
Beberapa jawaban dari atas kepala saya:
1) Minimalkan jumlah permintaan HTTP yang harus dilakukan browser ke host Anda dengan menggabungkan JavaScript dan CSS jika memungkinkan / praktis.
2) Turunkan sebanyak mungkin gambar / media Anda ke CDN pihak ke-3, terutama jika Anda menggunakan hosting bersama.
3) Coba kurangi jumlah posting yang Anda tampilkan di halaman depan untuk mengurangi waktu render total.
3a) Coba gunakan tema yang menyajikan beberapa posting fitur secara penuh di halaman depan dan semua posting yang lebih tua lainnya sebagai kutipan.
sumber
Caching Menu WordPress juga memberi Anda peningkatan kinerja. Terutama jika Anda memiliki banyak Halaman atau Struktur Menu raksasa, ini harus dipertimbangkan.
Lakukan dengan 2 langkah mudah. Pada awalnya, buat fungsi yang mendapat atau membuat menu, alih-alih menelepon
wp_nav_menu
langsung.Dalam tema Anda, ganti
wp_nav_menu
denganget_cached_menu
. Sekarang, setiap kali menu dipanggil, Anda memiliki satu Databasequery alih-alih seluruh Menubuilding.Menu tidak sering berubah - tetapi Anda juga harus melakukan
wp_update_nav_menu
tindakan untuk menghapus transien lama.Lakukan seperti ini:
Menu akan dibuat saat halaman berikutnya dipanggil - dan menggunakan versi cache hingga seseorang memperbarui menu lagi.
Versi terbaru
Terima kasih @helgatheviking karena menunjukkan kesalahan antara siput dan ID. Saya memperbarui fungsi sehingga berfungsi baik dengan
theme_position
danmenu
(untuk panggilan langsung menu).Menu selalu disimpan dengan nama Menu, bukan posisi di Theme.
sumber
$nav_menu_selected_id
adalah angka, sementara saat memanggilget_cached_menu()
itumenu_id
adalah variabel string, karena parameter itu menjadi ID CSS untuk<ul>
elemen.Gunakan kelas basis data yang dipangkas untuk optimasi. Kami membuat pengalaman yang baik dengan kode sendiri untuk mengurangi penggunaan memori dan kecepatan akses basis data. Di samping itu, Anda dapat mengoptimalkan struktur basis data itu sendiri dengan beberapa perubahan kecil yang juga banyak.
Bagian dari kode kelas database dapat ditemukan di wordpress trac, itu tidak membuatnya menjadi inti ( Tiket # 11799 dan terkait ).
sumber
Untuk situs yang sangat diperdagangkan, Anda harus menyetel semua buffer MySQL untuk konten yang ada sekarang. Terlepas dari versi WordPress, lapisan MySQL dapat dikonfigurasikan konfigurasinya .
Bahkan, jika Anda memiliki data InnoDB tanpa mengaktifkan innodb_file_per_table, Anda perlu membersihkan InnoDB dengan mengelompokkan setiap tabel ke dalam tablespace fisiknya sendiri . Dimungkinkan untuk melakukan penyetelan MySQL yang layak bahkan jika Anda memiliki perangkat keras terbatas . Ada banyak skenario untuk melakukan optimasi InnoDB tersebut .
IMHO, Anda tidak dapat merencanakan pengaturan yang baik untuk my.cnf tanpa mengetahui jumlah data yang harus dikonfigurasi. Anda harus secara berkala memuat dataset saat ini dari produksi ke dalam lingkungan pementasan, melakukan optimisasi, dan mendapatkan nomor-nomor yang akan dikonfigurasi di my.cnf dari server produksi.
sumber
Anda dapat mengaktifkan kompresi keluaran global . ini akan mem-gzip semua yang keluar secara otomatis jika browser mendukungnya. Ini secara drastis mengurangi ukuran file yang ditransfer, tetapi meningkatkan beban CPU Anda.
sumber
Saya baru-baru ini berbicara tentang hal ini di WordCamp Houston . Semua rekomendasi di atas bagus dan yang penting adalah untuk memastikan semua hal front-end sepenuhnya dioptimalkan maka Anda dapat mulai bekerja pada caching dan masalah kinerja server.
Render progresif akan membuat halaman Anda terasa lebih cepat karena pengguna akan melihat konten halaman sebelum dimuat penuh. Untuk melakukan ini, pastikan semua pemblokiran js ada di bagian paling bawah halaman dan css ada di bagian atas.
Juga jika Anda menggunakan banyak tombol media sosial, Anda dapat menyesuaikan skrip untuk membuatnya memuat dalam iframe setelah halaman dimuat penuh. Saya menulis tutorial tentang cara melakukannya dengan tombol tweet TweetMeMe (sekarang sudah usang karena Twitter merilis tombol retweet mereka sendiri) tetapi masih dapat diterapkan ke tombol berbagi lainnya.
Untuk kinerja server, lihat Nginx sebagai proksi ujung depan untuk konten statis dengan Apache menangani PHP dan MySQL yang berat.
sumber
Karena belum ada yang menyebutkannya, salah satu langkah paling penting untuk meningkatkan kinerja server bersama dengan pengaturan LAMP adalah beralih ke utas apache pekerja dan mod_fcgid.
Ini membebaskan memori 500MB di server pribadi virtual saya.
sumber
Panduan untuk memeriksa plugin memperlambat
Ada plugin yang sangat sederhana bernama Page Load Time , yang menambahkan timer ke footer halaman Anda. Sebenarnya hanya empat baris kode:
Kemudian:
Spreadsheet Anda akan terlihat seperti
Jadi jika setelah menonaktifkan plugin waktu respons halaman meningkat secara signifikan maka Anda dapat melihat apakah Anda dapat menghindari plugin itu.
Saya menemukan dua plugin yang menyebabkan mqtranslate 'signifikan' memperlambat dan Plugin Navigasi Multi-level (yang agak tua tapi bagus) .
sumber
Tetap menggunakan plugin W3 Total Cache untuk fungsionalitas caching di WordPress. Aktifkan caching halaman dan caching basis data dari halaman pengaturan plugin. Pastikan Anda memilih 'Cache PHP Alternatif (APC / APCu)' sebagai mekanisme caching. JANGAN aktifkan minifikasi apa pun di W3 Total Cache karena ada banyak peluang bagi Anda untuk merusak tampilan dan / atau fungsionalitas situs Anda. Kami akan menyerahkannya ke Cloudflare.
Setelah selesai mengonfigurasi sisa fungsi plugin, siapkan Cloudflare untuk situs web Anda. Pastikan Anda mengaktifkan Cloudflare di pengaturan W3 Total Cache juga di bawah 'Extensions'.
Cloudflare adalah Jaringan Pengiriman Konten yang menyimpan semua konten statis (file gambar, CSS, JS, dokumen, dll.) Dari situs Anda dan menyajikannya kepada pengunjung Anda dari server global mereka. Ini dapat membantu mempercepat waktu pemuatan halaman dan mengurangi beban di server Anda. Untuk daftar tipe file yang di-cache oleh Cloudlfare, checkout daftar ini . Apalagi Cloudflare memiliki paket gratis.
Di Cloudflare, atur level caching ke standar dan atur cache cache menjadi sesuatu yang setidaknya lebih dari 20 jam. Aktifkan Always Online ™ sehingga meskipun server Anda turun, Cloudflare akan menyajikan halaman statis situs web Anda dari cache mereka. Juga aktifkan fitur auto minify (ingat mengapa saya meminta Anda untuk tidak mengaktifkan minification adalah W3 Total Cache? Karena Cloudflare melakukannya dengan lebih baik!) Kemudian atur Rocket Loader ™ ke otomatis.
Berikut kutipan dari apa yang dilakukan Rocket Loader:
Mengurangi jumlah permintaan jaringan dengan menggabungkan file JavaScript, bahkan sumber daya pihak ketiga, untuk menghindari memperlambat rendering halaman.
Memuat skrip secara tidak sinkron, termasuk skrip pihak ketiga, sehingga skrip tersebut
tidak memblokir konten halaman Anda untuk
segera dimuat .
Menyalin skrip secara lokal (menggunakan LocalStorage, tersedia di sebagian besar
browser dan ponsel pintar) sehingga tidak diambil ulang kecuali
diperlukan.
Informasi lebih lanjut dapat ditemukan di sini .
Jika mungkin beralih ke kerangka kerja Genesis untuk WordPress karena mereka bersih tanpa mengasapi apapun . Genesis dibangun dengan mempertimbangkan kecepatan dan SEO. Saya sendiri telah mengujinya dan skor PageSpeed saya bagus. Juga jika Anda menggunakan Genesis, maka jangan lupa untuk mengaktifkan cache fragmen dalam pengaturan W3 Total Cache.
Karena sekarang Anda menggunakan Cloudlfare sebagai CDN, Anda dapat menggunakan plugin seperti ' Imagify ' atau ' Compres JPEG & PNG images ' oleh TingPNG untuk mengompres gambar Anda. Keduanya adalah plugin gratis yang tersedia di repositori plugin WordPress.org. Juga, Imagify mendukung algoritma kompresi lossy yang kuat.
Terakhir, instal plugin ' Hapus Kueri Dari Sumber Daya Statis ' dari repositori WordPress sehingga menghapus string kueri dari sumber daya statis seperti file CSS & JS. Ini karena sumber daya dengan "?" Atau "&" di URL tidak di-cache oleh beberapa server caching proxy (ingat, Cloudflare juga merupakan server caching proxy).
Kemudian instal plugin ' Gunakan Google Perpustakaan '. Plugin ini memungkinkan situs WordPress Anda untuk menggunakan Google AJAX Library API CDN daripada melayani file-file ini dari instalasi WordPress Anda secara langsung.
Beberapa manfaatnya adalah:
Terakhir tetapi tidak kalah pentingnya, gunakan plugin ' WP-Optimize ' oleh Ruhani Rabin untuk membersihkan dan mengoptimalkan basis data Anda.
Semoga ini menjawab pertanyaan Anda sehubungan dengan mengoptimalkan WordPress untuk mengurangi beban server.
sumber