인터넷 애플리케이션의 인기가 높아짐에 따라 사용자가 웹 사이트 나 응용 프로그램에 자주 요청이나 양식을 제출하는 것이 점점 일반화되고 있습니다. 빈번한 클릭 및 제출은 사용자 경험에 영향을 줄뿐만 아니라 서버 부담을 증가시킬 수도 있습니다. 이러한 문제를 피하고 운영 효율성을 향상시키기 위해 반 쉐이크 및 반복 방지 제출 기술이 등장했습니다.
Anti-Shake는 운영 실행을 지연하여 잘못된 요청을 줄임으로써 사용자의 지속적인 트리거 이벤트를 결합한 기술입니다. 예를 들어, 사용자가 검색 상자에 지속적으로 입력하면 일반적으로 각 입력이 검색 요청을 트리거하는 것을 원하지 않고 사용자가 일정 시간 동안 입력을 중지 한 후 검색을 수행하는 것을 원합니다.
PHP에서 유사한 방지 효과를 시뮬레이션 할 수 있습니다. 다음 코드는 정적 변수를 사용하여 타이머를 저장하여 검색 로직의 실행을 지연시키는 방법을 보여줍니다.
function debounceSearch($keywords) {
// 지난번에 검색을 트리거 한 타이머를 저장하십시오 ID
static $timer = null;
// 마지막 지연 작업을 지우십시오
if ($timer) {
clearTimeout($timer);
}
// 새로운 지연 작업을 만듭니다
$timer = setTimeout(function() use ($keywords) {
// 실제 검색 논리는 다음과 같습니다
searchKeywords($keywords);
}, 500); // 지연 500ms
}
실제 프로젝트에서는 입력 상자의 이벤트 모니터링 에서이 기능을 호출하여 입력 방지 방지를 달성하여 짧은 시간 안에 여러 번의 검색 요청이 트리거되지 않도록합니다.
반복 된 제출은 주로 양식을 제출할 때 네트워크 지연 또는 오해로 인해 사용자가 제출 버튼을 여러 번 클릭하는 것을 방지하여 동일한 양식을 반복적으로 처리 할 수 있습니다. 일반적인 관행은 고유 한 토큰을 사용하여 요청의 독창성을 확인하는 것입니다.
다음 예제는 토큰을 확인하여 중복 제출을 구현하는 방법을 보여줍니다.
function verifyToken($token) {
// 조사하다 token 유효합니까?,보통 Session 또는 데이터베이스에서 비교하십시오
if ($token == $_SESSION['token']) {
// token 효율적인
return true;
} else {
// token 유효하지 않은
return false;
}
}
function processForm($data, $token) {
// 먼저 확인하십시오 token
if (!verifyToken($token)) {
// token 유효하지 않은,중복 제출으로 간주됩니다,직접 돌아옵니다
return;
}
// 다음은 실제 양식 처리 로직입니다
doSomething($data);
// 처리가 완료된 후 지우십시오 token,반복적 인 제출을 피하십시오
unset($_SESSION['token']);
}
이 방법을 사용하여 양식을 제출하기 전에 고유 한 토큰을 생성하고 세션에 저장하십시오. 양식이 한 번만 처리되도록 토큰을 제출할 때 토큰을 확인하십시오.
쉐이크 방지 및 반복 방지 제출 기술을 통해 사용자의 운영 경험을 효과적으로 개선 할 수 있으며 불필요한 요청 및 데이터 복제 처리를 피하고 서버 압력을 줄일 수 있습니다. PHP 응용 분야에서 타이머 메커니즘을 사용하여 방지 방지를 달성 할 수 있으며, 반복 방지 제출은 토큰 검증을 통해 달성 될 수 있습니다. 실제 요구에 따라 올바른 솔루션을 유연하게 선택하는 것이 사용자 상호 작용을 최적화하는 핵심입니다.