Pourquoi Google Chrome est plus rapide ?

Courte introduction. La genèse de Google Chrome. (4min)

Quelques explications sur V8 le nouveau moteur javascript. (5min)

Comment le moteur javascript v8 fonctionne ainsi que sa roadmap. (50min)

Télécharger les sources
svn checkout http://v8.googlecode.com/svn/trunk/ v8

Accéder au site officiel de V8.

Tuning Apache 2 pour WordPress

Tuning

Désactivation de modules non utilisés

a2dismod authz_default authz_groupfile status cgi env python

apache2.conf

Timeout 10

KeepAlive Off

<IfModule mpm_prefork_module>
StartServers          3
MinSpareServers       3
MaxSpareServers      10
ServerLimit         50
MaxClients          50
MaxRequestsPerChild   2000
</IfModule>

/etc/init.d/apache2 restart

Benchmark

Server version: Apache/2.2.9 (Debian)
Server built:   Jul 14 2009 20:03:28

Loaded Modules:
core_module (static)
log_config_module (static)
logio_module (static)
mpm_prefork_module (static)
http_module (static)
so_module (static)
alias_module (shared)
auth_basic_module (shared)
authn_file_module (shared)
authz_host_module (shared)
authz_user_module (shared)
autoindex_module (shared)
deflate_module (shared)
dir_module (shared)
expires_module (shared)
headers_module (shared)
info_module (shared)
mime_module (shared)
negotiation_module (shared)
php5_module (shared)
rewrite_module (shared)
setenvif_module (shared)
ssl_module (shared)
status_module (shared)

Créer un fichier de 10Ko:

dd if=/dev/zero of=/tmp/10K bs=10K count=1

autobench
version: 2.1.2

${HOME}/.autobench.conf

host1 = www.benjaminbaudouin.com
uri1  = /10K
port1 = 80
low_rate  = 20
high_rate = 200
rate_step = 20
num_conn  = 5000
num_call  = 10
timeout   = 5
output_fmt = tsv

run.sh

#!/bin/bash
graph_title="Apache/2.2.9"
dir="$(date +%Y%m%d)";
[ -e ${dir} ] && rm -rf ${dir}
mkdir ${dir}
[ ! -e ${dir}/output.tsv ] && autobench --single_host --file ${dir}/output.tsv
[ ! -e ${dir}/output.ps ] && echo -e "[copy/paste] graph title: ${graph_title}" && bench2graph ${dir}/output.tsv ${dir}/output.ps
[ ! -e ${dir}/output.gif ] && convert -rotate 90 ${dir}/output.ps ${dir}/output.gif

Conclusion

La limite basse Apache 2.2.9 (Tuned) est visiblement de 35 req/sec pour des pages de 10ko.

Liens

Autobench

Optimize apache slow vps wordpress

Apache Performance Tuning

App

Apache 2 LDAP SSL

Paquets debian (pré-requis)

apt-get install apache2 libapache2-mod-php5 libldap-2.4-2 ldap-utils libsasl2-modules-ldap openssl libsasl2-2 libkrb5-3 php5-ldap php5-sasl php5-auth-pam

Configuration Apache

Activer le module LDAP Apache 2.0

a2enmod auth_ldap

Activer le module LDAP Apache 2.2

a2enmod authnz_ldap

Certificat SSL

Copier le certificat dans /etc/apache2/ssl/ldap.pem

-----BEGIN CERTIFICATE-----
KJDFJ
...
JDiejfioe
-----END CERTIFICATE-----

Configuration LDAP dans Apache 2.0

Ajouter dans apache2.conf ou httpd.conf:

LDAPTrustedCA /etc/apache2/ssl/ldap.pem
LDAPTrustedCAType BASE64_FILE

Configuration LDAP dans Apache 2.2

Ajouter dans apache2.conf ou httpd.conf:

LDAPTrustedGlobalCert CA_BASE64 /etc/apache2/ssl/ldap.pem

/etc/ldap/ldap.conf

BASE    dc=com
URI     ldap://ldap.host.com
TLS_REQCERT demand
TLS_CACERT /etc/apache2/ssl/ldap.pem

Redémarrer le service apache2

/etc/init.d/apache2 restart

Test

ldaptls.php


Troubleshooting

Problème: fonction PHP ldap_start_tls en erreur. Authentification LDAP impossible par la suite.

Système: debian lenny
Nom du paquet: apache2
Version: 2.2.9-10

Solution:

cd /etc/ldap
mkdir certs
cp /etc/apache2/ssl/ldap.pem /etc/ldap/certs/mycert.pem
vi /etc/ldap/ldap.conf

TLS_REQCERT  never
TLS_CACERT  /etc/ldap/certs/mycert.pem

/etc/init.d/apache2 restart

App

Apache 2.2 – Lister les modules chargés

apache2ctl -t -D DUMP_MODULES

Loaded Modules:
core_module (static)
...
userdir_module (shared)
Syntax OK

App

WordPress Video Plugin HACK

Comment rendre plus rapide et plus accessible une page web contenant du flash ?
Une première réponse serait de ne pas intégrer de flash dans les pages web.

Mais si nous avons réellement besoin de flash et que nous souhaitons partager une vidéo intéressante avec la communauté ?
Nous allons charger l’objet flash à la demande de l’utilisateur.

Voici un hack du plugin wordpress video plugin inspiré de ce qui se fait sur Facebook.

Télécharger l’archive wordpress-video-plugin-hack.tar

hack-minify.js


function LoadContent(page,usediv){try{xmlhttp=window.XMLHttpRequest?new XMLHttpRequest():new ActiveXObject("Microsoft.XMLHTTP");}catch(e){alert("Error: Could not load page.");}
document.getElementById(usediv).innerHTML='<img src="http://www.benjaminbaudouin.com/wp-content/plugins/wordpress-video-plugin-hack/loading.gif">';xmlhttp.onreadystatechange=function(){if((xmlhttp.readyState==4)&&(xmlhttp.status==200)){document.getElementById(usediv).innerHTML=xmlhttp.responseText;}}
xmlhttp.open("GET",page);xmlhttp.send(null);return false;}
function toggle_visibility(id){var e=document.getElementById(id);if(e.style.display=='block')
e.style.display='none';else
e.style.display='block';}
function is_visible(id){var e=document.getElementById(id);if(e.style.display=='block')
return 1;else
return 0;}

inclusion dans wordpress header.php

 ... wp_head(); ?>
<script type="text/javascript" src="http://www.benjaminbaudouin.com/wp-content/plugins/wordpress-video-plugin-hack/hack-minify.js"></script>
</head> ...

hack de video.php

// Youtube Code
...
define("YOUTUBE_TARGET", "<div id=\"flashobj###URL###\"><a onclick=\"LoadContent('http://www.benjaminbaudouin.com/wp-content/plugins/wordpress-video-plugin-hack/flashobj.php?url=http://www.youtube.com/v/###URL###&width=###WIDTH###&height=###HEIGHT###','flashobj###URL###');toggle_visibility('flashobj###URL###');\"><img class=\"videothumb\" src=\"http://i1.ytimg.com/vi/###URL###/default.jpg\"><span class=\"videothumbplay\"><img id=\"thumbplay###URL###\" src=\"http://www.benjaminbaudouin.com/wp-content/plugins/wordpress-video-plugin-hack/fbvbs43b.png\"></span></a></div>");
...

les images fbvbs43b.png et loading.gif

style.css (thème thematic)

.videothumb {
cursor: pointer;
}
.videothumbplay {
cursor: pointer;
margin-left: -115px;
}

Voila à quoi ressemble le hack une fois implémenté (cliquez sur l’image pour lancer la vidéo):

Web

Recent Tweets

Catégories