假设以下情况:
在这种情况下,我们遇到以下情况:-客户端不知道其数据是否有效并已正确插入-Web服务器(rails 3.2应用程序)不显示任何异常,无论它是否在apache代理后面
我在HTTP文档中找不到如何处理这种情况。我的问题是:
a)客户应该期望他的数据可能已经被处理吗?(因此,例如,尝试使用GET请求检查数据是否已提交)
b)如果不是(a)-服务器应该检测到它吗?有可能在铁轨上这样做吗?在这种情况下,更改可以撤消。在这种情况下,我会期望从Rails应用中获得某种期望,但是没有...
HTTP是一种无状态协议:根据定义,这意味着您无法在客户端上知道http-verbPOST
是否成功。
Web应用程序使用了一些技术来克服此HTTP“功能”。它们包括。
但是,这些都不能真正解决您的问题。过去,当我遇到这些类型的问题时,它们几乎总是服务器处理时间过长而导致的。
在不眠之夜我低声说:
“ Web请求是一个令人恐惧的地方,您想尽快进入和退出”-Rick Branson
您希望在100-500毫秒内进入和退出Web请求。达到这些数字,您将拥有一个Web应用程序,该Web应用程序可以很好地运行/与Web服务器一起玩。
为此,我建议您调查一下您的帖子花了多长时间,并弄清楚如何缩短这些请求。如果在进行dbms插入之前在服务器端进行了认真的处理,则应考虑将这些处理交给某种任务/排队系统。
“严重处理”的一个示例可能是某种图像上传,可能在上传之后进行了一些图像处理。任务和排队解决方案的一个示例是:RabbitMQ和Celery
解决您的问题的示例可能是:
收紧那些Web请求,这将是罕见的一天,您的客户不会收到响应。
在那个客户没有收到数据的罕见日子:您如何防止发布多个帖子...我对您的数据一无所知。但是,您可以执行一些与架构相关的操作来唯一标识您的帖子。即在服务器端找出数据是anupdate
还是a create
。
该答案涵盖了您可以使用的一些轮询/流/ Websockets技术。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句