Chrome发送了多次请求

11

我有一个Rails 3应用程序,在使用Chrome(Mac上)访问该应用程序时,发现网站上的每个页面都会被请求两次。这在开发和生产环境中(Heroku)都会发生。Firefox和Safari只发送一次请求。即使我删除操作的所有布局和内容,行为仍然相同。看起来像是MIME类型问题。有人解决了这个问题吗?

class PagesController < ApplicationController
  def home
    render :text => 'a', :layout => false
  end

这是开发环境下的服务器日志:

在2010年12月13日星期一上午10:33:33,127.0.0.1发送了GET请求“/”

PagesController#home进行处理,格式为HTML

渲染文本模板(0.0ms)

完成200 OK响应,耗时2ms(视图:1.3ms | ActiveRecord:0.8ms)


在2010年12月13日星期一上午10:33:33,127.0.0.1发送了GET请求“/”

PagesController#home进行处理,格式为*/*

渲染文本模板(0.0ms)

完成200 OK响应,耗时3ms(视图:1.7ms | ActiveRecord:1.4ms)


我在使用Chrome 9.0.597.98浏览器时遇到了类似的问题,系统是XP。每次打开(PHP)页面时,日志会在同一秒内记录3次。 但是,我尝试使用其他浏览器打开该页面都没有问题(如Linux/Windows上的Firefox 3.6.13/14、Opera/Windows、IE8,甚至是Linux上的Chromium/9.0.597.94)。 - H_I
我意识到这是一个非常老的问题,但实际上我遇到了相反的问题。对我来说,Chrome表现良好,但Safari和Firefox会向我的服务器(heroku或本地)发送两个请求。 - Dan
4个回答

7
我找到了导致我的问题的原因,也许你也有同样的问题:我使用了Google Chrome的扩展程序Web Server NotifierWeb Technology Notifier,它们会发出自己的请求。
禁用它们后,每个页面只会有一个请求。

这对我来说似乎也是这样。我使用的扩展名只是ezLinkPreview。 - monocle
2
这在2018年末仍然是一个问题。每个请求我都会得到5或6个重复。检查扩展是否是罪魁祸首的一种简单方法是在隐身窗口中打开您的网站,这将禁用扩展程序。 - David Lari

5
问题可能与以下问题有关:http://news.ycombinator.com/item?id=1872177 引用块: Chrome在其开发者版本中尝试了一些积极的策略(我认为这很酷)。他们正在尝试向服务器规避性地打开套接字,并在第一次尝试没有迅速获得响应时打开第二个套接字。很容易看出,这些内容中的错误或期望行为可能触发滥用过滤器。但是,正如我所说,我认为这值得做。如果Web更快,所有这些Web初创公司将赚取更多钱。
如果您的Rails应用程序响应不够快,则可能Chrome正在尝试获取用户的备选内容。您可能无法解决此问题。您的响应时间非常快,但是取决于连接的启动时间,这可能是问题的一部分。

0
我在研究一个类似的问题时发现了这个线程。我有一个HTML <OBJECT>,它的数据是通过调用php脚本来填充的。当在Chrome 27.0.1453.81中运行时,我会得到两个调用(GET)到PHP脚本,但只有IE(10.0)或FF(19.0.2)中的一个。查看HTTP流量,第二个GET是在第一个GET之后生成的,但在第一个GET响应之前,所以我倾向于同意Chrome正在不耐烦地发送第二个GET,因为它认为第一个GET失败了(实际上没有)。
我的php脚本总是需要几秒钟才能运行,我无法解决这个问题,这个第二个调用给我带来了一些麻烦,所以我对任何可能控制它的策略感兴趣。

你找到任何解决这个问题的方法了吗?这些重复的查询正在触发我的滥用过滤器。使用其他浏览器的客户端没有问题。 - soger

0
不,但我并没有被它困扰。说实话,我已经完全忘记了这篇帖子。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接