Bonjour,
et bien je n'arrive malheureusement pas faire fonctionner ce module mod_expires .. Une fois la configuration en place dans mon vhost, je relance apache et vérifie le résulta au travers de YSlow.
=> Grade F on Add Expires headers
A+
Bonjour,
et bien je n'arrive malheureusement pas faire fonctionner ce module mod_expires .. Une fois la configuration en place dans mon vhost, je relance apache et vérifie le résulta au travers de YSlow.
=> Grade F on Add Expires headers
A+
On ne le répètera jamais assez : donnez du détail si vous voulez qu'on vous aide !!! Si la conf est critique, que tu ne veux pas la donner publiquement, tu peux l'envoyer par MP ou l'anonymiser. Mais de grâce, du détail. Tu as 3 virtual hosts dans sites-enabled : lequel VH est utilisé ? Qu'as-tu mis dans le fichier de conf associé ?
Du détail, du détail, du détail !!!
Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute
Bonjour Mac,
Pas la tête .. Pas la tête
Dans /etc/apache2/sites-available
j'ai les fichiers de configuration suivant :
/etc/apache2/sites-available/default
/etc/apache2/sites-available/default-ssl
etc/apache2/sites-available/default.dpkg-dist
/etc/apache2/sites-available/vhosts
/etc/apache2/sites-available/vhosts_ssl
#### /etc/apache2/sites-available/default ####
#### /etc/apache2/sites-available/vhosts ####
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 Alias /sivit-icons/ /usr/share/sivit/icons/ Listen 10001 <Directory /usr/share/sivit/web> AllowOverride FileInfo AuthConfig Limit </Directory> <VirtualHost xx.xxx.xxx.xxx:10001> ServerName vdsxxxx.sivit.org DocumentRoot /usr/share/sivit/web/ ErrorLog /var/log/apache2/error_sivit_ssl_log CustomLog /var/log/apache2/access_sivit_ssl_log combined SSLEngine on SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL SSLCertificateFile /etc/ssl/certs/apache.crt SSLCertificateKeyFile /etc/ssl/private/apache.key SetEnvIf User-Agent ".*MSIE.*" nokeepalive ssl-unclean-shutdown downgrade-1.0 force-response-1.0 php_admin_flag safe_mode off </VirtualHost> <VirtualHost xx.xxx.xxx.xxx:80> ServerName vdsxxxx.sivit.org DocumentRoot /home/web/ php_admin_flag safe_mode on <Directory /home/web/> Options -Indexes AllowOverride All </Directory> </VirtualHost>
#### /etc/apache2/sites-available/vhosts_ssl ####
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 <VirtualHost xx.xxx.xxx.xxx:80> DocumentRoot /home/web/mondomaine.com/ftp/www ServerName mondomaine.com ServerAlias *.mondomaine.com CustomLog /var/log/apache2/access.mondomaine.com.log combined ErrorLog /var/log/apache2/error.mondomaine.com.log VirtualDocumentRoot /home/web/mondomaine.com/ftp/%1 ScriptAlias /cgi-bin/ /home/web/mondomaine.com/ftp/cgi-bin/ php_admin_flag safe_mode on php_admin_value upload_tmp_dir /home/web/mondomaine.com/tmp php_admin_value session.save_path /home/web/mondomaine.com/sessions </VirtualHost>
Dans les 3 j'ai essayé d'inclure au dessus du dernier </VirtualHost>
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 <VirtualHost xx.xxx.xxx.xxx:443> DocumentRoot /home/web/mondomaine.com/ftp/www ServerName mondomaine.com #ServerAlias *.mondomaine.com CustomLog /var/log/apache2/access.ssl.mondomaine.com.log combined ErrorLog /var/log/apache2/error.ssl.mondomaine.com.log SSLEngine on SSLCertificateFile /etc/apache2/ssl/mondomaine.com.crt SSLCertificateKeyFile /etc/apache2/ssl/mondomaine.com.key SSLCACertificateFile /etc/apache2/ssl/GandiStandardSSLCA.pem SSLVerifyClient None VirtualDocumentRoot /home/web/mondomaine.com/ftp/%1 ScriptAlias /cgi-bin/ /home/web/mondomaine.com/ftp/cgi-bin/ php_admin_flag safe_mode on php_admin_value upload_tmp_dir /home/web/mondomaine.com/tmp php_admin_value session.save_path /home/web/mondomaine.com/sessions </VirtualHost>
et après ça une mise à jour avec la commande
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 <IfModule mod_expires.c> ExpiresActive On ExpiresDefault "access plus 1 minutes" ExpiresByType image/gif "access plus 10 years" ExpiresByType image/png "access plus 10 years" ExpiresByType image/jpeg "access plus 10 years" ExpiresByType image/jpg "access plus 10 years" ExpiresByType text/javascript "access plus 10 years" ExpiresByType text/css "access plus 10 years" </IfModule>
a2enmod expires && /etc/init.d/apache2 restart
Voili voiloo
Dans ce cas, pourquoi ça n'apparaît pas dans les différents fichiers ?
Ca ne doit rien changé mais à tout hasard fais
plutôt qu'un restart : en fonction de la manière de redémarrer, Apache ne prend pas nécessairement toutes les mises à jour en compte.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 /etc/init.d/apache2 stop /etc/init.d/apache2 start
Pense à vider ton cache aussi entre chaque test
C'est possible que tu m'envoies par MP une URL pour tester ?
Du détail, du détail, du détail !!!
Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute
Bonsoir Mac,
Comme ça ne fonctionnait pas j'ai retiré le code des modules ... Merci pour ces nouvelles indications, je vais de ce pas remettre ça en place.
++
Au risque de te décevoir, mod_expires semble fonctionner correctement !! En tout cas, le cache est bien géré. Par exemple, en accédant à la page d'accueil pour la première fois du site, on a la trace suivante :
et à l'accès suivant, Firefox ne sort plus du tout cette trace.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 GET /themes/xxx/style.css HTTP/1.1 Host: www.xxx.com User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3 ( .NET CLR 3.5.30729) Accept: text/css,*/*;q=0.1 Accept-Language: en-us,en;q=0.5 Accept-Encoding: gzip,deflate Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7 Keep-Alive: 115 Connection: keep-alive Referer: http://www.xxx.com/ Cookie: PHPSESSID=f53d45f3ea8f2b7d78e6d419842763ad HTTP/1.1 200 OK Date: Mon, 07 Jun 2010 21:07:52 GMT Server: Apache Last-Modified: Thu, 03 Jun 2010 14:49:32 GMT Etag: "8a371-769d-4882150753700" Accept-Ranges: bytes Cache-Control: max-age=604800 Expires: Mon, 14 Jun 2010 21:07:52 GMT Vary: Accept-Encoding,User-Agent Content-Encoding: gzip Content-Length: 5835 Keep-Alive: timeout=15, max=100 Connection: Keep-Alive Content-Type: text/css
Vu le fonctionnement de ton site, le problème n'est pas du tout le cache : le navigateur met un temps fou à récupérer les données sur la première connexion ; après, le reste, ça roule super bien. Tu peux aussi jouer avec mod_deflate (qui est activé d'après Wireshark) mais je pense que ça ne changera rien, voire au contraire. Car mod_deflate sert à optimiser la bande passante mais surtout pas les performances car pour chaque requête, le serveur devra compressé le contenu qui sera à son tour décompressé par le navigateur. C'est du temps de traitement et du CPU supplémentaire et ça charge les machines. Là, ton problème est autre. Je pense qu'il faut revoir le paramétrage global d'Apache ou de PHP, pas jouer avec mod_deflate ou mod_expires qui de toute façon ne sert à rien la première fois qu'un visiteur vient sur ton site.
Wireshark me montre que le serveur met plus de 3 secondes pour répondre au premier GET : c'est ça le problème, c'est pas le cache. A ta place, vu que Wireshark montre également que mod_deflate est activé et que ça peut saturer le CPU, je commencerais par repartir sans mod_deflate pour éliminer ce facteur. Ensuite, je mettrais dans mon code PHP de index.php des traces tout au long du code pour pister le temps mis pour exécuter chaque portion de page. Car il ne faut pas oublier : le problème peut venir du hardware (à ce propos, quelles sont les caractéristiques du serveur ?), d'Apache mais aussi du code PHP ! Il faut éliminer les pistes une par une alors désactive mod_deflate et ajoute des traces dans index.php (des simples echo "<!-- ".time()." -->" pour pister le temps mis pour générer la page au fur et à mesure de son exécution. Quand tu auras fait ça, on verra ce qu'il faut faire ensuite.
Du détail, du détail, du détail !!!
Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute
Oui là le mod_expires devait fonctionner car j'avais testé via .htaccess .. J'ai donc désactivé les modules headers, expires et deflate
Mon serveur est un VDS 1024
Apache était configuré d'origine et il a été ajouté par la suite, eAccelerator, un firewall, Ioncube, GD2, Fail2ban, Gestion SSL, Roundcube .. Tout ceci a été installé par la Team de l'hébergeur.
Pour le site j'utilise la base d'un script sous licence, qui est assez lourd.
Ok, je vais regarder tout ceci cette semaine (je peux continuer sur ce thread ?)
Merci pour cette analyse et de tes conseils.
++
Bonjour à tous et à toutes,
J'ai placé un echo time sur l'index de mon site (il apparait dans le footer).
résultat => 1275988285
Sinon sur le serveur il y une tache cron qui est exécutée toutes les minutes, heures, jours du mois, mois et jours de la semaine
Le site peut gérer cette tache sans passer par le serveur, peut être serait-il moins sollicité
Code : Sélectionner tout - Visualiser dans une fenêtre à part wget -o /dev/null http://www.monsite.tld/cronjobs/maincron.php 2>&1 > /dev/null
Bonne journée.
D'après ta capture d'écran, le hardware n'est pas en cause.
Pour le cron, est-ce utile ? Je veux dire, est-ce possible de le désactiver, genre 1 heure, histoire de voir si les choses s'améliorent ?
Mettre le echo time() juste dans le footer c'est totalement inutile : savoir l'heure qu'il est quand la page a tourné ne sert à rien. Je parlais de mettreLe but du jeu c'est d'identifier, en comparant les nombres affichés par time(), la partie de la page d'accueil qui met le plus de temps à s'exécuter (pourquoi la page met 3 secondes à s'exécuter ?? C'est beaucoup trop, surtout pour une page d'accueil) puis une fois identifiée, voir comment l'optimiser. Si c'est une requête SQL, il faudrait l'optimiser.Envoyé par _Mac_
Du détail, du détail, du détail !!!
Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute
Bonjour à tous, bonjour Mac,
Hélas il n'est pas possible d'arrêter le cron, même temporairement, et je n'ai pas la possibilité avec la version actuelle du site, de geler temporairement les procédures liées aux articles en vente. J'ai testé la gestion du cron via le site, au lieu qu'il passe par le serveur, mais cela n'a rien donné, le site est toujours aussi lent.
D'ailleurs, j'ai été obligé de faire un reboot à 23 heures, la charge serveur était montée à 20 avec plus de 200 processus. mysql utilisait près de 50% du processeur.
Concernant le echo time(), il était bien placé dans mon index.php, mais celui-ci à glissé en bas du template. Je viens de le remonter dans mon globalmainpage, il est donc visible en haut à gauche de la page d'accueil. Il est aussi possible de le placer dans le header, qui est commun à l'ensemble du site.
A++
Re,
Je viens de me souvenir que j'avais mis en place un .htaccess dans mon dossier cron sur le FTP pour eviter que l'on puisse lancer les commandes depuis l'extérieur, je l'ai donc désactivé pour le moment.
J'ai eu aussi un jour à manipuler php.ini, il faudrait que je puisse trouver ce fichier dépourvu de modif pour le comparer à celui en place.
++
Cela pourrait expliquer les lenteurs : une ou plusieurs requêtes mal optimisées ou un modèle de données mal construit.
Je veux bien que tu le déplaces où tu veux MAIS IL EN FAUT PLUSIEURS !!!!! PARTOUT DANS LE CODE !!!! Je répète une fois de plus que l'objectif est d'identifier les portions de code qui mettent trop de temps à s'exécuter et que pour faire ça, on va comparer PLUSIEURS time() placer en PLUSIEURS endroits du code.
Du détail, du détail, du détail !!!
Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute
Bonsoir,
Et bien je ne parviens pas à mettre en place plus de 2 echo time .. C'est la cata la cata, la catastrophe. L'ensemble du site est maintenant impacté par ce ralentissement. Sous Opera je ne peux même pas visualiser le site, les images mettent un temps infini à charger.
Et mysql qui monte, qui monte.
C'est le b****l mon colonel !
Bien entendu, un serveur plus gros ne réglera en rien le problème, hein.
J'attends des nouvelles de la team qui gère le script
A+
Comment ça se fait ? Le script est plein d'include/require ? Ce que tu peux faire au moins c'est effectivement mettre un time() au tout début du script et un autre tout à la fin et faire la différence entre les 2 nombres : ça te dira combien de temps (en millisecondes, je crois) met le script à s'exécuter complètement. Si c'est genre 1 seconde alors que tu constates que la page met plus de temps que ça à s'afficher, ça veut qu'il y a un problème ailleurs que dans le script, mais si c'est plus de 3 secondes comme j'ai pu le constaté, c'est clairement le code PHP qui est en cause et pour le coup, comme je disais, ce n'est pas activer la compression ou mod_expires qui résoudra le problème.
Pour MySQL, il faut que tu parviennes à identifier les requêtes qui sont faites depuis la page d'accueil. Si le site ralentit au fil du temps, c'est-à-dire au fur et à mesure que la base grossit, c'est quasi certain que c'est un problème de base de données : ça sent fort l'index qui manque.
Du détail, du détail, du détail !!!
Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute
Bonsoir Mac,
Comment ça se fait ? Ba je suis loin d'être un as dans le domaine
je vais re re essayer .. Actuellement dans le header j'ai 1276113284 et dans mon footer 1276113261
Ce qui est quand même étrange, c'est que je n'ai jamais eu de souci, mes problèmes ont commencés dès lors ou j'ai activé deflate et expires. Le site est quasi inaccessible .. Malheureusement là ça dépasse et de loin mes compétences
++
Effectivement... 23 millisecondes pour générer la page, c'est plus que satisfaisant.
Pourquoi persister à vouloir activer ces modules, dans ce cas ? mod_expires, pourquoi pas l'utiliser, je ne pense pas qu'il "bouffe" tant que ça, mais mod_deflate, si ton serveur est limite, il ne faut pas l'utiliser.
Du détail, du détail, du détail !!!
Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute
La mise en place des modules était d'une part pour suivre les recommandations d'Yslow et d'autre part, le serveur indiquant souvent Charge importante je pensais bien faire en activant ces maudits modules .. J'aurais du m'abstenir ou me casser une patte ce jour là
Mon serveur : Intel(R) Xeon(R) CPU E5405 @ 2.00GHz, 8 cores
je dois avoir 80 parts (ou fractionnement) je ne sais pas trop à quoi cela correspond
Mémoire réelle 1 GB total, 397.05 MB utilisé
Mémoire virtuelle 199.99 MB total, 11.38 MB utilisé
Du coup je me demande si je dois remettre deflate .. Est-ce une coïncidence tous ces problèmes ?
Qu'est-ce que ça va être quand je passerai de 11 users en ligne à 50 ou 100..
++
Perso, avec tout ce que tu dis, je ne mettrais pas mod_deflate. Pour mod_expires, à mon avis ça se tente. Après, faut quand même voir à tuner la base de données (moteur MySQL et modèle de données) et peut-être envisager un upgrade de mémoire.
Du détail, du détail, du détail !!!
Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute
Bonsoir Mac,
Alors pour mod_expires avec toutes ces péripéties, je ne sais toujours pas où le placer exactement Pour ce qui est de tuner la base de données (moteur MySQL et modèle de données), ce n'est pas dans mes compétences.
Concernant le serveur, j'avais pensé à un upgrade en 2048, mais chez si.v.it cette formule a été supprimée .. Le serveur au dessus de celui que je possède est en 4096 pour la modique somme de 100 EUR/mois avec une sauvegarde par semaine, sans historique, gloupsss
Sinon, pour les ralentissements de mon site, je pense avoir trouvé la cause, enfin, les causes .. D'une part j'ai supprimé une flopée de code dans mon .htaccess qui bloquait les robots spammeurs et j'ai supprimé également l'accès à mon flux de nouveautés.
Allez, je m'équipe de ma lampe frontale et retourne plonger dans webmin et deflate !
A++
Bonjour à tous,
Je ne m'en sors pas avec la configuration de expires
voici se que j'ai mis dans
/etc/apache2/sites-available/vhosts
/etc/init.d/apache2 stop
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 <VirtualHost xx.xxx.xxx.xxx:80> DocumentRoot /home/web/mondomaine.com/ftp/www ServerName mondomaine.com ServerAlias *.mondomaine.com CustomLog /var/log/apache2/access.mondomaine.com.log combined ErrorLog /var/log/apache2/error.mondomaine.com.log VirtualDocumentRoot /home/web/mondomaine.com/ftp/%1 ScriptAlias /cgi-bin/ /home/web/mondomaine.com/ftp/cgi-bin/ php_admin_flag safe_mode on php_admin_value upload_tmp_dir /home/web/mondomaine.com/tmp php_admin_value session.save_path /home/web/mondomaine.com/sessions <IfModule mod_expires.c> ExpiresActive On ExpiresDefault "access plus 1 minutes" ExpiresByType image/gif "access plus 10 years" ExpiresByType image/png "access plus 10 years" ExpiresByType image/jpeg "access plus 10 years" ExpiresByType image/jpg "access plus 10 years" ExpiresByType text/javascript "access plus 10 years" ExpiresByType text/css "access plus 10 years" </IfModule> </VirtualHost>
/etc/init.d/apache2 start
ensuite je fais un petit tour sur le site gtmetrix pour voir l'état, et rien .. Aucun changement.
++
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager