2012-04-03 3 views
1

이 질문은 서버 효율성과 가용성에 관한 질문입니다.AJAX 또는 PHP가 "echo"할 수 있습니까?

나는 AJAX 스크립트를 호출하는 PHP 페이지가 있는데 1 백만 명의 사용자가 동일한 초 내에 연결한다고 가정 해보십시오.

AJAX 스크립트가 데이터를 수신 할 때마다 대신 한 번만 표시되도록 제한하면 성능이 향상됩니까?

모든 데이터를 변수에 인쇄 한 다음 스크립트가 완료되면 해당 변수를 반향시킬 것을 계획했습니다.

위의 작업을 수행 할 때와 비슷한 스크립트가 끝날 때까지 서버에 데이터를 단순히 저장하는 것이 확실하지 않거나 실제로 매번 클라이언트와 연결되는 경우 확실하지 않습니다.

각 에코가 연결되면 변수를 데이터로 채우는 것보다 낫습니다. 그러면 RAM이 빠르게 채워질 수 있습니다.

이 AJAX 스크립트는 데이터베이스에서 데이터를 가져오고 있습니다 (PHP 페이지 호출). 나는 단순히 테이블, div, tr, etc 태그를 인쇄하고 데이터베이스에서 데이터를 출력하는 "echo"구문을 많이 가지고있다. 그런 다음 다시 한 번 테이블, div, tr 등의 태그를 인쇄하십시오. 이 데이터로 변수를 채우고 ONCE를 인쇄/에코하는 것이 더 낫다고 말하는가?

감사합니다,

+0

http://c2.com/cgi/wiki?PrematureOptimization –

+0

귀하의 질문은 나에게 모호 볼 수 있습니다. 명확하게 할 수 있다면 도움이 될 것입니다 (예일 수도 있습니다). –

+0

설명하려고하는 것은 CACHING 결과에 관한 것입니다. – safrazik

답변

2

는 일반적으로 서버가 스크립트를 처리하지 않고 HTML의 형태로 출력을 보내기 때문에 페이지와 서버 간의 긴 링크는 더있다. AJAX 요청을하면 연결을 다시 열고 요청을 보냅니다.

병목 현상은 서버에 보내는 요청의 양에서 발생합니다. 가능한 한 요청을 제한해야합니다.

각 에코에 대해 연결되면 변수를 데이터로 채우는 것이 좋으며 RAM이 빠르게 채워질 수 있습니다.

사용자가 잘못 생각한 경우 특히 많은 수의 사용자를 처리 할 때 가능한 한 요청을 최소화해야합니다.


다음은 콘텐츠를 업데이트하는 데 거의 무의미합니다. 페이스 북이 어떻게 콘텐츠를 업데이트하는지보십시오. 타이머와 내용은 매분마다 업데이트됩니다. 알림 부분을 제외합니다.

+0

서버에서 연결 유지가 활성화 된 경우 AJAX 호출이 기존 연결을 다시 사용할 수 있습니까? –

+0

@ Pierre-OlivierBourgeois, Apache KeepAlive 지시문은 클라이언트에서 Apache 서버로의 TCP/IP 연결을 KeepAliveTimeout 값으로 지정된 지정된 기간 동안 '활성'상태로 유지하도록 지정합니다. 따라서 무거운 요청을 처리 할 때만 유용합니다. – Starx

+0

@Starx 여기 좀 더 자세히 설명합니다. 이 AJAX 스크립트는 데이터베이스에서 데이터를 가져오고 있습니다 (PHP 페이지 호출). 나는 단순히 테이블, div, tr, etc 태그를 인쇄하고 데이터베이스에서 데이터를 출력하는 "echo"구문을 많이 가지고있다. 그런 다음 다시 table, div, tr 등의 태그를 ajax 스크립트에 다시 표시합니다. 이 데이터로 변수를 채우고 대기중인 AJAX 스크립트에 ONCE를 인쇄/에코하는 것이 더 낫다고 말하는가? 감사, –

0

"I'm not sure if echoing is simply storing the data in the server until the script finishes, similar to what I want to do above or if it is actually connecting with the client each time?"

가 출력 버퍼링을 사용하는 경우, 출력 데이터는 출력 버퍼에 저장된 전체 데이터로서 브라우저로 전송한다. 예 : 출력 크기는 10kb이며, 완료되면 10kb 데이터가 전송됩니다.

그렇지 않으면 출력은 PHP 구성 설정에 따라 특정 크기의 출력 크기 간격으로 전송됩니다. 예 : 출력 데이터 크기가 총 10kb이고 출력이 2kb, 4kb, 6kb, 8kb 및 10kb 데이터에 도달하면 전송됩니다.

하지만,

it is NOT connecting with the client each time

을 그리고 때때로, 그것은 또한 브라우저에 따라 달라집니다. 브라우저마다 다른 방식으로 처리합니다. 성능에 대해 고려하는 경우

, 당신은 또한 caching your ajax results

관련 문제