一个按钮点击与请求的问题 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
0x11901
V2EX    问与答

一个按钮点击与请求的问题

  •  1
     
  •   0x11901 2019-08-30 11:59:17 +08:00 1781 次点击
    这是一个创建于 2310 天前的主题,其中的信息可能已经有所发展或是发生改变。

    昨天晚上下班前摸鱼的时候不慎听到了一个新来的服务器同事问另一个客户端同事为什么某某模块的某某按钮点击之后,自己在服务端检测错误条件(类似用户积分不足)的地方断点走不进来,客户端解释为他自己已经做了检查,保证发起请求的时候用户已经满足了条件。

    “但是实际上服务器还是会做条件检查,你这样不就同一份代码写了两次吗?我懂了,你是想减轻服务器的处理压力。”

    “其实也不是,我主要是想防止用户过于频繁的点击,比如用按键精灵这种的。我写代码的想法和他们不一样,其他人一般都是会把按钮禁用什么的,但我不喜欢限制用户,他想点哪里就点哪里,所以我都是保证请求都是正确的。”

    差不多听到这里我本能的看了眼时间到点了,而且作为那个禁用按钮的其他人我就立刻拧包走了。不过想想还是挺奇妙的,吼吼,又学到了新的知识呢!不过回家后看某 moba 视频攻略的时候,听到了这么一段话:

    有的人总总觉得他有一点个人的理解,他要把他的那个理解给实现,他的理解就是点四级跳,然后带个点金手来打架。这种理解他觉得很到位,其实没什么用的。你先把最普通的那种打法打好,再去尝试自己的想法。

    有些人说可以 balabala ……

    哎呀你说的东西其实别人早就想到过了,就是最后效果不好,所以没人再打。你先把最普通的推线打野打好对吧,觉得自己有想法,有个屁的想法啊!老老实实的打现在比赛最热门的那种刷钱的,那种是最好的。人家比赛都在打,说明是最优解。不说最优解吧,也是版本比较厉害的一种打法,你非要…… balabala

    哎,突然有点感觉。然后又想到了当时学设计模式的时候谁说的:

    其实吧设计模式就是前人这么做过了之后发现踩的雷少一点,就回头给你说你就像我这样绕来绕去,虽说绕,但是不至于被雷炸的体无完肤

    突然间我感觉我一下子就觉得那个客户端其实比我还菜(大家都叫他客户端大佬,因为我很懒不喜欢花时间看同事代码,所以不知道他具体水平)!

    不过说实话这个问题我以前确实没怎么深究过:就一个最普通的领取按钮,点击一下消耗账号积分获得奖励,很小的功能小到产品、交互设计师没有提出要弹出二次确认弹窗或者等待 60s 这样的指导意见,你每点一次就请求一次然后随便浮个窗把服务器返回的字段打印出来就能通过测试的小按钮,到底应该怎么做才对呢?

    以前这种东西我一般都是用户的手速有多快我的请求就有多快,现在稍稍有一点追求后会给他暗中加一个 0.5s 左右的禁用,如果在这 0.5 内服务器返回兑换成功就把禁用撸掉,让手速快的用户能连续点击……

    但是说白了这其实也是我自己玩了很多其他 app 之后自己总结出来的东西,大部分客户端都是选择加一个按钮禁用的,但是具体这个“版本比较厉害的一种打法”到底是什么呢?说实话还有点好奇的!

    所以我才发帖问问:如果想要防止拥有单身 27 年的手速的用户通过点击按钮手动 DDoS 服务器,客户端的你是怎么处理的?

    1 条回复    2019-08-30 14:35:09 +08:00
    TomVista
        1
    TomVista  
       2019-08-30 14:35:09 +08:00
    节流防抖,另外单身 27 年算不上 ddos
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5259 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 36ms UTC 08:56 PVG 16:56 LAX 00:56 JFK 03:56
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86