2013-06-12 6 views
4

내 사용자 인터페이스는 현재 와이드 오픈입니다.ajax 요청의 속도를 제한하는 방법은 무엇입니까?

특히, 일부 요소는 사용자가 개별적으로 삭제할 수 있습니다. 사용자가 삭제 버튼을 반복해서 누르면 Ajax 요청이 반복적으로 발생합니다.

구현해야하는 표준 방식의 속도가 제한되어 있습니까? 아니면 사용자에게이 표준을 공개적으로 공개 할 수 있습니까?

+0

아마도 사용자가 버튼을 부숴 버리는 것을 방지 할 수있는 모든 버튼을 삭제 하시겠습니까? –

+0

단추를 빠르게 연속 클릭하면 같은 레코드가 동시에 액세스 될 수 있으므로 DB에 오류가 발생할 수 있습니다. – tymeJV

+0

정확히 처음 발생한 일을 파악하십시오. 요청이 완료되지 않았습니까? Ajax 요청이 완료되지 않으면 먼저 오류를 기록해야합니다. – JohnP

답변

2

우선이 부분 클라이언트 문제, 일부 서버 문제입니다. 일부 표준 솔루션이다 : (. JS 예에서 할 abili 두 번 한 가지를 삭제 요청을 제출하지 않도록)

  • 사용자가 너무 자주 특정 작업을 제출하는 것을 허용하지 않는 인터페이스를 조정,
  • 속도 서버에서 제한하는 것은 일반적으로 필요하지 않지만 유용 할 수 있습니다.

예를 들어 StackOverflow 가져 오기 : 응답을 downvote하면 다시 downvote 수 없으며 예를 들어. 의견을 제출하려면 제출 사이에 몇 초 정도 기다려야합니다.

오류에 관한 한 ... 여러 가지 문제 범주 중 하나에 해당 될 수 있습니다.

  • 연결 문제 (연결의 부족, 불안정한 연결 또는 매우 느린 연결),
  • 내부 클라이언트 제한 (동시 요청 수에 도달 것처럼 최대 허용),
  • 다른 서버 - 예를 들면 다음과 같습니다 측면 제한 (속도 제한, 서로를 차단하는 요청 등),
+1

이렇게하면 * 바람직하지 않은 행동이므로 스팸 투표를 할 수 없습니다. 그들이 기술적 인 문제가 될 스팸 메일을 보내 게하는 것과는 다릅니다. – Jon

+0

@ 존 : 정확히 내가 생각하는 것은 기본 아이디어였습니다. 그러나 반복되는 여러 요청의 힘을 과소 평가하지 마십시오. 수많은 "광신적 인"사용자가있을 경우 용량을 최대한 활용할 수 있다고 말하고 싶습니다. – Tadeck

+0

@ pure_code.mom : 오히려 삭제 요청 된 항목에 대해 삭제 버튼을 비활성화하는 것에 대해 생각하고있었습니다 (예 :게시물 옆에있는 삭제 버튼을 클릭 했으므로 서버에서 응답을받을 때까지 버튼을 숨 깁니다. – Tadeck

3

대기열에서 사용자 요청을 그룹화 할 수 있습니다. 그런 다음 새로운 요청을 보내기 위해 수시로 대기열을 확인하십시오. 그래서 사용자 인터페이스는 실행할 동작을 추가하고 전송 빈도를 제어 할 수 있습니다. 이미 대기열에있는 경우 작업이 추가되지 않도록 할 수 있습니다. 또한이 방법을 사용하면 실행할 작업 목록을 수락하도록 코드를 수정할 수 있습니다.

이것은 setTimeout과 같은 기능을 사용하여 JavaScript로 구현 될 수있는 일반적인 설명입니다.

관련 문제