接口防抖(重复点击)

一,概念

	防抖技术指的是在一个事件被连续触发时,只执行最后一次操作,忽略中间的操作。通常我们会设置一个定时器,在规定的时间内如果发生多次事件,则只保留最后一次事件,确保请求只发送一次。
	在 Web 开发中,防抖和防重复提交是两个常见的技术需求。在处理用户交互或表单提交等场景中,我们需要确保用户在一定时间内只能触发一次请求,避免重复提交或者频繁请求的问题。

二,解决方案

前端和后端都可以处理这个问题

  1. 前端处理

在web端,提交完表单后前端可以给 提交按钮 添加上disabled按钮或者使用计时器,如常见的发送短信验证码

  1. 后端处理

后端处理的方法就比较多了,下面说常用的几种

  • token实现

    在请求A接口(提交数据)前先请求获取唯一码的接口B(获取数据)来获取 $token = md5(uniqid());接口B中会将生成的token放入缓存中并设置过期时间。请求A接口带上这个token,A接口会判断缓存中是否有此token,如果有此token,则响应请求。

  • mysql数据库增加字段唯一性约束

    可以给某字段增加唯一索引(唯一约束和唯一索引不同的两个东西,唯一约束是通过唯一索引实现,添加唯一约束就生成了唯一索引,但是添加唯一索引不会自动生成唯一约束,字段中的null值被认为是不同的)

  • 接口限流

    接口限流可以使用缓存来实现。请求接口的时候先判断是否有此请求的缓存,如果没有,处理请求,然后将此请求加入缓存,并设置过期时间。

相关推荐
Clockwiseee2 小时前
PHP伪协议总结
android·开发语言·php
m0_7482475510 小时前
Web 应用项目开发全流程解析与实战经验分享
开发语言·前端·php
luck_00712 小时前
PhpSpreadsheet 导出excel 找不到setCellValueByColumnAndRow
php
生椰拿铁You12 小时前
解决Apache/2.4.39 (Win64) PHP/7.2.18 Server at localhost Port 80问题
php
索然无味io17 小时前
跨站请求伪造之基本介绍
前端·笔记·学习·web安全·网络安全·php
伟大无须多言18 小时前
企业资源规划系统(ERP)服务器上线项目实施指南
开发语言·php
网络安全(king)18 小时前
网络安全设备
网络·web安全·php
蜗牛hb1 天前
VMware Workstation虚拟机网络模式
开发语言·学习·php
手可摘星河1 天前
php中 cli和cgi的区别
开发语言·php
EasyDSS1 天前
国标GB28181-2022平台EasyGBS:安防监控中P2P的穿透方法
网络协议·php·音视频·p2p