HTML'im yüklenmeden önce 'bekleme' süresine neden olan nedir?


12

Çok yavaş yüklenen bir web sitem var. Bir hız testi çalıştırdığımda, HTML yüklenmeden önce 6 secound boşluğu olduğunu görüyorum. Görüntüler ve JS komut dosyaları bu noktadan sonra çok hızlı yüklenir.

Sarı 'bekleme süresi' çubuklarının altındaki resimde görebilirsiniz:

HTML dosyasının yüklenmesi 5 saniyeden fazla sürdü, diğer varlıkların çoğu ise 1 saniyenin altında yükleniyor

Sayfadaki HTML içeriği ne olursa olsun bu tutarlı görünüyor.

Bu site bir CMS (ModX Revo) kullanıyor, bu yüzden HTML aslında bir SQL veritabanında saklanıyor ve PHP tarafından getiriliyor, ancak bu sorunu daha önce hiç yaşamadım.

Buna neyin sebep olduğunu ve nasıl hızlandırabileceğimi bilen var mı?


Bu yeni bir şey mi? Yani, bu sayfalar daha önce normal bir şekilde gerçekleştirildi mi ve şimdi kötü performans gösteriyor mu? Yoksa bu daha yeni bir kurulum / site mi? Bize daha fazla bilgi verebilir misiniz?
closetnoc

1
Bunu tutan bazı aracı ağ olmadığı sürece, bu sunucunuzun yanıtı oluşturmak için zaman alıyor gibi görünüyor? "HTML içeriği ne olursa olsun" - CMS'nizdeki HTML içeriği mi yoksa tam anlamıyla statik bir HTML sayfası mı diyorsunuz? Henüz yapmadıysanız kesinlikle basit bir "Merhaba Dünya" statik HTML sayfası denerdim. Ayrıca pingdom sunucuları Avustralya'ya dünyanın diğer tarafında olduğunu unutmayın (hangi barındırılan nerede olduğunu varsayalım)?
MrWhite

1
IMO sorunu öncelikle bu bir sayfadadır - sunucunuzun / CMS'nizin yanıtı oluşturması uzun sürüyor gibi görünüyor. Verimsiz SQL sorgusu ?? Sitenizdeki diğer sayfaların nispeten hızlı olduğu görülüyor. (?)
MrWhite

Yanıtlar:


13

Bekleme için teknik terim , ilk bayt zamanı olarak kabul edilir ve bir web sunucusunun veya diğer ağ kaynaklarının yanıt verebilirliğini belirler.

İlk bayt zamanının yüksek olmasının bazı yaygın nedenleri:

  • Aşırı yüklenmiş ağ (normalde paylaşılan barındırma)
  • Yanlış yapılandırma sunucuları
  • Siz ve sunucu arasındaki mesafe (coğrafi konum küçük bir rol oynar)
  • Sunucu hataları (atlama sayısı)

Genellikle bu sorun genellikle web sitelerinin ve onları ziyaret eden insanların çok fazla olması nedeniyle paylaşılan barındırmada görülür, bu da elbette ağ bayt süresini artırır. Başka bir olası neden, ağdaki bir yerde bir atlama gibi bir hatadır veya sunucunuz hedeflediğiniz kitlenin bulunduğu yerde olmadığından, örneğin 'GOOD' İngiltere sunucusunun, İngiltere, verilerin gönderilmesi ve alınması gereken mesafe nedeniyle (Normalde 100-200ms civarında bir artış).

Belki yeni bir ev sahibi edinme zamanı

Geçmişte ilk bayta kadar geçen zaman nedeniyle sunucudan sunucuya taşınmak zorundayım, yeni bir web barındırma seçmek veya mevcut paketinizi yükseltmek durumunda olabilirsiniz.

Güvenilir test

Web sitenizin hızını ev genişbantınızdan test etmek çok taraflı olduğundan geniş bandınızın web sitesine yanıt vermemesiyle ilgili bir sorun olabilir. Web sitenizi birden çok sunucudan birden çok bağlantı kullanarak test etmelisiniz ... Web sayfası testi yapmanızı ve aynı anda farklı konumlardan ve hedeflenen coğrafi kitlelerin çoğunda birden çok test çalıştırmanızı öneririm . Bu size neler olduğunu daha iyi bir genel bakış verecektir, ilk bayt sonra başka bir şey önce web barındırma başvurun.

Sunucuyu pingleme ve izleme yolu

Sonuçlar görüntülenebilir veya görüntülenmeyebilir sunucuda bir ping çalıştırmayı denerseniz, ping, UDP veya TCP yerine ICMP kullanır; bunun anlamı, httpd'nizin çalışacağı 80 numaralı bağlantı noktasındaki sunucuyu sorgulamak değildir. İlk baytın artmasına neden olabilecek herhangi bir sunucuyu tanımlamak için izleme yolunu kullanabilirsiniz, yine ... 80 numaralı bağlantı noktasındaki httpd sunucusunu sorgulamaz ve Windows kullanarak traceroute ICMP ve Mac / Linux kullanır makineler UDP kullanacaktır. Test etmeye değer, çünkü bu kadar hızlı ve kolay bir şey ama sonuçlar iyi gelirse, bir yerde bir sorun olmadığı anlamına gelmez.


Merhaba @SunWKim Cevabımı istediğin şeyle güncelledim. Cevabımın altına bak.
Simon Hayter

İlk bayt zamanının ortak nedenlerini kabul ediyorum. Ancak bu örnekte; JavaScript kodu ile ilgili daha fazla olduğuna inanıyorum.
Paz

İlk Bayt çok çeşitli şeylerden kaynaklanabilir, ancak üstbilgi yanıtı JavaScript, CSS, Görüntüler ve benzeri satır içi öğelerden önce olduğu için JavaScript bunlardan biri değildir. İlk baytı gerçek öğelerle ve dosyalarla karıştırmayın ..
Simon Hayter

Ben ikisini karıştırmıyorum. Belki mbff.com.au sitesini ziyaret ettiyseniz ve kendiniz gördüyseniz, ilk bayt için zaman meselesi olmadığına ikna olabilirsiniz. Gecikme ilk başlık yanıtından sonra gerçekleşir.
Paz

1
The delay is occurring after the first header responseo zaman bu ilk bayt değildir. İlk bayt ilk cevaptır.
Simon Hayter

4

1) Geçerli kodla eşzamanlı olarak yüklenmeyen Adobe TypeKit var. Gelişmiş eşzamansız kodla değiştirmeyi deneyin: http://help.typekit.com/customer/portal/articles/649336-embed-code

Bu standart yerleştirme kodu, etiketlerin FOUT [Unstyled Text Flash'ı] 'nı önlemeye yardımcı olmak için sayfanın daha fazla oluşturulmasını engellemesinden yararlanır. Typekit betiği yüklenirken sayfanın oluşturulması engellenir, bu nedenle metin yedek yazı tipleriyle görüntülenmeye başlamaz.

2) Yeni TypeKit ile test edin. Yükleme süresi şimdi nasıl? Daha iyi? 3. adıma gidin.

3) Google Analytics'inizi, en son eşzamansız sözdizimini sağlayan güncellenmiş bir JavaScript ile değiştirin: https://developers.google.com/analytics/devguides/collection/gajs/

4) Test edin. Sayfa yükleniyor hala daha mı iyi?

5) Son olarak, pattern.jpg gibi görüntüleri optimize etmeyi düşünün. Bir PNG'ye dönüştürdüm ve dosya boyutunu 199kB'den 56kB'ye indirmeyi başardım. Bu, dosyayı alma süresini azaltır: https://www.dropbox.com/s/i06jx509bmprhhh/pattern.png?dl=0

Umarım bu yardımcı olur.


3

PHP ve PHP Olmayan Elemanlar

PHP olmayan varlık yükleme sürelerinizi PHP tabanlı yükleme sürelerinizle karşılaştırırsanız, PHP dahil değilse sunucunun hızlı yanıt verdiğini göreceksiniz.

Bu genellikle PHP betiğinizin içindeki sorunları gösterir.

Sorun PHP katmanında veya veritabanında olabilir. XDebug veya NewRelic gibi gelişmiş hata ayıklama araçlarını kullanmak, darboğazınızı hızlı bir şekilde tespit etmenize yardımcı olabilir.

İlk bayt sorunlarına zaman, donanım kısıtlamaları, kötü yapılandırma veya verimsiz koddan kaynaklanabilir. Paylaşılan barındırmada, donanım kısıtlamaları ve kötü yapılandırma büyük olasılıkla.

Her durumda, sorunu çözmek genellikle şunlardan biri veya tümü anlamına gelir:

  • Daha fazla donanım
  • Daha iyi programlama
  • Önbellek Ekle

Zaten adanmış kaynaklarda bulunuyorsanız daha hızlı donanım, açık ancak genellikle maliyetli bir çözümdür.

Sorun, geliştirici kaynaklarının bakımını yapmadığınız veya bakımını yapmadığınız kodlar içindeyse daha iyi programlama mümkün olmayabilir.

Önbellekleme, temel alınan ve düşük performans gösteren kaynaklara ulaşması gereken istek sayısını azaltarak yardımcı olur.

Test yapmak

Test araçlarını kullanırken birden fazla çalışma yaptığınızdan emin olun. Ağ ve geçici sunucu ani artışları sizi kolayca yanlış yola yönlendirebilir, böylece bunları ortalamayı denemek istersiniz.

Barındırma

Paylaşılan bir barındırma hesabındaysanız, performans sorunları hakkında daha iyi bilgi sahibi olmak için bulut veya VPS türü hizmetlere geçmeyi düşünün. Bir önbellek tekniği (CDN veya Cloudflare türü hizmet) kullanmadığınız sürece, toplu paylaşılan barındırma sistemlerindeki performans sorunlarını düzeltmek, sunucunun yeterli denetiminden yoksun olmanız nedeniyle çok zor olabilir.


-1

Üçüncü taraf çerezlerini yalnızca ziyaret edilenlere ayarlamayı deneyin.

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.