Sunucu yanıt süresi nasıl geliştirilir?


17

Web sitemin sunucu yanıt süresini iyileştirmek için jotcache gibi bir önbellek eklentisi kullanmak dışında ne yapabilirim ?

Tüm etkin olmayan makale modüllerini, eklentileri ve bileşenleri zaten kaldırdım, geliştirmek için yapabileceğim başka bir şey var mı?

İstemcinin (tarayıcı) isteğine yanıt vermesinden önceki zamandan bahsediyorum . Ve sayfanın yüklenme zamanı değil.


Yanıt süresi, php belgesi bitmeden önce geçen süredir, bu yüzden sql ve php çağrılarına bakmak ve daha sonra önereceğim html sorularını önbelleğe almak istersiniz
tristanbailey

Sunucu yanıt süresi derken - istek ilk yapıldığında sunucudan gelen yanıt mı, yoksa sayfayı hazırlamak ve sunmak için sunucunun geçmesi gereken süreyi mi kastediyorsunuz? Sitenizi Pingdom hız testi ile çalıştırın ve sonuçları gönderin, sonra size gerçek soruna özel çözümler verebiliriz.
Brent Friar

Yanıtlar:


25

Sunucu tarafı performansını artırmak için atabileceğiniz birkaç adım vardır. Bunlardan bazılarının çoğu paylaşılan ana bilgisayarla çalışmayacağını unutmayın. Mükemmel performans için genellikle daha ince taneli kontrole ihtiyacınız vardır.

Tüm optimizasyonlarda olduğu gibi, sitenizin performansı üzerindeki etkisini ölçmelisiniz. Temel optimizasyonlar için PageSpeed ve YSlow gibi araçlar yararlıdır (Firefox sürümlerini öneriyorum). Daha derinlemesine bir anlayış için, canlı sisteminizin bir süre içinde gerçek yanıt sürelerini ölçmeniz gerekir.

PHP

  1. Opcode Önbelleklemeyi Etkinleştir

    Bu, sitenizin performansını artırmak için yapabileceğiniz en büyük şeydir. OpCache veya APC kullanmanızı öneririm . Bu önbelleklerin yapılandırması, sunuculara ve sitelere özgü ihtiyaçlara dayalı olarak daha da yüksek performans için değiştirilebilir, ancak sadece yükleme zaten büyük bir destek.

  2. PHP sürümünü güncelleme

    Yeni PHP sürümü düzenli olarak performans iyileştirmeleri ile birlikte gelir. Ayrıca, Joomla'nın daha yeni bir PHP sürümünde çalışırken daha iyi kod kullanabileceği birkaç durum vardır. Bugün performansı göz önünde bulunduruyorsanız PHP 5.4'ten daha eski bir PHP sürümü kullanmamalısınız.

  3. PHP Ayarları

    Daha eski PHP sürümlerinde (<= 5.3) kapanmaya register_globalsve magic_quotes_gpcücretsiz performans kazanmaya özen gösterin. PHP> = 5.6'da always_populate_raw_post_data-1 olarak değiştirilir .

  4. PHP uzantıları

    Joomla, eksik PHP uzantılarını çözmek için bazı kodlar içerir. Bu her zaman bu uzantılardan daha yavaş olacaktır. İyi bir performans iyileştirme için aşağıdaki uzantıları yüklemek: mbstring, zip,ftp

Web sunucusu

  1. Gzip'i etkinleştir

    Sunucu tarafı sıkıştırmayı etkinleştirmek CPU kaynakları için bant genişliğini değiştirir. Çoğu site için bu doğru çağrı. Yalnızca metin verilerini sıkıştırmaya dikkat edin, ikili verileri sıkıştırmak, bant genişliği avantajları olmadan CPU isabetini verecektir. Sıkıştırmayı Joomla ayarlarında da etkinleştirebilirsiniz, ancak sunucunun bununla başa çıkmasına izin vermeniz daha iyidir.

  2. Statik kaynakları önceden sıkıştırma

    Minimasyondan bahsetmiyorum (bu da yardımcı oluyor), ancak Nginx ve Apache'yi zaten sıkıştırılmış kaynakları sunucuya yapılandırabilir, gzip sıkıştırmasından gelen CPU vuruşunu etkili bir şekilde ortadan kaldırabilirsiniz. Bonus puanları: Daha küçük dosyalar için bile Zopfli kullanın .

  3. PHP için FastCGI kullanın

    Daha spesifik olarak kullanmalısınız php-fpm. Bu, tarayıcı PHP olmayan bir dosya istediğinde PHP'nin başlatılmasını önler.

  4. Uygun önbellek başlıklarını kullanın

    ExpiresÜstbilgiyi kullanmak , gereken sunucu kaynaklarını önemli ölçüde azaltabilir. Sonuçta en hızlı istek hiç yapılmayan istek.

Apaçi

Genellikle Nginx'i yüksek performanslı siteler için kullanmanızı öneririm. Kesinlikle bir nedenden dolayı Apache kullanmanız gerekiyorsa bonus ipucu aldım:

  1. AllowOverride'ı devre dışı bırak

    Ayar AllowOverrideiçin Noneönler disk GÇ bir sürü ve

Joomla

  1. FTP Modunu kullanma

    Siteyi okuyan kullanıcılarınızı etkilemese de, uzantı yüklemesi gibi bazı işlemleri yavaşlatacaktır.

  2. Kullanılmayan uzantıları kapatma

    Bu özellikle Eklentiler için geçerlidir, bunların çoğu her istekte çalıştırılır. Menüleri ve bileşenleri devre dışı bırakmak, çoğunlukla mevcut uzantıları ve menü türlerini listelerken yardımcı olur. Ayrıca, Joomla çekirdeği ile birlikte gelen uzantıları incelemek ve kullanmadığınız uzantıları devre dışı bırakmak için 5 dakikanızı ayırın.

  3. İçerik hazırlamayı kapatma

    Çok sayıda özel modül kullanıyorsanız ( mod_customkendi kendine yazdığı gibi özel değil) Bunlarda içerik hazırlamayı devre dışı bırakıp bırakamayacağınızı kontrol edin. Bu, bazı işlemleri kurtarır.

  4. Önbellek Kullan

    Performans konusunda ciddiyseniz önbelleğe almayı etkinleştirmek istersiniz. Birçok anonim kullanıcısı olan ağır siteler için özellikle yararlıdır. Oturum açmış kullanıcılar önbelleğin çoğunu atlar, eğer bunlardan birçoğuna sahipseniz etkisi o kadar büyük olmaz.

  5. Alternatif bir oturum işleyicisi kullanma

    Alternatif bir oturum işleyicisi kullanarak daha önemli şeyler için veritabanınızı serbest bırakabilirsiniz. Ben bir kez daha disk IO artıracak gibi dosya (kafa karıştırıcı Joomla ayarlarında Yok denir) tavsiye etmem. APC kullanmak potansiyel olarak daha hızlıdır, ancak tüm oturum verilerini kaybetme riskini artırır. Sağ orta yol Memcache. Bu ek bir işlem gerektirse de, APC'den daha güvenilir ve tüm verileri veritabanında depolamaktan çok daha hızlı

  6. Sitenizi basit tutun

    Gerçekten Facebook düğmesine ihtiyacın var mı? Hiç kimsenin görmediği sevimli simgeye, kısmen bir afişin arkasında gizlendiğine ne dersiniz? Siteniz ne kadar az görüntülenirse o kadar hızlı olur. Ayrıca mümkün olan her yerde resimler yerine CSS3 kullanın.

Çeşitli

  1. Sık kullanılan simgesi ayarlama

    Internet Explorer 4.0'a dayanan bir karar sayesinde tarayıcılar favicon.icokullanıcı sitenizi her ziyaret ettiğinde çağrılan bir dosya için istekte bulunur . Eğer bir hesabınız yoksa, 404 yanıtları önbelleğe alınmadığından bu gereksiz G / Ç'ye neden olur. Sitenizin simgesini bir HTML meta etiketi ile belirtin veya favicon.icoweb köküne çağrılan bir dosya ekleyin . Favicon istemiyor musunuz? Bu konuma 1x1 piksel boyutunda saydam bir PNG yerleştirin. Uzantının hala olması gerektiğini unutmayın .ico.

  2. Resimlerinizi optimize edin

    Görüntüleri, özellikle PNG dosyalarını optimize ederek ne tür bir tasarruf elde edebileceğiniz şaşırtıcı. Herhangi bir işletim sistemi için çeşitli araçlar vardır, kişisel olarak OS X için mevcut olan ImageOptim'i kullanıyorum . Joomla'nın çekirdek görüntüleri zaten optimize edildi, ancak kendi resimlerinize gidin, özellikle şablonlar önemlidir. Kullandığınız uzantıları da kontrol edebilirsiniz. Açık kaynaksa, neden yeni optimize edilmiş görüntüler içeren bir çekme isteğine katkıda bulunmuyorsunuz?

Gelişmiş

Gerçekten dışarı çıkmak istiyorsanız, Vernik'i sitenizin önüne koymayı düşünün . Sitenize gelen istekleri önbelleğe alır ve mümkünse Joomla'ya çarpmadan kendi önbelleğinden sunar. Karmaşık bir araç ama çok fazla gücü var. Joomla, Edge Side Includes (ESI) gibi gelişmiş işlevlerden faydalanmayacak, ancak kendi kodunuz olabilir.


8
Görünüşe göre ... oldukça düşmanca. Sadece FYI, bunu yeni yazdım, metin hiçbir şekilde hazırlanmadı. Google'ı kullanmaktan çekinmeyin. Unutmayın cevaplar sadece orijinal sorgulayıcıya değil, aynı zamanda burada yollarını bulan gelecek kullanıcılara da yardımcı olmalıdır.
Rouven Weßling

13

Sitenizin yanıt sürelerini iyileştirmek için yapabileceğiniz BÜYÜK şey modül ayarlarınızı güncellemektir. Özel modüller (mod_custom kullanarak) içerik hazırlamayı etkinleştirme / devre dışı bırakma seçeneğine sahiptir. Bu, özel modülünüzdeki veri içeriğinde içerik eklentileri çalıştırmanıza olanak tanır. Düzgün kullanıldığında güçlüdür, ancak modül çıkışına ek oluşturma süresi ekler. Özel modül içeriğinizdeki bir içerik eklentisini gerçekten kullanmadığınız sürece, bunu kapatmak en iyisidir. Bunu yaptığınızda modül oluşturma süresinde bir azalma göreceksiniz.

Ayarın ekran görüntüsü: resim açıklamasını buraya girin

Not: Cevabım size yardımcı olduysa, lütfen cevabı kabul etmek için soldaki onay işaretine tıklayın.


3
Daha önce hiç içerik hazırlama bölümünü görmedim. Bu hangi Joomla sürümü için geçerlidir?
TryHarder

1
açıksa, eklentiler içerik üzerinde çalışabilir. Bu yüzden, özel html textarea modül pozisyonları kısa kodları veya diğer eklenti kısa kodları koyarsanız, bunlar gösterilmez, örneğin web sitesinde hazırlanan sürümde değil "{tag_name}"
göreceksiniz

2
"İçerik Hazırla" seçeneği Joomla 2.5 ve 3.x'te bulunmaktadır. Varsayılan ayar "Hayır" dır.
Neil Robertson

8

Sitenizi Google Sayfa hızı üzerinden çalıştırdığınızı ve sayfa yanıtlama süresini (yani, işaretlemenizin tarayıcıya gönderilmesi için geçen süreyi) azaltmayı düşündüğünüzü varsayalım.

Bunlar için en olası suçlular ağır sorgulardır. Hata ayıklamayı açın ve hangisinin en ağır sorgular olduğunu öğrenmek ve bunları kaldırmak veya azaltmak için sayfanın altına bakın. Ayrıca MySQL sunucunuzun yavaş sorgu günlüklerinden de yararlanabilirsiniz.

Bakabileceğiniz bir sonraki şey önbellekleme. Sitenizin türüne bağlı olarak muhafazakar veya aşamalı önbelleğe alabilirsiniz. Aşamalı, kullanıcısı olmayan özelliklere ve kullanıcı özelliklerine sahip sitelerde kullanılmalıdır.


Ağır sorguların nasıl göründüğüne dair ipuçları veya ekran görüntüleri sağlayabilir misiniz? Ulaşılacak bir eşik var mı?
David Fritsch

Bu gerçekten uygulamanıza bağlıdır. Ancak, yavaş sorgu günlüğüne giren (normal ayarlar altında yürütmek için 1 saniyeden fazla süren sorguyu günlüğe kaydeden) herhangi bir sorgu, bir önbelleği ayırmak ve / veya koymak için iyi bir adaydır. Aptalca gelebilecek başka bir şey, ancak tüm sorguların bir LIMIT olduğundan emin olun.
Ashwin Tarih

6

(Çoğu listelenmiş olan) yardımcı olabileceğini bildiğim şeyler şunlardır:

  1. Önbelleğe almak
  2. Sıkıştırma (css ve js dosyalarınızı gzipleyin)
  3. Dosyaları birleştirme (tüm css'leriniz tek bir dosyada birleştirilir)
  4. Görüntüleri ve dosyaları CDN'ye aktarma.

Yerleşik Joomla önbelleğini (hatta sunucuda APC etkin) ve gzip veya roket temasının rockbooster eklentisi gibi eklentilerin bir kombinasyonunu kullandım. Ben de Amazon hesabı ile nonumbers CDN eklentisi kullanıyorum.

Kesinlikle yardımcı olur, ancak sitenizi izlemeniz ve sorunları olan bileşenler için önbelleği devre dışı bırakmanız gerekir. Önbelleğe alma ile güzel oynamadı çünkü sitemizde CiviCRM atlamak zorunda kaldı. Joomla, bunun üstesinden gelebilecek bir önbellek kontrol eklentisiyle birlikte gelir.


2
görüntülerinizi mümkün olduğunca birleştirin ve sıkıştırın. Sprite'lar sayfa yükleme başına düzinelerce istek kaydedebilir.
ContextSwitch

Spriteları daima unuturum. :)
Brian Peat

spritelarla ilgili bir şey düşünün - Windows Yüksek Kontrast moduna geçtiğinde arka plan resimleri görüntülenmez. Bu davranış genel grafikler için kabul edilirken, kullanıcı tarafından tıklanması gereken kontroller için bir sorundur - sadece kaybolurlar (örnek: bu sitedeki oylama düğmeleri)
miroxlav

Heh Brian Peat, StackExchange'te bir CiviCRM sitesi başlatmamıza yardım etmek isteyip istemediğinizi merak ediyorum. Başka bir StackExchange sitesinde 200'ün üzerinde itibara sahip olan komisyonculara ihtiyacımız var: area51.stackexchange.com/proposals/77367/civicrm Şerefe!
Joe Murray

Bir bakacağım. Bunların hepsi Joomla tabanlıydı ve herhangi bir programlama yapmadım, ancak temel sorulara yardımcı olabilirim.
Brian Peat

4

Ayrıca yerel varlıkları azaltmayı ve uygun önbelleğe almayı da incelemek isteyeceksiniz. Yapabileceğiniz bir şey CDN eklentilerini kullanmak. İşte iki tavsiye ederim:

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

NoNumbers CDN Joomla! İçin - http://www.nonumber.nl/extensions/cdnforjoomla

Ayrıca, yukarıdakilerin hiçbiri sorunları çözmüyorsa, daha derin bir sorununuz olabilir - muhtemelen şablonunuzda, sunucunun kendisinde veya başka şeylerde. Bu durumda, sorunu çözmek ve sizin için çözmek için birini işe almak en iyisi olabilir.


3

Bu kodu .htaccess dosyanızda da kullanabilirsiniz:

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>

bu ilginç görünüyor, ne yaptığını açıklayabilir misiniz?
web-tiki

@ web-tiki Ayarının süresi sona erecek. Son kullanma tarihi üstbilgileri, tarayıcıya sunucudan belirli bir dosya isteyip istemediklerini veya tarayıcının önbelleğinden alıp almamalarını söyler. Expires Headers'ın arkasındaki fikir sadece sunucudan indirme yükünü azaltmak değil (değiştirilmediğinde sürekli olarak aynı dosyayı indirmek değerli yükleme süresini boşa harcıyor) değil, sunucu için HTTP isteklerinin sayısını azaltmaktır. REFERENCE gtmetrix.com/add-expires-headers.html
TryHarder

2

Joomla! Kullanarak yüzlerce web sitesi oluşturdum!

Çoğu durumda insanlar Joomla'nın sunucuda yoğun bir şekilde çalıştığını düşünüyor, ancak benim yaptığım analizlere göre, web sitenizi HIZLI tutmak için en önemli şey GÖRÜNTÜLERİ ve JS / CSS'I OPTİMİZE ETMEK.

Görüntünün boyutunu değiştirmek için JCE gibi Joomla editörlerini kullanmayın. Resimlerinizi gereken boyuta göre yeniden boyutlandırmak için photoshop veya başka bir düzenleyici gibi resim düzenleyicileri kullanın!

JS / CSS sıkıştırma araçlarını kullanın.

Web sitesi hızını analiz etmek için her zaman Pingdom Araçları'nı kullanırız ve JS / CSS'yi optimize etmek için T3 Framework'ün yerleşik özelliğini kullanırız!


JS / CSS sıkıştırması için hangi araçları kullanıyorsunuz? Birisinin sizin siteleriniz için yaptığınız gibi web sitelerini nasıl analiz edebileceğine dair herhangi bir öneriniz var mı?
David Fritsch

Web sitesi hızını analiz etmek için her zaman Pingdom Araçları'nı kullanırız ve JS / CSS'yi optimize etmek için T3 Framework'ün yerleşik özelliğini kullanırız!
Gev Balyan

2
Ayrıca, sıkıştırma ve minyatürün çoğunu elde etmek için JCH optimizasyonunu başarıyla kullandım. Başka bir seçenek de, temel olarak Google Pagespeed'in önerilerinin çoğunu uygulayan Apache'nin mod_pagespeed'ini kullanmaktır.
Ashwin Tarih

2
Tüm iyi araçlar. @GevBalyan, bağlantılarla cevabınıza böyle şeyler eklemenizi tavsiye ederim. İnsanlara biraz googling kazandırır! Hatta bu cevabı bu cevaba eklemek için düzenleyebilirsiniz. :)
David Fritsch

Önbelleğe almayan sıkıştırma araçları sunucu yanıt süresini artırabilir, çünkü sunucu yanıtına işlem süresi ekler.
Don Gilbert

1

Kullanılmayan eklentileri kaldırdınız mı? Joomla, bir istekte tetiklenen etkinlikler için yayınlanan her eklentiyi yüklemeli ve işlemelidir.

Yüklediğiniz uzantıları ve bunların Joomla! İle nasıl etkileşim kurduğunu anlamalısınız.

Birçok uzantı, kod işlevlerini başlatmak için içeriği, sistemi veya kullanıcı etkinliklerini yöneten eklentiler yükler. Bazıları gereksiz olabilir.

K2'nin, tek dil siteleri için gerçek çıktı üretmeyen dile ilişkin olaylara yanıt veren birçok eklenti yüklediğini biliyorum. Bu eklentilerin yayından kaldırılması işlem süresini kısaltabilir.


Bunun hakkında daha fazla konuşabilir misin? "Tetiklenen olaylar" ile ne demek istiyorsun? Hangi olayların tetiklendiğini nasıl anlayabilirim?
David Fritsch

1
İyi soru. Yüklediğiniz uzantıları ve bunların Joomla! İle nasıl etkileşim kurduğunu anlamalısınız. Birçok uzantı, kod işlevlerini başlatmak için içeriği, sistemi veya kullanıcı etkinliklerini yöneten eklentiler yükler. Bazıları gereksiz olabilir. K2'nin, tek dil siteleri için gerçek çıktı üretmeyen dile ilişkin olaylara yanıt veren birçok eklenti yüklediğini biliyorum. Bu eklentilerin yayından kaldırılması işlem süresini kısaltabilir. Benzer şekilde, K2'nin kendisi şüpheli derecede değerli metrikler üretmek için pahalı sorgular oluşturma alışkanlığına sahipti.
Joomsavvy

1
Cevabınızı yorumunuzdaki bilgilerle güncelleyebilir misiniz?
Harald Leithner

1

Sunucu / Web Barındırma Planı Kaynaklarını Geliştirin

Belki OP'nin aradığı cevap değil, ancak herkes için açık değilse (ve henüz başka bir cevap gelmediğinde) bahsetmeye değer: bellek, CPU ve disk hızı gibi sunucu kaynaklarını geliştirin.

Paylaşılan web hosting kullanıyorsanız, "ekonomi" planından "iş" planına veya başka bir daha gelişmiş plana yükseltme yapmak, web siteniz için mevcut sunucu kaynaklarını iyileştirebilir ve sunucu yanıt süresini azaltabilir. Daha kaliteli bir hosting şirketine geçmek (örneğin daha az kalabalık paylaşılan web barındırma sunucuları ile) de yardımcı olabilir.

Daha iyi bir barındırma planı, temel barındırma planına dahil olmayan performans geliştirmelerine de erişmenizi sağlayabilir. Örneğin, "GrowBig" ve "GoGeek" SiteGround barındırma planları, sunucu yanıt süresini önemli ölçüde azaltmaya yardımcı olan dinamik önbellek içerir. Dinamik önbellek seçeneği "Başlangıç" planında mevcut değildir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.