这里的情景(对不起,但这将是一个理论问题)。
我正在开发一个电子商务网络应用程序struts2,在正常情况下处理5000-6000个用户,但很少有用户数可能超过600k 。
我有一个包含超过25个字段的网络表单,我很少有图像和文档的上传字段,当服务器负载很重时需要5分钟以上才能得到响应。
因此,在处理请求时,我遇到的问题是少数用户不耐烦,并且可能会一次又一次地点击提交按钮,在这种情况下我不必要地增加了负载。我想阻止所有其他重复请求。
那我该如何处理这种情况?
我听说过拦截器令牌和tokenSession
<interceptor-ref name="token"></interceptor-ref>
<interceptor-ref name="tokenSession"></interceptor-ref>
但我猜这些拦截器只处理基于刷新和后退按钮的重复表单提交问题。事实上,我已经尝试过以下链接中提到的实现。
http://www.journaldev.com/2281/struts2-token-interceptor-to-handle-double-form-submission-problem
[编辑]:
用户登录后的表单应该有一个令牌值,该值应该针对页面的每次刷新而改变,并且应该在服务器端验证它的服务器是否为该特定用户生成了有效令牌,或者应该存在正确的验证码实现。这是为了避免我们从外部网站提交表单。希望你能理解。
答案 0 :(得分:1)
您可以执行以下操作:客户端脚本在单击后禁用提交按钮并实现Execute and wait interceptor,这非常适合在后台运行长时间的操作用户一个很好的进度表。