2010-12-13 7 views
10

J'ai une application Rails 3 et je viens de remarquer que lorsque j'utilise Chrome (sur Mac) pour accéder à l'application, chaque page du site est demandée deux fois. Cela se passe dans le développement et la production (Heroku). Firefox et Safari envoient seulement la demande une fois. Le comportement est le même même lorsque je supprime toutes les mises en page et le contenu de l'action. Il semble qu'il y ait un problème de type MIME. Est-ce que quelqu'un a résolu ce problème?Chrome envoie une demande plusieurs fois

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

C'est le journal du serveur dans le développement:

GET Started "/" pour 127.0.0.1 au Mon Dec 13 10:33:33 -0800 2010

Traitement par PagesController # maison comme HTML

modèle texte (Rendus 0.0ms)

Co mpleted 200 OK en 2ms (Vues: 1.3ms | ActiveRecord: 0,8 ms)


GET en route "/" pour 127.0.0.1 au Mon Dec 13 10:33:33 -0800 2010

Traitement par PagesController # maison comme */*

modèle texte (Rendus 0.0ms)

complète 200 OK dans 3ms (Vues: 1.7ms | ActiveRecord: 1,4ms)

+0

J'ai un problème similaire avec Chrome 9.0.597.98 sur XP: chaque fois que je reçois un (PHP) page, il touche le journal 3 fois (sur la même seconde). Tout autre navigateur que j'ai essayé fonctionne bien avec cette page (Firefox 3.6.13/14 sous Linux/Windows, Opera/Windows, IE8, et même Chromium/9.0.597.94/Linux). –

Répondre

4

J'ai trouvé ce qui a causé mon problème, et peut-être le vôtre: J'ai utilisé les extensions de Google Chrome nommées Web Server Notifier et Web Technology Notifier qui ont fait leur propre demande. Après les avoir désactivés, je n'ai reçu qu'une seule requête par page.

+0

Cela semble être le cas pour moi aussi. Seule l'extension que j'utilisais était ezLinkPreview. – monocle

4

Le problème peut être lié à cette question: http://news.ycombinator.com/item?id=1872177

Chrome tente des tactiques agressives dans son développeur construit (je pense que c'est cool). Ce qu'ils font est l'ouverture spéculative des sockets aux serveurs, et l'ouverture d'une seconde socket si leur première tentative n'obtient pas une réponse assez rapidement. Il est assez facile de voir comment un bug dans ce genre de choses, ou même seulement le comportement attendu, pourrait déclencher des filtres d'abus. Mais, comme je l'ai dit, je pense que cela vaut la peine de le faire. Toutes ces startups web gagneront plus d'argent si le Web est plus rapide.

Si votre application Rails ne répond pas assez rapidement, il est possible que Chrome tente d'obtenir d'autres moyens de récupérer du contenu pour l'utilisateur; il n'y a peut-être pas grand chose à faire à ce sujet. Vos temps de réponse sont très rapides, mais en fonction du temps de mise en route de la connexion, cela peut faire partie du problème.

0

J'ai trouvé ce sujet tout en recherchant un problème similaire. J'ai un HTML <OBJECT> dont les données sont remplies par un appel à un script PHP. Je reçois deux appels (GET) au script PHP lors de l'exécution dans Chrome 27.0.1453.81, mais un seul de IE (10.0) ou FF (19.0.2).En regardant le trafic HTTP, le second GET est généré après le premier GET, mais avant que le premier GET ne réponde, je suis enclin à accepter la suggestion que Chrome soit impatient et envoie le second GET quand il croit le premier. a échoué (ce qui n'a pas).
Mon script php toujours prendre quelques secondes pour courir et je ne peux pas travailler autour de cela, et ce second appel me cause une douleur, donc je suis intéressé par une stratégie qui pourrait le contrôler.

Questions connexes