web-dev-qa-db-fra.com

Caractères superflus en dehors de HTML entraînant un chargement de page exceptionnellement lent

J'ai eu un problème pour regarder où les pages de sites se chargeaient avec une lenteur exceptionnelle - nous parlons de 13 à 20 secondes. Le site est évidemment personnalisé avec divers addons. Je me suis penché dessus, puis j'ai activé le débogage normal et vérifié le profil qui présentait une certaine lenteur dans divers domaines, mais dont aucun ne totalisait le temps de chargement complet de la page. En fait, certains outils d’analyse de pages - parmi lesquels Google - ne reconnaissaient pas correctement la lenteur, affirmant simplement que la page avait été chargée au bout de 4 secondes environ (identique au profil).

Légèrement embarrassé, j'ai creusé plus avant, puis j'ai trouvé le problème avec Telnet. Voici un exemple de ce que j'ai eu.

Premièrement, j'ai utilisé une requête GET complètement basique, à savoir:

GET / HTTP/1.1
Host: www.slowsite.somewhere

Voici l'exemple de sortie:

HTTP/1.1 200 OK
Date: Mon, 03 Nov 2014 09:22:13 GMT
Server: Apache/2.4.9 (Unix)
X-Powered-By: PHP/5.3.28
P3P: CP="NOI ADM DEV PSAi COM NAV OUR OTRo STP IND DEM"
Cache-Control: no-cache
Pragma: no-cache
Set-Cookie: f3c945355423e6c96228179d74322888=tbh278qicf0cle0j8nc5pf0fu3; path=/; HttpOnly
Vary: Accept-Encoding,User-Agent
Cache-Control: max-age=2592000
Expires: Wed, 03 Dec 2014 09:22:13 GMT
Transfer-Encoding: chunked
Content-Type: text/html; charset=utf-8

702a
<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-gb" lang="en-gb" dir="ltr"><head><base href="http://XXXXXXXXXXXX/" /><meta http-equiv="content-type" content="text/html; charset=utf-8" /><meta name="generator" content="Joomla! - Open Source Content Management" /><title>Home</title><link href="http://XXXXXXXXXXX/?view=featured" rel="canonical" /><link href="/?format=feed&amp;type=rss" rel="alternate" type="application/rss+xml" title="RSS 2.0" /><link href="/?format=feed&amp;type=atom" rel="alternate" type="application/atom+xml" title="Atom 1.0" /><link href="/templates/XXXXXXXXX/favicon.ico" rel="shortcut icon" type="image/vnd.Microsoft.icon" /><link rel="stylesheet" href="/components/com_rsform/assets/calendar/calendar.css" type="text/css" /><link rel="stylesheet" href="/components/com_rsform/assets/css/front.css" type="text/css" /><link rel="stylesheet" type="text/css" href="/plugins/system/jch_optimize/assets2/jscss.php?f=953dd117283665c8de4b1dbc99fa7ebc&amp;type=css&amp;gz=gz&amp;d=30&amp;i=0"/><link rel="stylesheet" href="/modules/mod_slideshowck/themes/default/css/camera.css"

puis à la fin ...

<div class="footer3">© 2014 XXXXXXXXXXX. All rights reserved</div><div class="clear">&nbsp;</div><div class="footer-bottom">Company Name: XXXXXXXXXX. Company Registration No/Place of Registration: XXXXXXXXX Cardiff Registered Office Address: XXXXXXX</div></div></div></div></div></body></html>
0

Comme vous pouvez le voir, il y a du texte en dehors du HTML. Cela ressemble à une sorte de sortie Word hexadécimale de débogage. Le premier change tout le temps (par exemple, 7139, 6fc3) mais le dernier à la fin est 0 tout le temps.

J'espère que ça vous dit quelque chose à quelqu'un qui a déjà vu ça?

Si ce n'est pas le cas, je vais devoir creuser cela - je n'ai jamais utilisé Joomla et PHP très rouillé depuis la dernière fois que je l'ai programmé il y a de nombreuses années.

Il est intéressant de noter que si vous affichez la source de la page dans un navigateur (Chrome, Explorer, etc.), ces données supplémentaires ne s'affichent pas du tout. Totalement invisible. Ce n'est que si vous telnet sur le site que vous le voyez.

Ensuite, il est également intéressant de noter que probablement le dernier <newline>0<newline> après le </html> semble faire croire au navigateur que davantage de données vont arriver, et il n'essaie pas de restituer la page tant que le délai de maintien HTTP 1.1 par défaut n'a pas expiré et que la connexion est interrompue. Ce n’est qu’alors que le navigateur demande les fichiers CSS, Javascript, Images, etc. Ce graphique est visible à partir du graphique chronologique/en cascade, par exemple, tools.pingdom.com et gtmetrix.com.

Pour référence, mais probablement sans importance, le site est hébergé avec http://www.heartinternet.co.uk/ avec qui nous avons utilisé ces 7 dernières années et que nous avons trouvé assez fiable et avec de bonnes performances, bien que jamais avait un site Joomla dessus (cela a été développé ailleurs)

1
Ian Macintosh

Notez que votre Telnet est Transfer Encoding est chunked. Pour que 7139 signifie 28985 octets reçus ou 702a signifie 28714 octets reçus.

Ne t'inquiète pas pour ça. Le retard est dû à un autre endroit.

2
Farahmand

Certains plugins tiers peuvent générer le zéro.

  • Ce n'est pas une sortie de module ou de composant, car elle devrait être incluse dans le code HTML
  • Puisque zéro est généré après le code HTML, il est rendu avant que Joomla ne termine l'exécution, par exemple, la fermeture de sessions.

Je voudrais désactiver, un par un, tous les plugins non essentiels (et tout le reste) pour découvrir la cause.

2
Anibal