Rails - 后退按钮生成重复的服务器请求
Rails - Back button generates duplicate server requests
我刚刚在我当前的 RoR web 应用程序中遇到了一个奇怪的行为:每次我使用浏览器的后退按钮(测试了多个浏览器,包括安全模式)时,GET 请求被发送多次,重复。有时两次,但在 3 秒内连续最多 5 次。这也会导致 SQL 多次查询 运行,做同样的事情。
如果我使用链接返回,或粘贴 URL 访问上一页,则不会发生这种情况。
有没有人遇到过这个,或者知道是什么原因造成的?
感谢您的帮助!
最佳,
亚历克斯
虽然我发现这是由其他问题引起的,但主要问题是 Turbolinks
。
基本上,Turbolinks 通过 ajax 加载新视图的 body
,而不是拉取整个页面(这是为了加快生产中的应用程序)。
Turbolinks 通常会导致按下 back
按钮时出现重复请求等问题...尽管在每个浏览器中都能得到它是很奇怪的。
--
由于缺少代码,我只能推测这个问题。
这可能是错误的,但是查看它是否复制的一个很好的测试是删除 JS 文件中对 turbolinks
的引用;具体来说:
#app/assets/javascripts/application.js
//= require turbolinks <- remove this line and see if it fixes the issue
如果答案不合适,我会很乐意删除。您最好提供一个 public 存储库,以便人们可以看到您拥有的基础设施。
对我来说,我意识到问题是由 aplication.html.erb 中的 head 标签 javascript_include_tag 引起的。
移动到正确的位置后(在 head 标签内,就在 stylesheet_link_tag 之后),多个请求都消失了!
我刚刚在我当前的 RoR web 应用程序中遇到了一个奇怪的行为:每次我使用浏览器的后退按钮(测试了多个浏览器,包括安全模式)时,GET 请求被发送多次,重复。有时两次,但在 3 秒内连续最多 5 次。这也会导致 SQL 多次查询 运行,做同样的事情。 如果我使用链接返回,或粘贴 URL 访问上一页,则不会发生这种情况。 有没有人遇到过这个,或者知道是什么原因造成的?
感谢您的帮助!
最佳,
亚历克斯
虽然我发现这是由其他问题引起的,但主要问题是 Turbolinks
。
基本上,Turbolinks 通过 ajax 加载新视图的 body
,而不是拉取整个页面(这是为了加快生产中的应用程序)。
Turbolinks 通常会导致按下 back
按钮时出现重复请求等问题...尽管在每个浏览器中都能得到它是很奇怪的。
--
由于缺少代码,我只能推测这个问题。
这可能是错误的,但是查看它是否复制的一个很好的测试是删除 JS 文件中对 turbolinks
的引用;具体来说:
#app/assets/javascripts/application.js
//= require turbolinks <- remove this line and see if it fixes the issue
如果答案不合适,我会很乐意删除。您最好提供一个 public 存储库,以便人们可以看到您拥有的基础设施。
对我来说,我意识到问题是由 aplication.html.erb 中的 head 标签 javascript_include_tag 引起的。
移动到正确的位置后(在 head 标签内,就在 stylesheet_link_tag 之后),多个请求都消失了!