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 всегда будет занимать пару секунд, и я не могу обойти это, и этот второй вызов вызывает у меня некоторое горе, поэтому меня интересует любая стратегия, которая может его контролировать.