Rails - 后退按钮生成重复的服务器请求

时间:2015-12-10 08:56:33

标签: ruby-on-rails httprequest back-button back-button-control

我刚刚在当前的RoR Web应用程序中遇到了一个奇怪的行为:每次我使用浏览器的后退按钮(多个浏览器都经过测试,包括安全模式),GET请求被多次发送,重复。有时两次,但在3秒内连续多达5次。这也会导致SQL查询多次运行,执行相同的操作。 如果我使用链接返回,或粘贴URL以访问上一页,则不会发生这种情况。 有没有人遇到过这个,或者知道是什么原因造成的?

感谢您的帮助!

最好,

Alex

2 个答案:

答案 0 :(得分:2)

虽然我发现这是由其他问题引起的,但主要的好处是Turbolinks

基本上,Turbolinks通过ajax加载新视图的body,而不是拉动整个页面(这意味着加速生产中的应用程序)。

通常情况下,按下back按钮等时Turbolinks会导致重复请求等问题......虽然每个浏览器都能获得它是非常奇怪的。

-

由于缺乏代码,我只能推测这个问题。

这可能是错误的,但是检查它是否复制的一个好的测试是删除JS文件中对turbolinks的引用;具体是:

#app/assets/javascripts/application.js
//= require turbolinks <- remove this line and see if it fixes the issue

如果不合适,我会很乐意删除答案。你最好建立一个公共回购,以便人们可以看到你拥有的基础设施。

答案 1 :(得分:0)

对我来说,我意识到问题是由aplication.html.erb中的head标记中的javascript_include_tag引起的。

移动到正确的位置(在headheet标签内,在stylesheet_link_tag之后),多个请求消失了!