这是V2EX的设计问题? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
ofan
V2EX    V2EX

这是V2EX的设计问题?

  •  
  •   small class="gray">ofan 2011-12-29 20:45:07 +08:00 4866 次点击
    这是一个创建于 5096 天前的主题,其中的信息可能已经有所发展或是发生改变。
    刚刚在 http://www.v2ex.com/t/24558 回复时,可能不小心多点了一下发送(没有返回前),就出现了一个重复回复。 这种情况不应该发生。
    这是不是跟http幂等性相关的设计问题?
    http://coolshell.cn/articles/4787.html
    25 条回复    1970-01-01 08:00:00 +08:00
    chuck911
        1
    chuck911  
       2011-12-29 20:59:22 +08:00
    POST方法不具备幂等性!
    PUT方法在此又不适用
    ofan
        2
    ofan  
    OP
       2011-12-29 21:07:48 +08:00
    ......不具备所以才要用幂等的设计
    9hills
        3
    9hills  
       2011-12-29 21:23:10 +08:00
    回复用ajax做就感觉好多了,现在回复还会刷新页面。。好古老的设计
    delectate
        4
    delectate  
       2011-12-29 21:23:49 +08:00
    试试……
    delectate
        5
    delectate  
       2011-12-29 21:24:12 +08:00
    木有效果啊。看来触发bug还要特殊环境的
    delectate
        6
    delectate  
       2011-12-29 21:24:51 +08:00
    @Livid 只是个测试,别封id哈。
    yyfearth
        7
    yyfearth  
       2011-12-29 21:29:33 +08:00
    @9hills 我就是用自己做的ajax脚本回复的。不过有个bug就是让v2ex的 已读 失效了。
    gDD
        8
    gDD  
       2011-12-29 21:29:46 +08:00
    可以考虑按`发送`以后按钮不可用10s左右。这样既能防止重复发帖又能防止POST失败以便再次POST。
    ofan
        9
    ofan  
    OP
       2011-12-29 21:33:35 +08:00
    @delectate ,这也叫没有效果...
    9hills
        10
    9hills  
       2011-12-29 21:34:02 +08:00
    用ajax一劳永逸,有想法的话,还能显示出一个进度条。

    OT: 再慢的操作,只要有了进度条,就能给人一种很可靠的感觉。。。
    ofan
        11
    ofan  
    OP
       2011-12-29 21:41:20 +08:00
    @gDD 这个方法最简单,但是有些情况不适用,比如客户端关闭了甚至不支持js的情况。这是有可能的,比如内嵌了html浏览器的桌面程序,手机上的浏览器,一些bot,一些下载工具(wget,aria..)等等
    chuck911
        12
    chuck911  
       2011-12-29 21:49:26 +08:00
    @9hills 不ajax也是有各种好处的。豆瓣连留言板都没ajax
    @gDD 嗯,这个方法ok,其实按过一次就禁用掉也ok,反正提交完就是新页面了。
    @ofan 关了js也就是跟现在一样,又没别的害处啊
    cyberscorpio
        13
    cyberscorpio  
       2011-12-29 22:00:52 +08:00
    @ofan 现在还有关 js 的?
    ofan
        14
    ofan  
    OP
       2011-12-29 22:02:39 +08:00
    @cyberscorpio 关js和不支持js的属于同一种情况
    delectate
        15
    delectate  
       2011-12-29 22:03:25 +08:00
    有。安了noscript。
    ofan
        16
    ofan  
    OP
       2011-12-29 22:04:37 +08:00
    还有用油猴的firefox党,什么都是有可能发生的
    delectate
        17
    delectate  
       2011-12-29 22:06:46 +08:00
    与其在客户端验证,不如服务器设限。同一id每5s只能提交一次。
    gDD
        18
    gDD  
       2011-12-29 22:08:39 +08:00
    @ofan 关了Javascript的话jQuery代码就不会运行了就`bind`不上按钮的`click`,然后基本发帖功能还是能用的,和目前的效果一样。
    chuck911
        19
    chuck911  
       2011-12-29 22:13:01 +08:00
    @delectate 实现的麻烦程度不是一个等级的,这只是个体验问题
    ofan
        20
    ofan  
    OP
       2011-12-29 22:14:22 +08:00
    我的意思是说不用js的方法,主贴里给了链接了嘛,去看看. 可以每次页面get时,服务器返回一个ticketID,然后在回复时讲此id作为一个参数 ?tid=... ,这样服务器端添加完回复后要返回新的页面,里面再带一个新的ticketID,旧的ticketID失效。这样就保证每次只能回复一次
    ofan
        21
    ofan  
    OP
       2011-12-29 22:15:58 +08:00
    然后旧的id在一定时间后重新有效,比如一小时后..
    delectate
        22
    delectate  
       2011-12-29 22:18:00 +08:00
    记得phpbb论坛有个sid串号问题。就是说你发的链接如果带上sid=***的信息,别人(未登录)访问此链接,就会以发帖人权限登录论坛。
    ofan
        23
    ofan  
    OP
       2011-12-29 22:20:27 +08:00
    对,就这意思,这种技术web里应该用的非常多啊,不知道这里为嘛不用。重复回复的问题,我记得只有在asp流行的时代比较多
    cyberscorpio
        24
    cyberscorpio  
       2011-12-29 22:37:52 +08:00
    @ofan 我就是这个意思,关 js 的很少,不支持的几乎没有。
    ofan
        25
    ofan  
    OP
       2011-12-29 23:04:33 +08:00
    @cyberscorpio 我已经列出不支持的情况了,特别是对于移动设备,能不用js的就不用js
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2648 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 29ms UTC 15:09 PVG 23:09 LAX 07:09 JFK 10:09
    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