2013-09-28 3 views
0

jQuery와 Twitter Bootstrap을 사용하여 PHP 웹 앱을 개발 중입니다. 그리고 모든 것에 AJAX를 사용합니다. 그래서, HTML5에 폼을 보여주고, 사용자가 버튼 (클래스 = "btn")을 누르고, 폼이 PHP (jQuery, AJAX)로 보내 졌을 때, PHP는 MySQL에 쿼리를 보내고 응답을 에코합니다. 양식 (jQuery). 이것은 기본적으로 웹 앱이 작동하는 방식입니다.PHP에서 일부 SQL 쿼리를 피하는 방법?

그러나 여기 거래가 있습니다. 첫 번째 양식은 약간의 뉴스를 보여주는 div입니다. 예를 들어 : 의지의 사용자 로그는 그 SE는

1: A new user was created 
... 

매번 :

A new user was created. 
There is new important date. 
Someone wants to text you. 

그래서 나는 같은 것을 의미하는 것보다 일부 값을 저장 한 위치의 MySQL의 테이블이 뉴스라고 만들었습니다. 사용자가 로그인 할 때 HTML5가로드 되 자마자 쿼리와 응답이 있음을 의미합니다.

index.html 파일에는 navbar (부트 스트랩) 및 옵션 호출 News가 있습니다. 사용자가이를 클릭하면 동일한 쿼리가 실행되지만 반드시 동일한 응답 일 필요는 없습니다.

사용자가 작업을 수행 할 때마다 div가 수정 된 것으로 생각했습니다. 그러나 다른 사용자가 작업을 수행 할 수도 있습니다. 따라서 쿼리를 다시 작성해야합니다.

사용자가 뉴스를 받기를 원할 때 데이터베이스 쿼리를 피할 수있는 솔루션이 있습니까? 또는 div를 지금 업데이트해야한다는 것을 어떻게 알 수 있습니까? 캐싱 쿼리를 살펴 보았지만 회신에 도착하지 않았습니다.

죄송합니다. 영어가 너무 좋지 않은 경우, 제 모국어가 아닙니다.

감사합니다.

답변

0

서버의 모든 뉴스 응답에 타임 스탬프를 보내고 자바 스크립트로 저장할 수 있습니다. 다음에 요청을하면 저장 한 타임 스탬프를 보내고 서버는 최신 뉴스가 있는지 확인합니다. 마지막 응답이 아직 최신 상태 인 경우 아무 것도 보내지 않으면 아무것도 보내지 않습니다.

글쎄, 여기에는 단점이있다. 당신은 여전히 ​​데이터베이스에 질의를해야한다. (WHERE ... TIMESTAMP> last_timestamp_from_browser와 같은 WHERE 절을 사용하여 결과를 필터링해야한다.) SGBD는 완벽하게 유효하다. 동시에 수천 명의 사용자가 귀하의 웹 사이트에 액세스하지 않으면 아무런 문제가 발생하지 않습니다. 이 방법을 사용하면 데이터베이스에 대한 연결이 만들어지기 때문에 bandwitdh 만 저장합니다.

이 연결을 만들지 못하게하는 또 다른 방법으로, 사용자 특정 또는 전역 일 수있는 마지막 뉴스의 일부 값을 캐시하고이를 APC 모듈 (또는 memcached)에 저장합니다. 캐시 할 대상과 전체 데이터베이스를 캐시 할 수없는 경우, 잘 정리 된 타임 스탬프 및 예를 들어 가장 많이 요청한 뉴스를 찾아야합니다. 이렇게하면 데이터베이스 연결이 금지됩니다. 이렇게하면 훨씬 많은 코드를 작성해야하므로 수천 개의 사용자 연결과 같이 필요할 때만 사용할 수 있습니다.

관련 문제