2010-12-13 16 views
10

Mam aplikację Rails 3 i właśnie zauważyłem, że podczas korzystania z Chrome (na Macu) w celu uzyskania dostępu do aplikacji, każda strona w witrynie jest żądana dwukrotnie. Dzieje się to w fazie rozwoju i produkcji (Heroku). Firefox i Safari wysyłają żądanie tylko raz. Zachowanie jest takie samo, nawet po usunięciu wszystkich układów i treści akcji. Wygląda na to, że istnieje problem z typem MIME. Czy ktoś naprawił ten problem?Chrome wysyła żądanie wiele razy.

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

Jest to log serwera w rozwoju:

Rozpoczęte GET "/" dla 127.0.0.1 w Pon Mar 13 10:33:33 -0800 2010

tworzenie przez PagesController # home jak HTML

Przedstawiane szablon tekst (0.0ms)

Współpracownicy mpleted 200 OK w 2ms (Liczba wyświetleń: 1.3ms | ActiveRecord: 0.8ms)


Rozpoczęte GET "/" dla 127.0.0.1 w Pon Mar 13 10:33:33 -0800 2010

tworzenie przez PagesController # domu, */*

Przedstawiane szablon tekst (0.0ms)

Wykonane w 200 OK 3ms (Views: 1.7ms | ActiveRecord: 1.4ms)

+0

Mam podobny problem z Chrome 9.0.597.98 na XP: za każdym razem, gdy otrzymuję stronę (PHP), trafia ona do logu 3 razy (w tej samej sekundzie). Każda inna przeglądarka, którą wypróbowałem, działa dobrze na tej stronie (Firefox 3.6.13/14 na Linux/Windows, Opera/Windows, IE8, nawet Chromium/9.0.597.94/Linux). –

Odpowiedz

4

Znalazłem przyczynę mojego problemu, a może i Twojego: Użyłem rozszerzeń Google Chrome o nazwach Web Server Notifier i Web Technology Notifier, które złożyły własną prośbę.

Po ich dezaktywacji otrzymałem tylko jedno żądanie na stronę.

+0

Wydaje się, że tak też jest w przypadku mnie. Tylko rozszerzenie, którego używałem, to ezLinkPreview. – monocle

4

Problem może być związany z tym numerze: http://news.ycombinator.com/item?id=1872177

Chrome stara niektóre agresywne taktyki w jej deweloper buduje (myślę, że jest cool). To, co robią, polega na spekulacyjnym otwieraniu gniazd na serwery, a także otwieraniu drugiego gniazda, jeśli ich pierwsza próba nie zapewnia wystarczająco szybkiego odpowiedzi. Łatwo zauważyć, jak błąd w tym systemie, a nawet tylko oczekiwane zachowanie, może wywołać filtry nadużyć. Ale, jak powiedziałem, myślę, że warto to robić. Wszystkie te internetowe startupy zarobią więcej pieniędzy, jeśli Internet będzie szybszy.

Jeśli Twoja aplikacja Rails nie reaguje wystarczająco szybko, możliwe, że Chrome próbuje alternatywnych sposobów odzyskania treści dla użytkownika; może nie wiele można z tym zrobić. Twoje czasy reakcji są bardzo szybkie, ale w zależności od czasu rozpoczynania połączenia może to być częścią problemu.

0

Znalazłem ten wątek podczas badania podobnego problemu. Mam HTML <OBJECT>, którego dane są zapełniane przez wywołanie skryptu php. Otrzymuję dwa wywołania (GET) do skryptu PHP podczas uruchamiania w Chrome 27.0.1453.81, ale tylko jeden z IE (10.0) lub FF (19.0.2).Patrząc na ruch HTTP, drugi GET jest generowany po pierwszym GET, ale przed pierwszym GET odpowiedziałem, więc jestem skłonny zgodzić się z sugestią, że Chrome jest niecierpliwy i wysyła drugi GET, gdy uważa, że ​​pierwszy nie powiodło się (czego nie ma).
Mój skrypt php zawsze będzie trwał kilka sekund, a ja nie mogę tego obejść, a ten drugi wywołuje u mnie żal, więc interesuje mnie jakakolwiek strategia, która mogłaby nad nim zapanować.

Powiązane problemy