2010-08-06 6 views
1

J'ai un site où une page prend 10 secondes à charger avec Firefox, et 10 secondes supplémentaires pour charger les images. C'est une page php fonctionnant sur Apache. Les images sont simplement des images statiques.Site incroyablement lent pour Firefox, instantané sur tous les autres navigateurs: problème KeepAlive?

Il fonctionne magnifiquement sur chrome .... chargement instantané. Googling pour la réponse m'a pointé vers un problème possible avec garder en vie et l'absence de longueur de contenu confus firefox, et en effet, il semble que la longueur du contenu n'est pas définie par le serveur sur le statique ou non statique contenu, mais la désactivation garder vivant sur le serveur double le temps de chargement!

Certains sites ont suggéré de désactiver la fonction Rester en vie sur le navigateur, mais je suis réticent à recommander cela à tout le monde qui consulte la page! Suis-je peut-être aboyer le mauvais arbre?

Le navigateur est firefox 3.6.8 sur Lucid Lynx. le serveur est Apache 2.2.11. Apache.conf is apended ... Je pense que c'est celui qui sort de la boîte, bien que j'ai réduit le délai d'attente KeepAlive à 3 dans une tentative vaine pour essayer de charger la page.

Est-ce que j'aboie le mauvais arbre?

ServerRoot "/etc/apache2" 

LockFile /var/lock/apache2/accept.lock 
PidFile ${APACHE_PID_FILE} 
Timeout 300 
KeepAlive On 
MaxKeepAliveRequests 100 
KeepAliveTimeout 3 
<IfModule mpm_prefork_module> 
    StartServers   5 
    MinSpareServers  5 
    MaxSpareServers  10 
    MaxClients   150 
    MaxRequestsPerChild 0 
</IfModule> 
<IfModule mpm_worker_module> 
    StartServers   2 
    MaxClients   150 
    MinSpareThreads  25 
    MaxSpareThreads  75 
    ThreadsPerChild  25 
    MaxRequestsPerChild 0 
</IfModule> 
User ${APACHE_RUN_USER} 
Group ${APACHE_RUN_GROUP} 
AccessFileName .htaccess 
<Files ~ "^\.ht"> 
    Order allow,deny 
    Deny from all 
</Files> 
DefaultType text/plain 
HostnameLookups Off 
ErrorLog /var/log/apache2/error.log 
LogLevel warn 
Include /etc/apache2/mods-enabled/*.load 
Include /etc/apache2/mods-enabled/*.conf 
Include /etc/apache2/httpd.conf 
Include /etc/apache2/ports.conf 
LogFormat "%v:%p %h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" vhost_combined 
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined 
LogFormat "%h %l %u %t \"%r\" %>s %b" common 
LogFormat "%{Referer}i -> %U" referer 
LogFormat "%{User-agent}i" agent 
CustomLog /var/log/apache2/other_vhosts_access.log vhost_combined 
Include /etc/apache2/conf.d/ 
Include /etc/apache2/sites-enabled/ 
+0

Pouvez-vous créer un lien vers le site actuel? Est-ce lourd JS? –

+0

J'ai mis en place un site de test à http://www.farnthropkelly.co.uk/ – ohp

+0

J'ai posté quelques horaires sur ce site ... DNS recherche est très bien .. Actuellement, je suis d'avis de penser cela est un bug firefox étrange .. Will essayer ceci sur une version de Firefox de Firefox, et peut-être IE, ou différentes versions de Firefox. – ohp

Répondre

2

Le problème était avec la recherche DNS locale. Le problème était caché par le fait que la résolution DNS de la ligne de commande semblait être OK, et le chrome était rapide comme l'éclair. Il s'avère que chrome utilise pré-extraction DNS, qui n'utilise pas la pile réseau local. Cela m'a jeté complètement sur le mauvais bord. Après la création d'un service de liaison local, firefox semble fonctionner correctement.

Donc quelque chose à surveiller lors de l'exécution de chrome sur la même plate-forme que les autres navigateurs.

1

Ne pas désactiver le maintien en vie. Cela fait qu'une seule connexion peut être utilisée pour obtenir plusieurs pages (ou images, ou fichiers .js, ou fichiers .css, etc.), ce qui réduit considérablement le temps de chargement de la page. Assurez-vous simplement que vos scripts ajoutent des en-têtes Content-Length et que tout ira bien.

+0

Je vais jeter un coup d'oeil au script php, mais est-ce que apache ne devrait pas ajouter la longueur du contenu aux fichiers statiques? En y repensant, je n'ai jamais eu à ajouter manuellement la longueur du contenu à un fichier php non plus ... – ohp

+0

Apache devrait le faire, oui. Mais commencez simplement par réparer les choses qui sont faciles. Le problème de longueur du contenu peut causer des problèmes avec les transferts en bloc, https, et toutes sortes d'étrangeté que j'ai vu au cours des années. Faites-le simplement par la spécification: spécifiez une longueur de contenu. – mvds

+0

Je lis la spécification wc3 sur http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html qui indique que la longueur du contenu doit être définie lorsque la longueur du contenu est connue avant la transmission. Si le contenu est généré dynamiquement, quelle est la meilleure pratique pour déterminer la valeur? Et comment puis-je obtenir apache pour définir la longueur du contenu d'un fichier graphique statique? – ohp

Questions connexes