Il vous est peut-être déjà arrivé de tomber sur ce message d’avertissement :
Function eregi() is deprecated.
En fait, “deprecated” signifie que les versions récentes de PHP considèrent cette fonction comme obsolète, c’est un peu comme si la fonction ereg() n’existait plus.
Par conséquent, mieux vaut dorénavant utiliser la fonction preg_match qui a pris sa place.
La fonction ereg() ou eregi() est donc remplacée par la fonction preg_match() depuis PHP 5.3 :
Voici la liste des fonctions devenues obsolètes sous PHP 5.3 :
call_user_method() (use call_user_func() instead)
call_user_method_array() (use call_user_func_array() instead)
define_syslog_variables()
dl()
ereg() (use preg_match() instead)
ereg_replace() (use preg_replace() instead)
eregi() (use preg_match() with the ‘i’ modifier instead)
eregi_replace() (use preg_replace() with the ‘i’ modifier instead)
set_magic_quotes_runtime() and its alias, magic_quotes_runtime()
session_register() (use the $_SESSION superglobal instead)
session_unregister() (use the $_SESSION superglobal instead)
session_is_registered() (use the $_SESSION superglobal instead)
set_socket_blocking() (use stream_set_blocking() instead)
split() (use preg_split() instead)
spliti() (use preg_split() with the ‘i’ modifier instead)
sql_regcase()
mysql_db_query() (use mysql_select_db() and mysql_query() instead)
mysql_escape_string() (use mysql_real_escape_string() instead)
Passing locale category names as strings is now deprecated. Use the LC_* family of constants instead.
The is_dst parameter to mktime(). Use the new timezone handling functions instead.Code language:JavaScript(javascript)
Le problème : le code des vidéos n’est pas valide en HTML5
Maintenant que nous avons mis à jour le code des oEmbed Youtube, nous allons rendre le code de l’iframe valide. Voici ce que le code oEmbed de WordPress donne par défaut avec un lien Youtube :
Or le petit problème, c’est que tout cela n’est pas vraiment valide au niveau W3C et je commence à me lasser de voir ces erreurs de validation sur toutes les pages du site avec des vidéos :
Erreur 1 : Attribute allowfullscreen not allowed on element iframe at this point.
Erreur 2 : The frameborder attribute on the iframe element is obsolete. Use CSS instead.Code language:JavaScript(javascript)
La solution : filtrer le rendu oEmbed de WordPress pour purifier le code
Voici donc la solution que j’ai mise en place sur le site : je filtre le code oEmbed de WordPress de manière à retirer le tag allowfullscreen qui n’a rien à faire là et à supprimer l’attribut frameborder, que je remplace par un style="border: none".
Éditez le fichier functions.php de votre thème et ajoutez-y cette fonction:
<?php/*
|-----------------------------------------------------------------------
| Sky oEmbed Filter by Matt - www.skyminds.net
|-----------------------------------------------------------------------
|
| The sky_oembed_filter() function attempts to validate WordPress
| video oEmbeds for HTML5.
| $return is the normal HTML that the oEmbed process would return.
| $data is the data received from the oEmbed call, in an object format.
| $url is the original URL being queried for oEmbed info.
|
*/
add_filter('oembed_dataparse', 'sky_oembed_filter', 90, 3 );
functionsky_oembed_filter( $return, $data, $url ){
$return = str_replace('frameborder="0" allowfullscreen', 'style="border: none"', $return);
return $return;
}Code language:HTML, XML(xml)
Notez que WordPress cache les résultats oEmbed dans la table postmeta donc après avoir installé ce code et si vous voulez vérifier que cela fonctionne, éditez un article pour que le postmeta se mette à jour.
Voilà, vos pages avec vidéos YouTube devraient maintenant être valides.
Cette semaine, j’ai changé le disque dur de mon portable vieillissant (2005, souvenir de l’année de stage IUFM!) pour un disque dur SSD de 120GB.
J’avais lu que cela décuplait les performances et je dois dire que, même si j’étais sceptique avant l’installation, les résultats sont là : mon laptop démarre Linux Mint et est directement utilisable (bureau chargé) en moins de 30 secondes. Nickel.
Le temps de lancement des applications est divisé par 5 ou 6 je dirais. Particulièrement visible avec GIMP par exemple. Cet ordinateur retrouve ses performances d’antan!
C’est plus silencieux, plus rapide… pour l’instant je n’y trouve que des avantages. En fait, je suis tellement satisfait que je pense que le desktop va lui aussi bénéficier de cette petite cure de jouvence un de ces quatre.
Et je pense que ce jour-là, je laisserai tomber Ubuntu, probablement pour Mint.
Sur votre site ou blog, vous avez peut-être ajouté le widget ou bouton +1 de Google+, le réseau social de Google. Or le petit problème, c’est que le code fourni empêche la bonne validation du document.
et voici l’erreur renvoyée par le validateur W3C :
Keyword publisher is not registered
HTML5 étant toujours en cours de réalisation, les valeurs de la balise rel sont assez restreintes et on ne peut pas mettre tout ce que l’on veut sans déclencher l’erreur.
La solution est toute simple : il faut ajouter la valeur du rel en argument dans le lien, comme ceci :
Avec le temps, les mises à jour successives et l’installation de différents plugins, la base de données de WordPress a tendance à prendre du poids, ce qui nuit aux performances. Voici donc comment lui faire bénéficier d’un petit régime.
N’oubliez pas de faire une sauvegarde de votre base de données avant de lancer ces requêtes. Backup now.
Nettoyage de wp_postmeta
Avant optimisation, ma table wp-postmeta faisait 12 403 enregistrements.
DELETE FROM wp_postmeta WHERE meta_key = '_edit_lock';
DELETE FROM wp_postmeta WHERE meta_key = '_edit_last';
DELETE FROM wp_postmeta WHERE meta_key = '_wp_old_slug';
Maintenant : 12 240.
Nettoyage de wp_commentmeta
On supprime tout ce qu’Akismet nous a mis dans la table wp_commentmeta :
DELETE FROM wp_commentmeta WHERE meta_key LIKE '%akismet%';
et on supprime toutes les entrées qui n’ont aucune relation avec wp_comments :
DELETE FROM wp_commentmeta WHERE comment_id NOT IN (SELECT comment_id FROM wp_comments);
Nettoyage de wp_options
Passage de 880 enregistrements à 476. WordPress crée ces entrées automatiquement et les purge occasionnellement, autant l’aider un peu.
DELETE FROM wp_options WHERE option_name LIKE '_site_transient_browser_%';
DELETE FROM wp_options WHERE option_name LIKE '_site_transient_timeout_browser_%';
DELETE FROM wp_options WHERE option_name LIKE '_transient_%';
Je me suis rendu compte qu’un des fichiers javascript d’un plugin WordPress est appelé sur chaque article du site et qu’il n’est pas mis en cache par défaut…
C’est très moyen au niveau optimisation étant donné que c’est typiquement le genre de fichier statique qui n’est pas prêt d’être modifié.
Voici donc les en-têtes (headers) qui vont nous permettre de mettre un fichier en cache en PHP :
<?php/*
|--------------------------------------------------------------------------
| Enable Caching with PHP headers by Matt - www.skyminds.net
|--------------------------------------------------------------------------
|
| Let's set it to 90 days caching.
| seconds, minutes, hours, days
|
*/
$expires = 60*60*24*90;
header('Pragma: public');
header('Cache-Control: maxage='.$expires);
header('Expires: ' . gmdate('D, d M Y H:i:s', time()+$expires) . ' GMT');Code language:HTML, XML(xml)
Et voilà, page mise en cache.
Cela fait moins de requêtes sur le serveur puisque le navigateur n’a pas besoin de redemander la page à chaque visite.
Cela fait quelques années que mon système tourne sous Ubuntu et je n’ai jamais eu à réinstaller l’OS.
Et pourtant, on peut dire que je ne le ménage : j’installe des applications, teste tout ce que je trouve sous la main, désinstalle…
Avec le temps, j’ai remarqué qu’Ubuntu mettait de plus en plus de temps à démarrer donc je me suis penché sur l’optimisation du démarrage du système.
Désactiver les services inutiles
Mon PC principal est un desktop donc certains services ne sont pas vraiment utiles : laptop-mode (permet de gérer la fermeture de l’écran), les hotkeys (touches en bleu sur les portables) :
Cela fait quelques mois que le nouveau serveur est en place et il est temps de faire un petit bilan au niveau des performances.
Charge processeur
Tout d’abord, bien que le serveur soit équipé des mêmes caractéristiques techniques (même CPU, même quantité de RAM), il s’avère qu’il est beaucoup plus réactif que l’ancien.
Le processeur n’est plus surchargé en permanence et lorsque l’on lance un top, la charge du processeur est le plus souvent entre 0.05 et 0.20, ce qui est idéal.
A titre de comparaison, l’ancien serveur avait une charge souvent supérieure à 2.
Analyse du temps de chargement des pages via Google Webmaster Tools
Il y a quelques semaines, je me suis connecté sur Google Webmaster Tools et lorsque j’ai atteint le graphique du temps de chargement des pages du site, j’ai eu l’agréable surprise de découvrir ceci :
Toujours à la recherche de ce qui peut optimiser le chargement du site et soulager le serveur, je vous donne ma configuration du fichier htaccess en ce qui concerne les permaliens (permalinks) de WordPress.
Code de base WordPress
Voici le code htaccess standard de WordPress :
# BEGIN WordPress
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
# END WordPressCode language:PHP(php)
Il y a quelques semaines, je vous ai parlé du plugin GIMP “Enregistrer pour le Web” qui permet d’obtenir le meilleur ratio qualité/poids pour vos images.
Et bien sachez qu’il existe une petite application qui permet d’automatiser la compression d’images JPEG et PNG sans perte de qualité et en un seul clic : Trimage Image Compressor, qui utilise optipng, advpng et jpegoptim, suivant le type du fichier.
Installation
L’installation est très simple, il suffit d’ajouter le dépôt PPA de l’application et de lancer l’installation :