대기 (TTFB) 시간을 줄이는 방법


114

생성 된 시간을 기준으로 정렬 된 순서로 테이블에서 사용자 목록을 가져 오는 쿼리가 있습니다. 크롬 개발자 도구에서 다음 타이밍 다이어그램을 얻었습니다.

크롬에서 타이밍

TTFB (첫 번째 바이트까지의 시간)가 너무 높다는 것을 알 수 있습니다.
SQL 정렬 때문인지 확실하지 않습니다. 이것이 이유라면 어떻게이 시간을 줄일 수 있습니까?
아니면 TTFB 때문입니까? TTFB가 1 초 미만이어야한다는 블로그를 보았습니다. 그러나 나를 위해 그것은> 1 초를 보여줍니다. 내 질문 때문인가요 아니면 다른 것인가요?
이 시간을 어떻게 줄일 수 있을지 모르겠습니다.
각도를 사용하고 있습니다. SQL 정렬 대신 각도를 사용하여 테이블을 정렬해야합니까? (많은 게시물이 문제가되지 않아야한다고 말합니다.)
제가 알고 싶은 것은 TTFB를 어떻게 줄일 수 있는지입니다. 여러분! 나는 실제로 이것에 익숙하지 않습니다. 그것은 우리 팀원들이 내게 주어진 임무입니다. TTFB 시간을 어떻게 줄일 수 있는지 잘 모르겠습니다. 많은 게시물을 보았지만 제대로 이해하지 못했습니다. TTFB는 무엇입니까? 서버에 걸리는 시간입니까?


8
귀하의 질문은 여기서 무슨 일이 일어나고 있는지 이해가 부족하다는 것을 보여줍니다. 이것은 서버를 기다리는 시간이므로 AngularJS를 사용하든 다른 프레임 워크를 사용하든 관계가 없습니다. 서버 측 코드를 개선하려면 실제로 코드를 보여 주어야합니다.
dirkk

아래에있는 내 대답은 또는 당신은이 질문에 대한 답을 생각하는 당신을 도움이 있다면 @govindpatel, 정답으로 표시하시기 바랍니다)
다니엘 T. Sobrosa

간단한 테이블 정렬의 경우 (테이블 데이터를 이미 가져 왔고 다른 속성으로 데이터를 재 지정한다고 가정) 정렬 된 데이터에 대한 다른 요청을 보내는 것보다 클라이언트 측에서 수행하는 것이 훨씬 빠릅니다.
Richik SC

답변:


116

TTFB는 응답 본문의 첫 번째 바이트 (예 : json, xml 등의 유용한 데이터)에 걸리는 시간이 아니라 서버에서 수신 한 응답의 첫 번째 바이트에 도달하는 시간입니다. 이 바이트는 응답 헤더의 시작입니다.

예를 들어 서버가 어려운 작업 (예 : 무거운 SQL)을 수행하기 전에 헤더를 전송하면 TTFB가 매우 낮아 지지만 "true"는 아닙니다.

귀하의 경우 TTFB는 서버에서 데이터를 처리하는 데 소비하는 시간을 나타냅니다.

TTFB를 줄이려면 서버 측 작업을 더 빨리 수행해야합니다.


2
TTFB 동안 발생하는 타이밍을 추가로 진단하려면 서버 측 타이밍 방법 (예 : 설정 타이머 또는 디버그 로그)을 사용하여 각 논리에 소요 된 시간을 디버깅 할 수 있습니다.
Raptor

1
이 기사를 살펴보고 문제를 자세히 설명하고 가능한 솔루션에 대한 조언을 제공합니다. websiteoptimization.com/speed/tweak/time-to-first-byte
LucaM

가장 중요한 점으로 TTFB 치료주의 : blog.cloudflare.com/...
오웬 까만

당신이 @govindpatel이 답변 도움이 오른쪽 응답으로 표시, 제발)
다니엘 T. Sobrosa

16

나는 같은 문제를 만났다. 내 프로젝트가 로컬 서버에서 실행 중입니다. 내 PHP 코드를 확인했습니다.

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

localhost내 로컬 데이터베이스에 연결 하는 데 사용합니다. 그것은 아마도 당신이 설명하고있는 문제의 원인 일 것입니다. HOSTS파일을 수정할 수 있습니다. 라인 추가

127.0.0.1 localhost.


5
감사합니다. I was change localhost(TTFB : 1s) to 127.0.0.1(TTFB : 12ms)
Mr. Black

제 경우에도이 답변이 도움이되었습니다 : TTFB 2,39 s-> TTFB 110 ms. 누군가 반대표를 던진 이유는 무엇입니까?
Martin Pabst 2017

내 Spring-Boot 응용 프로그램에서도 수정했다고 생각합니다. Docker-Container에서 Postgres 데이터베이스를 사용하고 있습니다. TTFB는 최대 10 초 였지만 이제는 약 40ms입니다. :)
Sepultura

"localhost"가 더 오래 걸리는 이유는 무엇입니까?
showdev

14

TTFB는 뒤에서 일어나는 일입니다. 브라우저는 뒤에서 일어나는 일에 대해 아무것도 모릅니다.

실행중인 쿼리와 웹 사이트가 서버에 연결되는 방식을 조사해야합니다.

기사는 TTFB를 이해하는 데 도움 될 수 있지만 그렇지 않으면 애플리케이션에 대해 더 깊이 파헤쳐 야합니다.


4

기사 를 읽는 것이 좋습니다. 사용자 요청 (페이지, 검색 결과 등)에 대한 전체 응답을 최적화하는 방법에 더 중점을 두는 .

이에 대한 좋은 주장은 gzip을 사용하여 페이지를 압축하는 방법에 대한 예제입니다. 압축하지 않으면 ttfb가 더 빠르지 만 압축되지 않은 콘텐츠를 다운로드하는 데 시간이 더 오래 걸리기 때문에 사용자의 전반적인 경험은 최악입니다.


해당 기사의 댓글 섹션을 확인하십시오. 많은 사람들이 TTFB에 관심을 가져야 할 설득력있는 이유를 제시합니다.
Zack Macomber

4

당신이 PHP를 사용하는 경우, 사용 시도 <?php flush(); ?></head>와 전</body> 당신이 (헤더 또는 콘텐츠 등) 신속하게 출력하고 싶은 부분이든. PHP가 끝날 때까지 기다리지 않고 실제 코드를 출력합니다. 이 기능을 항상 사용하지 마십시오. 그렇지 않으면 속도 증가가 눈에 띄지 않게됩니다.

더 많은 정보

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.