Bagaimana cara meningkatkan waktu respons server?

17

Apa yang dapat saya lakukan, selain menggunakan plugin cache seperti jotcache, untuk meningkatkan waktu respons server situs web saya?

Saya telah menghapus semua modul, plugin, dan komponen artikel yang tidak aktif, apakah ada hal lain yang dapat saya lakukan untuk memperbaikinya?

Saya berbicara tentang waktu sebelum klien (browser) mendapat tanggapan atas permintaannya . Dan bukan waktu halaman dimuat.

web-tiki
sumber
Waktu untuk merespons adalah waktu sebelum dokumen php selesai, jadi Anda ingin melihat panggilan sql dan php dan kemudian men-cache pertanyaan html yang saya sarankan
tristanbailey
Ketika Anda mengatakan waktu respons server - maksud Anda respons dari server saat permintaan pertama kali dibuat atau apakah maksud Anda waktu yang diperlukan server untuk menyiapkan dan melayani halaman? Jalankan situs Anda melalui uji kecepatan Pingdom dan poskan hasilnya maka kami dapat memberikan solusi spesifik untuk masalah yang sebenarnya.
Brent Friar

Jawaban:

25

Ada beberapa langkah yang dapat Anda ambil untuk meningkatkan kinerja sisi server. Perhatikan bahwa beberapa di antaranya tidak akan berfungsi dengan sebagian besar host yang dibagikan. Untuk kinerja hebat, Anda biasanya memerlukan kontrol berbutir halus.

Seperti halnya optimasi apa pun, Anda harus mengukur efeknya pada kinerja situs Anda. Untuk optimasi dasar adalah alat-alat seperti PageSpeed dan YSlow membantu (saya sarankan versi Firefox). Untuk pemahaman yang lebih mendalam, Anda harus mengukur waktu respons aktual sistem live Anda selama periode waktu tertentu.

PHP

  1. Aktifkan Caching Opcode

    Ini mungkin satu-satunya hal terbesar yang dapat Anda lakukan untuk meningkatkan kinerja situs Anda. Saya sarankan menggunakan OpCache atau APC . Konfigurasi cache ini dapat di-tweak untuk kinerja yang lebih besar berdasarkan pada server dan kebutuhan spesifik situs, tetapi hanya menginstal sudah merupakan dorongan besar.

  2. Perbarui versi PHP

    Versi PHP yang lebih baru secara teratur hadir dengan peningkatan kinerja. Selain itu ada sejumlah kasus di mana Joomla dapat menggunakan kode yang lebih baik ketika berjalan pada versi PHP yang lebih baru. Mulai hari ini Anda tidak boleh menggunakan versi PHP yang lebih lama dari PHP 5.4 jika Anda peduli dengan kinerja.

  3. Pengaturan PHP

    Pada versi PHP yang lebih lama (<= 5.3) berhati-hatilah untuk mematikan register_globalsdan magic_quotes_gpcuntuk kemenangan kinerja gratis. Pada PHP> = 5,6 ubah always_populate_raw_post_datamenjadi -1.

  4. Ekstensi PHP

    Joomla berisi beberapa kode untuk mengatasi ekstensi PHP yang hilang. Ini akan selalu lebih lambat dari ekstensi itu. Untuk peningkatan kinerja yang layak menginstal ekstensi berikut: mbstring, zip,ftp

Server web

  1. Aktifkan gzip

    Mengaktifkan kompresi sisi server memperdagangkan bandwidth untuk sumber daya CPU. Untuk sebagian besar situs di luar sana ini adalah panggilan yang tepat. Berhati-hatilah untuk hanya mengompresi data teks, mengompresi data biner akan memberikan Anda hasil CPU tanpa keuntungan bandwidth. Anda juga dapat mengaktifkan kompresi di pengaturan Joomla tetapi lebih baik jika Anda membiarkan server berurusan dengan ini.

  2. Sumber daya statis prekompresi

    Saya tidak berbicara tentang minfikasi (meskipun ini juga membantu) tetapi Anda dapat mengkonfigurasi Nginx dan Apache ke server yang sudah mengkompresi sumber daya, secara efektif menghilangkan hit CPU dari kompresi gzip. Poin bonus: Gunakan Zopfli untuk file yang lebih kecil.

  3. Gunakan FastCGI untuk PHP

    Lebih khusus Anda harus menggunakan php-fpm. Ini mencegah memulai PHP ketika browser meminta file non-PHP.

  4. Gunakan header cache yang sesuai

    Menggunakan Expiresheader dapat sangat mengurangi sumber daya server yang diperlukan. Bagaimanapun, permintaan tercepat adalah yang tidak pernah dilakukan.

Apache

Secara umum saya akan merekomendasikan menggunakan Nginx untuk situs berkinerja tinggi. Jika Anda benar-benar perlu menggunakan Apache untuk beberapa alasan saya mendapat tip bonus:

  1. Nonaktifkan AllowOverride

    Pengaturan AllowOverrideuntuk Nonemencegah banyak IO dan disk

Joomla

  1. Jangan gunakan Mode FTP

    Meskipun tidak memengaruhi pengguna Anda yang membaca situs, itu akan memperlambat beberapa operasi seperti pemasangan ekstensi.

  2. Matikan ekstensi yang tidak digunakan

    Ini berlaku terutama untuk Plugin, banyak di antaranya dijalankan pada setiap permintaan. Menonaktifkan menu dan komponen terutama bermanfaat saat mendaftar ekstensi yang tersedia dan jenis menu. Juga butuh 5 menit untuk melewati ekstensi yang datang dengan inti Joomla dan nonaktifkan yang tidak Anda gunakan.

  3. Matikan Siapkan konten

    Jika Anda menggunakan banyak modul khusus ( mod_custombukan khusus seperti yang ditulis sendiri) periksa apakah Anda dapat menonaktifkan Siapkan konten di dalamnya. Ini menghemat beberapa pemrosesan.

  4. Gunakan Caching

    Jika Anda serius tentang kinerja, Anda ingin mengaktifkan caching. Sangat berguna untuk membaca situs berat dengan banyak pengguna anonim. Pengguna yang masuk akan memotong sebagian besar cache, jika Anda memiliki banyak dari ini efeknya tidak akan sebesar.

  5. Gunakan pengendali sesi alternatif

    Dengan menggunakan pengendali sesi alternatif, Anda dapat membebaskan basis data Anda untuk hal-hal yang lebih penting. Saya tidak akan merekomendasikan file (secara membingungkan disebut Tidak Ada dalam pengaturan Joomla) karena itu akan membawa sekali lagi meningkatkan IO disk. Menggunakan APC berpotensi fastet tetapi meningkatkan risiko kehilangan semua data sesi. Jalan tengah yang tepat adalah Memcache. Meskipun ini membutuhkan proses tambahan, ini lebih dapat diandalkan daripada APC dan jauh lebih cepat daripada menyimpan semua data dalam database

  6. Buat situs Anda tetap sederhana

    Apakah Anda benar-benar membutuhkan tombol Facebook itu? Bagaimana dengan ikon imut yang tidak pernah dilihat siapa pun itu karena sebagian tersembunyi di balik spanduk? Semakin sedikit situs Anda ditampilkan semakin cepat. Sedapat mungkin gunakan CSS3, bukan gambar.

Lain-lain

  1. Atur favicon

    Terima kasih atas keputusan yang berasal dari browser Internet Explorer 4.0 membuat permintaan ke file yang dipanggil favicon.icosetiap kali pengguna mengunjungi situs Anda. Jika Anda tidak memilikinya, ini menyebabkan IO yang tidak perlu, karena 404 respons tidak di-cache. Tentukan ikon situs Anda dengan tag meta HTML atau tambahkan file yang dipanggil favicon.icoke root web. Tidak ingin favicon? Tempatkan PNG transparan dengan ukuran 1x1 piksel di lokasi itu. Perhatikan bahwa ekstensi masih perlu .ico.

  2. Optimalkan gambar Anda

    Sungguh menakjubkan, jenis tabungan apa yang bisa didapat dengan mengoptimalkan gambar, terutama file PNG. Ada berbagai alat yang tersedia untuk sistem operasi apa pun, secara pribadi saya menggunakan ImageOptim yang tersedia untuk OS X. Gambar inti Joomla sudah dioptimalkan tetapi melalui gambar Anda sendiri, terutama template yang penting. Anda juga dapat memeriksa ekstensi yang Anda gunakan. Jika itu open source, mengapa Anda tidak berkontribusi permintaan tarik berisi gambar yang baru dioptimalkan?

Maju

Jika Anda benar-benar ingin keluar semua, pertimbangkan menempatkan Varnish di depan situs Anda. Itu cache permintaan ke situs Anda dan jika mungkin melayani mereka dari cache itu sendiri, tidak pernah memukul Joomla. Ini alat yang kompleks tetapi dengan banyak kekuatan. Joomla tidak akan mengambil keuntungan dari fungsionalitas canggih seperti Edge Side Includes (ESI) tetapi kode Anda sendiri bisa.

Rouven Weßling
sumber
8
Sepertinya ... agak tidak ramah. Hanya FYI, saya hanya menulis ini, teksnya sama sekali tidak disiapkan. Merasa bebas untuk google itu. Ingat jawaban tidak hanya membantu penanya asli tetapi juga pengguna di masa depan yang menemukan jalan mereka di sini juga.
Rouven Weßling
13

Satu hal BESAR yang dapat Anda lakukan untuk meningkatkan waktu respons untuk situs Anda adalah memperbarui pengaturan modul Anda. Modul khusus (menggunakan mod_custom) memiliki opsi untuk mengaktifkan / menonaktifkan persiapan konten. Ini memungkinkan Anda untuk menjalankan plugin konten pada konten data dalam modul khusus Anda. Ini kuat ketika digunakan dengan benar, tetapi itu menambah waktu render tambahan untuk output modul. Kecuali Anda benar-benar memanfaatkan plugin konten dalam konten modul khusus Anda, yang terbaik adalah mematikannya. Anda akan melihat penurunan waktu render modul ketika Anda melakukan ini.

Cuplikan layar pengaturan: masukkan deskripsi gambar di sini

Catatan: Jika jawaban saya membantu Anda, silakan klik tanda centang di sebelah kiri untuk menerima jawabannya.

Don Gilbert
sumber
3
Saya belum pernah melihat bagian mempersiapkan konten sebelumnya. Versi Joomla apa ini berlaku untuk?
TryHarder
1
jika aktif maka plugin dapat berjalan di konten. Jadi jika Anda meletakkan kode posisi modul atau kode pendek plugin lainnya di textarea kustom html ini tidak akan ditampilkan, Anda hanya akan melihat misalnya "{tag_name}" di situs web bukan versi yang disiapkan
tristanbailey
2
Opsi "Siapkan Konten" termasuk dalam Joomla 2.5 dan 3.x. Pengaturan standar adalah "Tidak".
Neil Robertson
8

Saya berasumsi bahwa Anda telah menjalankan situs Anda melalui kecepatan Halaman Google, dan Anda memang sedang melihat untuk mengurangi waktu respon halaman yaitu waktu yang diambil oleh markup Anda untuk dikirim ke browser.

Penyebab paling mungkin untuk ini adalah pertanyaan berat. Aktifkan debug dan lihat di bagian bawah halaman untuk mencari tahu yang mana pertanyaan paling berat dan hapus atau kurangi. Anda juga dapat mengambil bantuan log kueri server MySQL yang lambat.

Hal berikutnya yang bisa Anda lihat adalah caching. Bergantung pada jenis situs yang Anda miliki, Anda dapat beralih dari caching yang konservatif atau progresif. Progresif harus digunakan di situs yang tidak memiliki dan fitur terkait pengguna.

Ashwin Date
sumber
Bisakah Anda memberikan tip atau tangkapan layar seperti apa bentuk pertanyaan berat itu? Apakah ada batasan untuk dicapai?
David Fritsch
Itu sangat tergantung pada aplikasi Anda. Namun setiap kueri yang masuk dalam log kueri lambat (yang di bawah pengaturan normal mencatat setiap kueri yang membutuhkan waktu lebih dari 1 detik untuk dieksekusi) adalah kandidat yang baik untuk memecah dan / atau memasukkan ke dalam cache. Hal lain yang mungkin terdengar konyol, tetapi pastikan semua pertanyaan memiliki LIMIT.
Ashwin Tanggal
6

Hal-hal yang saya tahu yang dapat membantu (sebagian besar telah terdaftar) adalah ini:

  1. Caching
  2. Kompresi (gzip file css dan js Anda)
  3. Menggabungkan file (semua css Anda digabungkan menjadi satu file)
  4. Membongkar gambar dan file ke CDN.

Saya telah menggunakan kombinasi dari cache Joomla bawaan (atau bahkan APC yang diaktifkan di server) dan plugin seperti plugin rockbooster gzip atau tema roket. Saya juga menggunakan plugin CDN nonumbers dengan akun amazon.

Ini pasti membantu, tetapi Anda harus menonton situs Anda dan menonaktifkan cache untuk komponen yang mengalami masalah. Saya harus mem-bypass CiviCRM di situs kami karena itu tidak cocok dengan caching. Joomla hadir dengan plugin cachecontrol yang dapat mengatasinya.

Brian Peat
sumber
2
menggabungkan dan kompres gambar Anda jika memungkinkan juga. Sprite dapat menyimpan lusinan permintaan per pemuatan halaman.
ContextSwitch
Saya selalu lupa tentang sprite. :)
Brian Peat
keberatan satu hal mengenai sprite - gambar latar belakang tidak ditampilkan ketika Windows beralih ke mode Kontras Tinggi. Sementara perilaku ini diterima untuk grafik umum, itu adalah masalah untuk kontrol yang harus diklik oleh pengguna - mereka hanya menghilang (contoh: tombol voting di situs ini)
miroxlav
Heh Brian Peat, saya ingin tahu apakah Anda mungkin tertarik untuk membantu kami meluncurkan situs CiviCRM di StackExchange. Kami membutuhkan pengendara yang memiliki lebih dari 200 reputasi di beberapa situs StackExchange lainnya: area51.stackexchange.com/proposals/77367/civicrm Cheers!
Joe Murray
Aku akan melihatnya. Ini semua berbasis Joomla dan saya tidak melakukan pemrograman apa pun, tapi saya mungkin bisa membantu dengan pertanyaan dasar.
Brian Peat
4

Anda juga ingin mengurangi aset lokal dan caching yang tepat. Satu hal yang dapat Anda lakukan adalah menggunakan plugin CDN. Berikut adalah dua yang saya rekomendasikan:

'corePHP' jomCDN - https://www.corephp.com/joomla-products/jomcdn

NoNumbers CDN Untuk Joomla! - http://www.nonumber.nl/extensions/cdnforjoomla

Juga jika tidak satu pun di atas yang menyelesaikan masalah Anda mungkin memiliki masalah yang lebih dalam - mungkin di dalam template Anda, server itu sendiri, atau hal-hal lain. Jika itu masalahnya, mungkin lebih baik mempekerjakan seseorang untuk memburu masalah dan menyelesaikannya untuk Anda.

Steven Pignataro
sumber
3

Anda juga dapat menggunakan kode ini dalam file .htaccess Anda:

RewriteEngine On
RewriteCond %{HTTP_HOST}  ^www.your domain [nocase]
RewriteRule ^(.*)         http://your domain/$1 [last,redirect=301]
RewriteEngine on
<ifmodule mod_deflate.c>
AddOutputFilterByType DEFLATE text/text text/html text/plain text/xml text/css application/x-javascript application/javascript text/javascript
</ifmodule>
<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType image/jpg "access 1 year"
ExpiresByType image/jpeg "access 1 year"
ExpiresByType image/gif "access 1 year"
ExpiresByType image/png "access 1 year"
ExpiresByType text/css "access 1 month"
ExpiresByType text/html "access 1 month"
ExpiresByType application/pdf "access 1 month"
ExpiresByType text/x-javascript "access 1 month"
ExpiresByType application/x-shockwave-flash "access 1 month"
ExpiresByType image/x-icon "access 1 year"
ExpiresDefault "access 1 month"
</IfModule>
معاملات فصلی
sumber
ini tampaknya menarik, dapatkah Anda menjelaskan apa fungsinya?
web-tiki
@ web-tiki Pengaturan ini kedaluwarsa. Header yang kedaluwarsa memberi tahu browser apakah mereka harus meminta file tertentu dari server atau apakah mereka harus mengambilnya dari cache browser. Seluruh ide di balik Expires Header tidak hanya untuk mengurangi beban unduhan dari server (terus-menerus mengunduh file yang sama ketika tidak dimodifikasi menghabiskan waktu yang berharga) tetapi untuk mengurangi jumlah permintaan HTTP untuk server. REFERENSI gtmetrix.com/add-expires-headers.html
TryHarder
2

Saya telah membuat lebih dari ratusan situs web menggunakan Joomla!

Dalam kebanyakan kasus orang berpikir bahwa Joomla bekerja sangat keras di server, tetapi menurut analisis yang dilakukan oleh saya, hal yang paling penting untuk menjaga situs web Anda CEPAT adalah MENGOPTIMALKAN GAMBAR dan JS / CSS.

Jangan gunakan editor Joomla, seperti JCE, untuk hanya mengubah ukuran gambar. Gunakan editor gambar seperti photoshop atau editor lain untuk mengubah ukuran gambar Anda ke ukuran yang dibutuhkan!

Gunakan alat kompresi JS / CSS.

Kami selalu menggunakan Pingdom Tools untuk menganalisis kecepatan situs web dan kami menggunakan fitur bawaan T3 Framework untuk mengoptimalkan JS / CSS!

Gev Balyan
sumber
Alat apa yang Anda gunakan untuk kompresi JS / CSS? Adakah rekomendasi tentang bagaimana seseorang dapat menganalisis situs web mereka seperti yang telah Anda lakukan untuk situs Anda?
David Fritsch
Kami selalu menggunakan Pingdom Tools untuk menganalisis kecepatan situs web dan kami menggunakan fitur bawaan T3 Framework untuk mengoptimalkan JS / CSS!
Gev Balyan
2
Saya juga berhasil menggunakan JCH mengoptimalkan untuk mencapai banyak kompresi dan minifikasi. Pilihan lain adalah dengan menggunakan mod_pagespeed Apache yang pada dasarnya mengimplementasikan sebagian besar rekomendasi Google Pagespeed.
Ashwin Tanggal
2
Semua alat bagus. @ GevBalyan, saya sarankan menambahkan hal-hal seperti ini ke dalam jawaban Anda dengan tautan. Menghemat orang Google! Anda bahkan dapat mengedit jawaban ini untuk menambahkannya ke jawaban ini. :)
David Fritsch
Alat kompresi yang tidak menembolok sebenarnya dapat meningkatkan waktu respons server, karena itu menambah waktu pemrosesan ke respons server.
Don Gilbert
1

Sudahkah Anda menghapus plugin yang tidak digunakan? Joomla harus memuat dan memproses setiap plugin yang diterbitkan untuk acara yang dipicu dalam permintaan.

Anda harus memahami ekstensi yang telah Anda instal dan bagaimana mereka berinteraksi dengan Joomla!

Banyak ekstensi memasang plugin yang mengelola konten, sistem, atau aktivitas pengguna untuk memulai fungsi kode. Beberapa dari mereka mungkin berlebihan.

Saya tahu bahwa k2 menginstal banyak plugin yang merespons peristiwa terkait bahasa yang tidak menghasilkan output nyata untuk situs bahasa tunggal. Membatalkan publikasi plugin tersebut dapat mengurangi waktu pemrosesan.

Joomsavvy
sumber
Bisakah Anda bicara lebih banyak tentang ini? Apa yang Anda maksud dengan "peristiwa yang dipicu"? Bagaimana saya bisa tahu peristiwa apa yang dipicu?
David Fritsch
1
Pertanyaan bagus. Anda harus memahami ekstensi yang telah Anda instal dan bagaimana mereka berinteraksi dengan Joomla! Banyak ekstensi memasang plugin yang mengelola konten, sistem, atau aktivitas pengguna untuk memulai fungsi kode. Beberapa dari mereka mungkin berlebihan. Saya tahu bahwa k2 menginstal banyak plugin yang merespons peristiwa terkait bahasa yang tidak menghasilkan output nyata untuk situs bahasa tunggal. Membatalkan publikasi plugin tersebut dapat mengurangi waktu pemrosesan. Demikian pula, K2 sendiri memiliki kebiasaan buruk membangun pertanyaan mahal untuk menghasilkan metrik yang patut diragukan.
Joomsavvy
1
Bisakah Anda memperbarui jawaban Anda dengan informasi dalam komentar Anda?
Harald Leithner
1

Meningkatkan Sumber Daya Paket Server / Web Hosting

Mungkin bukan jawaban yang dicari OP tetapi layak disebutkan jika tidak jelas bagi semua orang (dan belum ada jawaban lain yang menyebutkan ini): tingkatkan sumber daya server seperti memori, CPU, dan kecepatan disk.

Jika Anda menggunakan hosting web bersama, meningkatkan dari paket "ekonomi" ke paket "bisnis" atau paket lain yang lebih maju dapat meningkatkan sumber daya server yang tersedia untuk situs web Anda dan mengurangi waktu respons server. Pindah ke perusahaan hosting berkualitas lebih baik (mis. Dengan server hosting web bersama yang kurang ramai) juga dapat membantu.

Paket hosting yang lebih baik mungkin juga memberi Anda akses ke peningkatan kinerja yang tidak termasuk dalam paket hosting dasar. Misalnya, paket hosting SiteGround "GrowBig" dan "GoGeek" menyertakan cache dinamis yang membantu mengurangi waktu respons server secara signifikan. Opsi cache dinamis tidak tersedia dalam paket "Startup".

Neil Robertson
sumber