ホームページ  >  記事  >  バックエンド開発  >  PHP 手ぶれ防止および重複送信防止テクノロジー: ユーザー インタラクションを最適化するための鍵の 1 つ

PHP 手ぶれ防止および重複送信防止テクノロジー: ユーザー インタラクションを最適化するための鍵の 1 つ

WBOY
WBOYオリジナル
2023-10-12 12:15:111108ブラウズ

PHP 防抖和防重复提交技术:优化用户交互的关键之一

PHP アンチシェイクおよびアンチ再送信テクノロジー: ユーザー インタラクションを最適化するための鍵の 1 つであり、特定のコード例が必要です

インターネットの発展に伴い、ユーザーの Web サイトやアプリケーションへの関心が高まっています。ユーザー エクスペリエンスに対する要件もますます高くなっています。ユーザー インタラクション プロセスでは、手ぶれ防止および再送信防止テクノロジーがユーザー エクスペリエンスを最適化するための鍵となっています。この記事では、PHP における手ぶれ防止および重複送信防止テクノロジーを紹介し、具体的なコード例を示します。

アンチシェイク技術とは、ユーザーが操作を継続的に実行する際にトリガーの数を制限することで、不要なリクエストを削減することを指します。たとえば、ユーザー入力ボックスでリアルタイムに検索を行う場合、ユーザーが文字を入力するたびに検索リクエストがトリガーされると、サーバーへの負荷が増大するだけでなく、ユーザーのエクスペリエンスがスムーズではなくなります。手ぶれ補正技術により、検索リクエストのトリガー時間間隔を一定期間に制限することができ、ユーザーが一定期間入力を停止した場合にのみ検索リクエストがトリガーされます。

以下は、PHP で実装された手ぶれ補正関数のコード例です:

function debounce($callback, $delay) {
    $timerId = null;

    return function (...$args) use ($callback, $delay, &$timerId) {
        if ($timerId != null) {
            // 清除之前的定时器
            clearTimeout($timerId);
        }

        // 创建新的定时器
        $timerId = setTimeout(function () use ($callback, $args) {
            // 执行回调函数
            $callback(...$args);
        }, $delay);
    };
}

上記の手ぶれ補正関数は 2 つのパラメーターを受け入れます: $callback は、実行する必要があるコールバック関数を表します。 , $delay はトリガーの時間間隔の制限を表します。この関数が呼び出されると、新しい関数がイベント ハンドラー (入力ボックスの onkeyup イベントなど) として返されます。イベントがトリガーされるたびに、以前のタイマーがクリアされ、新しいタイマーが再作成されます。 。ユーザーが一定時間入力を停止すると、タイマーによってコールバック関数がトリガーされます。

手ぶれ防止テクノロジーに加えて、反復送信防止テクノロジーもユーザー インタラクション エクスペリエンスを向上させる重要な手段です。ユーザーがフォームを送信するときに送信ボタンを複数回クリックすると、同じデータが繰り返し送信され、サーバーにさらなる負荷がかかり、予期せぬ問題が発生する可能性があります。反復送信防止テクノロジーにより、ユーザーは特定の期間内にフォームを 1 回のみ送信するように制限できます。

以下は、PHP を使用して実装された重複防止送信関数のコード例です。

function preventDuplicateSubmit($callback, $key, $expire) {
    $cache = new Redis();
    $cache->connect('127.0.0.1', 6379); // 连接到Redis服务器

    return function (...$args) use ($callback, $key, $expire, $cache) {
        $token = md5($key . serialize($args));

        if ($cache->set($token, 1, 'nx', 'ex', $expire)) {
            // 缓存不存在,可以执行回调函数
            $callback(...$args);
        } else {
            // 缓存已存在,不能重复提交
            echo '请勿重复提交表单!';
        }
    };
}

上記の重複防止送信関数は、3 つのパラメーターを受け取ります。 $callback は、次の処理が必要なコールバック関数を表します。 $key は一意のキャッシュ キーの生成に使用される文字列で、$expire はキャッシュの有効期限を表します。この関数が呼び出されると、新しい関数がフォーム送信イベントのハンドラーとして返されます。この関数は、フォームのパラメータをシリアル化し、それらを $key で一意のキャッシュ キーに連結します。キャッシュ キーが存在しない場合は、コールバック関数が実行されます。存在しない場合は、ユーザーはフォームを再度送信しないように求められます。

実際の使用においては、状況に応じて適切な手ぶれ補正時間と再提出補正時間間隔を選択できます。手ぶれ防止および再送信防止テクノロジーを合理的に使用すると、ユーザーのインタラクティブ エクスペリエンスが向上し、サーバーの負担が軽減され、アプリケーションのパフォーマンスが向上します。

上記は、PHP における手ぶれ防止および再送信防止テクノロジの紹介であり、具体的なコード例も示しています。読者がこれらのテクノロジーを使用して、Web サイトやアプリケーションのユーザー インタラクション エクスペリエンスを最適化し、ユーザーの満足度を向上できることを期待しています。

以上がPHP 手ぶれ防止および重複送信防止テクノロジー: ユーザー インタラクションを最適化するための鍵の 1 つの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。