Chrome отправляет запрос несколько раз

У меня есть приложение Rails 3 и я заметил, что при использовании Chrome (на Mac) для доступа к приложению каждая страница на сайте запрашивается дважды. Это происходит в процессе разработки и производства (Heroku). Firefox и Safari отправляют запрос только один раз. Поведение такое же, даже когда я удаляю все макеты и контент для действия. Кажется, проблема с MIME-типом. Кто-нибудь исправил эту проблему?

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

Это разработка журнала сервера:

Начнется GET "/" для 127.0.0.1 в Пн Дек 13 10:33:33 -0800 2010

Обработка по PagesController # home как HTML

Созданный текстовый шаблон (0.0ms)

Завершено 200 OK в 2ms (Просмотров: 1.3ms | ActiveRecord: 0,8 мс)


Начнется GET "/" для 127.0.0.1 в Пн Дек 13 10:33:33 -0800 2010

Обработка по PagesController # home как */*

Созданный текстовый шаблон (0.0ms)

Завершено 200 OK в 3ms (Просмотров: 1.7ms | ActiveRecord: 1.4ms)

Ответ 1

Я нашел причину своей проблемы и, возможно, вашу: я использовал расширения Google Chrome с именем уведомитель веб-сервера и Web Technology Notifier, который сделал свой собственный запрос.

После деактивации я получил только один запрос на страницу.

Ответ 2

Проблема может быть связана с этой проблемой: http://news.ycombinator.com/item?id=1872177

Chrome пытается создать агрессивную тактику в своих сборках разработчиков (я думаю, это круто). То, что они делают, спекулятивно открывает сокеты для серверов, а также открывает второй сокет, если их первая попытка не дает ответа достаточно быстро. Довольно легко понять, как ошибка в этом материале или даже просто ожидаемое поведение может вызвать фильтры злоупотреблений. Но, как я уже сказал, я думаю, что это стоит того. Все эти веб-стартапы будут зарабатывать больше денег, если Интернет будет быстрее.

Если ваше приложение Rails не отвечает достаточно быстро, возможно, что Chrome пытается использовать альтернативные способы получения контента для пользователя; возможно, вы не сможете много сделать. Время ответа очень быстрое, но в зависимости от времени перераспределения соединения, которое может быть частью проблемы.

Ответ 3

Я нашел эту тему, исследуя аналогичную проблему. У меня есть HTML <OBJECT>, данные которого заполняются вызовом PHP скрипт. Я получаю два вызова (GET) в PHP скрипт при работе в Chrome 27.0.1453.81, но только один из IE (10.0) или FF (19.0.2). Рассматривая HTTP-трафик, второй GET генерируется после первого GET, но до того, как первый GET ответил, поэтому я склонен согласиться с предположением, что Chrome нетерпелив и отправляет второй GET, когда он считает, что первый не удалось (чего у него нет).
Мой php script всегда будет занимать пару секунд, и я не могу обойти это, и этот второй вызов вызывает у меня некоторое горе, поэтому меня интересует любая стратегия, которая может его контролировать.