2011-03-03 1 views
0

this 튜토리얼을 기반으로 올바르게 작동하는 페이지를 만들었습니다. 페이지에 두 개의 드롭 다운 상자를 추가하고 this snippet을 기반으로 결과를 적절히 필터링 할 수있었습니다. 그래서 실제로 모든 것이 제대로 작동합니다. 그러나, 나의 질문은 절차의 효율성에 관한 것이다. 현재, 프로세스는 다음과 같습니다.성능 최적화 : PHP, mySQL 및 Javascript를 통한 Google지도

1) 사용자가 페이지 방문 2) body onload()를 이라고합니다. 3.) Javascript는 전달 된 기준에 따라 데이터베이스를 쿼리하는 PHP 스크립트를 호출합니다 URL을 통해) 쿼리를 XML 파일로 내 보냅니다. 4.) XML 파일은 사용자 로컬 컴퓨터에서 javascript를 통해 파싱됩니다.

하나의 검색에 대해 수천 개의 결과가있을 수 있습니다 (따라서지도에 표시 할 수천 개의 마커가있을 수 있습니다). 짐작할 수 있듯이 모든 마커를 배치하는 데 시간이 오래 걸립니다. 속도를 높이기위한 몇 가지 아이디어가 있지만 경험이 풍부한 사용자와의 만남을 통해 내 논리가 올바른지 확인하고 싶습니다. 나는 어떤 제안에 열려있어!

아이디어 # 1 : 쿼리를 한 번 실행하여 모든 가능한 결과가 포함 된 PHP를 통해 XML 파일을 생성하고 XML 파일을 로컬에 저장 한 다음 필터링을 수행하는 방법이 있습니까? 자바 스크립트?

아이디어 # 2 : 서버에서 cron 작업을 생성하여 XML 파일을 알려진 위치로 내 보냅니다. "gdownloadurl (phpfile.php)"대신 gdownloadurl (xmlfile.xml)을 사용하면 사용자가 드롭 다운 상자의 값을 변경할 때마다 새 쿼리를 실행할 필요가 없습니다.

아이디어 # 3 : php 파일 (URL을 통해)로 다시 기준을 전달하는 대신지도에서 마커를 배치하기 전에 자바 스크립트를 통해 결과를 필터링해야합니까?

나는 마커를 톤과 톤으로 표시하는 많은 웹 페이지를 보아 왔습니다. Google지도와 비슷한데 내 응용 프로그램만큼 오래 걸리지 않습니다. 이런 상황의 표준 사례는 무엇입니까?

감사합니다.

편집 : 내 논리에 결함이있을 수 있습니다. 모든 결과를 XML 파일로 내보내려면 JavaScript (JavaScript 제외)를 사용하여 결과를 필터링 할 수 있습니까?

답변

0

논리는 확실하지만 Javascript에서는 필터링하지 않을 것입니다. 사용자의 컴퓨터가 매우 빠르지 않으면 성능이 저하됩니다. 캐싱 된 리소스 (경우에 따라 xml)를 기반으로 필터링 서버 측을 수행하는 것이 좋습니다.

데이터베이스가이 작업에서 가장 큰 병목 일 수 있으므로 결과를 캐싱하면 응용 프로그램의 속도가 빨라질 수 있습니다. 또한 키를 올바르게 설정하여 가능한 빨리 쿼리를 작성했다고 생각할 수도 있습니다.

+0

필자는 300+ 열로 구성된 원래 select *와는 달리 필요한 8-10 열만 포함하도록 select 쿼리를 변경했습니다. 그 결과 크게 속도가 빨랐습니다. 그러나 XML 파일을 캐싱하는 방법에 대해 궁금한 점이 있습니까? 공개적으로 액세스 할 수있는 폴더에 파일을 저장하는 스크립트를 실행해야합니까? 아니면 더 좋은 방법이 있습니까? – Edward

+0

XML 문서를 문서 루트 외부에 저장하고 필터링해야하는 매개 변수를 허용하는 PHP 스크립트를 가지고 PHP 스크립트에서 필터링 된 XML 문서를 출력하도록합니다. –

+0

그것에 대해 생각해 보면 주어진 매개 변수의 해시를 기반으로 필터링 된 버전의 쿼리를 저장하는 것이 더 나을 것입니다.이렇게하면 캐시되지 않은 쿼리를 가져올 때만 성능 저하가 발생하고 후속 요청은 단순히 캐시 된 버전 만 사용할 수 있습니다 (필터링 필요 없음). 결국 3k 행은 성능에 중요한 영향을 미치지 않습니다 (가능하면 피해야합니다). –