PHP アンチシェイクおよびアンチデュプリケート送信: ユーザー インタラクション エクスペリエンスを最適化するために必須の機能
Web アプリケーションを開発する場合、ユーザー インタラクション エクスペリエンスの最適化は非常に重要な側面です。 。その中でも、手ぶれ防止と重複投稿防止の 2 つは、不要な操作を効果的に削減し、ユーザーの満足度を向上させる 2 つの非常に重要なテクノロジーです。この記事では、PHP における手ぶれ防止と再送信防止の方法を紹介し、具体的なコード例を示します。
1. アンチシェイクの概念と原理
アンチシェイクとは、ユーザーがイベントを連続的にトリガーした場合に、最後の操作のみが実行され、それによって頻繁なトリガーによって引き起こされる不要なリソースを回避することを意味します。イベント、無駄。 Web アプリケーションでは、一般的なトリガー イベントには、ボタンのクリック、入力ボックスの入力などが含まれます。
手ぶれ補正を実現する原理は非常に単純です。タイマーを設定することで、操作の実行を遅らせます。タイマーのカウントが開始される前に同じイベントが再度トリガーされると、前のタイマーはキャンセルされ、時間が再び開始されます。このようにすると、ユーザーが一定期間イベントのトリガーを停止した後にのみアクションが実際に実行されます。
以下は、PHP を使用して手ぶれ補正を実現するサンプル コードです:
function debounce($callback, $delay) { $timeout = null; return function() use ($callback, $delay, &$timeout) { if ($timeout) { clearTimeout($timeout); } $timeout = setTimeout($callback, $delay); }; } // 使用示例 $debouncedFn = debounce(function() { // 这里是需要防抖的操作 }, 500); // 调用防抖函数 $debouncedFn();
上記のコードでは、debounce
関数は 2 つのパラメーターを受け入れます: $ callback
は実行する必要がある操作、$lay
は実行を遅らせる時間です。この関数は内部でクロージャを使用し、タイマーへの参照を保存するために $timeout
変数を維持します。ユーザーがイベントをトリガーすると、以前のタイマーがクリアされ、新しいタイマーがリセットされます。
2. 重複防止送信の概念と原則
重複防止送信とは、ユーザーが同じリクエストを繰り返し送信した場合、繰り返しの影響を避けるために 1 つのリクエストのみが処理されることを意味します。データに対する操作。 Web アプリケーションでは、一般的な繰り返し送信シナリオには、フォーム送信、インターフェイス要求などが含まれます。
重複送信防止の原理も非常にシンプルで、ユーザーがリクエストを送信するとサーバー側にリクエストの識別情報が保存され、次回同じリクエストを受信した場合にリクエストの識別が行われたと判断されます。リクエストは処理されており、リクエストは直接処理されます。結果を返します。これは、セッションやデータベースなどのストレージ方法を使用して実現できます。
以下は、PHP を使用して重複送信を防止するサンプル コードです:
function preventDuplicate($key) { session_start(); if ($_SESSION[$key]) { die('不能重复提交!'); } else { $_SESSION[$key] = true; } } // 使用示例 preventDuplicate('submit_key'); // 处理表单提交逻辑 // ...
上記のコードでは、preventDuplicate
関数はパラメーター $key# を受け入れます。 ## 、リクエストが処理されたかどうかを識別するために使用されます。この関数は内部でセッションを使用してリクエスト ID を保存します。ID がすでに存在する場合は、リクエストが処理されたことを意味し、「再送信できません」というプロンプト メッセージが直接返されます。
以上がPHP の揺れ防止および重複送信防止: ユーザー インタラクション エクスペリエンスを最適化するために必須の機能の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。