Bekleme (ttfb) süresini nasıl azaltabilirim


114

Bir tablodan bir kullanıcı listesini, oluşturulduğu zamana göre sıralı sırada almayı içeren bir sorgum var. Chrome geliştirici araçlarından aşağıdaki zamanlama diyagramını aldım.

kromdan zamanlama

TTFB'nin (ilk bayta kadar geçen süre) çok yüksek olduğunu görebilirsiniz.
Bunun SQL sıralaması nedeniyle olup olmadığından emin değilim. Sebep buysa, bu süreyi nasıl kısaltabilirim?
Yoksa TTFB yüzünden mi? TTFB'nin daha az (<1sn) olması gerektiğini söyleyen bloglar gördüm. Ama benim için> 1 sn gösteriyor. Sorgum yüzünden mi yoksa başka bir şey mi?
Bu süreyi nasıl kısaltabilirim emin değilim.
Köşeli kullanıyorum. Tabloyu sıralamak için SQL sıralaması yerine açısal kullanmalı mıyım? (birçok gönderi bunun sorun olmaması gerektiğini söylüyor)
Bilmek istediğim şey, TTFB'yi nasıl azaltabilirim. Çocuklar! Aslında bunda yeniyim. Ekip üyelerim tarafından bana verilen görevdir. TTFB süresini nasıl azaltabilirim emin değilim. Birçok gönderi gördüm ama tam anlayamadım. TTFB nedir. Sunucunun aldığı süre mi?


8
Sorunuz burada neler olup bittiğini anlamadığınızı gösteriyor. Bu, sunucuyu bekleme süresidir, bu nedenle AngularJS veya başka bir çerçeve kullanıp kullanmamanız önemli değildir. Sunucu tarafı kodunu iyileştirmek istiyorsanız, aslında bize kodu göstermelisiniz.
dirkk

@govindpatel, aşağıdaki cevabım size yardımcı olduysa veya soruyu cevapladığını düşünüyorsanız, lütfen doğru cevap olarak işaretleyin;)
Daniel T. Sobrosa

Basit tablo sıralaması için (tablo verilerinin zaten getirildiğini ve verileri farklı bir özelliğe göre kullandığınızı varsayarsak), bunu istemci tarafında yapmak, sıralanan veriler için başka bir istek göndermekten çok daha hızlı olacaktır.
Richik SC

Yanıtlar:


116

TTFB, yanıt gövdesinin ilk baytına kadar geçen süre değil (yani yararlı veriler, örneğin: json, xml, vb.), Sunucudan alınan yanıtın ilk baytına kadar geçen süredir. Bu bayt, yanıt başlıklarının başlangıcıdır.

Örneğin, sunucu zor işi yapmadan önce başlıkları gönderirse (yoğun SQL gibi), çok düşük bir TTFB alırsınız, ancak bu "doğru" değildir.

Sizin durumunuzda TTFB, sunucudaki verileri işlemek için harcadığınız zamanı temsil eder.

TTFB'yi azaltmak için, sunucu tarafı çalışmasını daha hızlı yapmanız gerekir.


2
TTFB sırasında meydana gelen zamanlamaları daha ayrıntılı teşhis etmek için, her mantıkta harcanan zamanın hatalarını ayıklamak için sunucu tarafı zamanlama yöntemlerini (örn. Zamanlayıcıları ayarlama veya hata ayıklama günlüğü) kullanabilirsiniz.
Raptor

1
Bu makaleye bir göz atın, sorunu ayrıntılı olarak açıklar ve olası çözümler için tavsiyeler verir: websiteoptimization.com/speed/tweak/time-to-first-byte
LucaM

TTFB'yi en önemli nokta olarak ele almaktan kaçının: blog.cloudflare.com/…
Owen Blacker

Bu cevap size @govindpatel yardımcı oluyorsa, lütfen doğru yanıt olarak işaretleyin;)
Daniel T. Sobrosa 18'16

16

Ben de aynı problemle karşılaştım. Projem yerel sunucuda çalışıyor. PHP kodumu kontrol ettim.

$db = mysqli_connect('localhost', 'root', 'root', 'smart');

localhostYerel veritabanıma bağlanmak için kullanıyorum . Açıkladığınız sorunun nedeni bu olabilir. HOSTSDosyanızı değiştirebilirsiniz . Satırı ekleyin

127.0.0.1 localhost.


5
Teşekkür ederim. localhost(TTFB: 1s) 127.0.0.1(TTFB: 12ms ) olarak değiştirildim
Bay Black

Benim durumumda bu cevap da yardımcı oldu: TTFB 2,39 s -> TTFB 110 ms. Neden birisi olumsuz oy verdi?
Martin Pabst

Spring-Boot uygulamam için de düzeltildiğini düşünüyorum, bir Docker-Container'da Postgres veritabanı kullanıyorum, TTFB 10 saniyeye çıktı, şimdi sadece 40ms oldu :)
Sepultura

"Localhost" neden bu kadar uzun sürüyor?
showdev

14

TTFB perde arkasında olan bir şeydir. Tarayıcınız perde arkasında ne olduğu hakkında hiçbir şey bilmiyor.

Hangi sorguların çalıştırıldığına ve web sitesinin sunucuya nasıl bağlandığına bakmanız gerekir.

Bu makale TTFB'yi anlamanıza yardımcı olabilir, ancak aksi takdirde başvurunuzda daha derine inmeniz gerekir.


4

Bu makaleyi okumanızı ve kullanıcı isteğine verilen genel yanıtı nasıl optimize edeceğinize daha fazla odaklanmanızı öneririm (bir sayfa, bir arama sonucu vb.)

Bunun için iyi bir argüman, sayfayı sıkıştırmak için gzip kullanma hakkında verdikleri örnektir. Sıkıştırmadığınızda ttfb daha hızlı olsa da, kullanıcının genel deneyimi en kötüdür çünkü sıkıştırılmamış içeriği indirmek daha uzun sürer.


Bu makalenin yorumlar bölümünü kontrol ettiğinizden emin olun. Birçok insan, TTFB ile ilgilenmek için ikna edici nedenler sunar.
Zack Macomber

4

PHP kullanıyorsanız, hızlı bir şekilde çıktısını almak istediğiniz bölümden <?php flush(); ?>sonra </head>ve önce kullanmayı deneyin </body>(başlık veya içerik gibi). Php'nin bitmesini beklemeden gerçek kodu çıkaracaktır. Bu işlevi her zaman kullanmayın, aksi takdirde hız artışı farkedilemez.

Daha fazla bilgi

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.