这是V2EX的设计问题?

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

OT: 再慢的操作,只要有了进度条,就能给人一种很可靠的感觉。。。
ofan
2011-12-29 21:41:20 +08:00
@gDD 这个方法最简单,但是有些情况不适用,比如客户端关闭了甚至不支持js的情况。这是有可能的,比如内嵌了html浏览器的桌面程序,手机上的浏览器,一些bot,一些下载工具(wget,aria..)等等
chuck911
2011-12-29 21:49:26 +08:00
@9hills 不ajax也是有各种好处的。豆瓣连留言板都没ajax
@gDD 嗯,这个方法ok,其实按过一次就禁用掉也ok,反正提交完就是新页面了。
@ofan 关了js也就是跟现在一样,又没别的害处啊
cyberscorpio
2011-12-29 22:00:52 +08:00
@ofan 现在还有关 js 的?
ofan
2011-12-29 22:02:39 +08:00
@cyberscorpio 关js和不支持js的属于同一种情况
delectate
2011-12-29 22:03:25 +08:00
有。安了noscript。
ofan
2011-12-29 22:04:37 +08:00
还有用油猴的firefox党,什么都是有可能发生的
delectate
2011-12-29 22:06:46 +08:00
与其在客户端验证,不如服务器设限。同一id每5s只能提交一次。
gDD
2011-12-29 22:08:39 +08:00
@ofan 关了JavaScript的话jQuery代码就不会运行了就`bind`不上按钮的`click`,然后基本发帖功能还是能用的,和目前的效果一样。
chuck911
2011-12-29 22:13:01 +08:00
@delectate 实现的麻烦程度不是一个等级的,这只是个体验问题
ofan
2011-12-29 22:14:22 +08:00
我的意思是说不用js的方法,主贴里给了链接了嘛,去看看. 可以每次页面get时,服务器返回一个ticketID,然后在回复时讲此id作为一个参数 ?tid=... ,这样服务器端添加完回复后要返回新的页面,里面再带一个新的ticketID,旧的ticketID失效。这样就保证每次只能回复一次

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/24625

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX