L’optimisation des sites web en japonais
25 mai 2010Lorsqu’il s’agit de sites dont le contenu est en japonais, il est possible d’alléger le poids de la page en appliquant quelques recettes simples.
Certaines suggestions de ce billet s’appliquent sûrement aussi aux autres langues à encodage multi-octet comme le Chinois ou le Coréen. Mais je n’ai jamais eu à créer des sites dans ces langues.
Choisir judicieusement l’encodage
Il existe 3 encodages principaux pour les caractères japonais. Le plus utilisé est Shift_JIS, puis EUC-JP. Il existe également l’SO-2202-JP, mais je ne crois pas avoir jamais vu de site web l’utiliser.
Bien entendu, le japonais peut être encodé en UTF-8. C’est même sur celui-ci que votre choix devra se porter si votre contenu est, par ailleurs, disponible en d’autres langues ou si vous utilisez des API externes fournissant du contenu en UTF-8. Cela vous évitera des opérations d’encodage/réencodage du jeu de caractères couteuses en ressources serveur.
Sites japonais | Encodage |
---|---|
http://fc2.com/ja | utf-8 |
http://www.rakuten.co.jp | x-euc-jp |
http://ameblo.jp | utf-8 |
http://www.livedoor.com | utf-8 |
http://mixi.jp | euc-jp |
http://goo.ne.jp | utf-8 |
http://www.nicovideo.jp | utf-8 |
http://www.nifty.com | shift_jis |
http://2ch.net | shift_jis |
http://www.biglobe.ne.jp | shift_jis |
Les 3 encodages typiquement japonais ne sont pas égaux en terme de poids. Le codage des caractères est plus ou moins couteux selon celui qui est employé.
J’ai procédé à une comparaison de sites à fort contenu en japonais et comparé le poids gzippé d’une même page dans différents encodages.
Sites | Encodage | Poids | shift_jis | euc-jp | iso-2022-jp | utf-8 |
---|---|---|---|---|---|---|
http://fc2.com/ja | utf-8 | 6865 | 6470 -5,75% |
6470 -5,75% |
6406 -6,69% |
|
http://www.rakuten.co.jp | x-euc-jp | 34624 | 34575 -0,14% |
34152 -1,36% |
35945 +3,82% |
|
http://ameblo.jp | utf-8 | 7881 | 7402 -6,08% |
7395 -6,17% |
7254 -7,96% |
|
http://www.livedoor.com | utf-8 | 22231 | 21050 -5,31% |
21068 -5,23% |
20726 -6,77% |
|
http://mixi.jp | euc-jp | 3023 | 3015 -0,26% |
2948 -2,48% |
3143 +3,97% |
|
http://goo.ne.jp | utf-8 | 16121 | 15245 -5,43% |
15270 -5,28% |
15044 -6,68% |
|
http://www.nicovideo.jp | utf-8 | 14550 | 13720 -5,70% |
13728 -5,65% |
13546 -6,90% |
|
http://www.nifty.com | shift_jis | 31596 | 31582 -0,04% |
31058 -1,70% |
33201 +5,08% |
|
http://2ch.net | shift_jis | 1828 | 1824 -0,22% |
1765 -3,45% |
1928 +5,47% |
|
http://www.biglobe.ne.jp | shift_jis | 13992 | 14051 +0,42% |
13841 -1,08% |
14775 +5,60% |
On constate rapidement que l’UTF-8 est bien plus lourd. Ce n’est pas vraiment une surprise. Sur les autres encodages, les caractères sino-japonais (kanji) utilisent généralement 2 octets, en UTF-8, il n’est pas rare que ceux-ci soient codés sur 3, 4 octets, voire plus. Le Shift_JIS et le EUC-JP se valent en terme de poids. Il est donc recommandé d’utiliser l’un d’entre eux lorsque cela est possible. Suprise, tandis que l’ISO-2202-JP est le second encodage le plus lourd après l’UTF-8, il se compresse mieux et donne au final un poids plus léger une fois gzippé.
Prendre avantage des caractères demi-chasse
Cette astuce est loin d’être nouvelle et remonte au début du développement de sites pour mobiles iMode.
Cela consiste à utiliser une particularité des encodages japonais qui proposent pour certains caractères des version étroites (demi-chasse) codées à l’aide d’un seul octet.
Les caractères disponibles sont les katakana. Bien qu’ils soient plus fins, ils restent lisibles.
Notons cependant que les marques pour les syllabes voisées ou plosives utilisent un caractère supplémentaire. Ainsi le katakana « Pa » compte pour 2 caractères (Ha + la marque de la plosive).
Il est très facile de convertir en PHP entre les caractères simple chasse et double chasse via la fonction mb_convert_kana().
Pour les mêmes raisons, il est fortement déconseillé d’utiliser les versions double-chasse (ou pleine chasse) des caractères alphabétiques. Outre le fait qu’ils sont codés sur 2 octets, et pèsent donc 2 fois plus lourds, ils sont d’une esthétique discutable et rendent un texte carrément illisible. La fonction PHP mb_convert_kana() prend également en charge la conversion des caractères alphabétiques de double-chasse en demi-chasse (et vice versa).
Conclusion
En résumé, si votre site est uniquement en japonais, il est vivement conseillé d’utiliser l’encodage SHIFT_JS ou EUC-JP qui vous permettra de gagner sur le poids de la page, ou encore ISO-2022-JP si vous activez la compression Gzip. Vous pouvez très facilement réaliser des conversions d’encodage en PHP à l’aide des fonctions mb_convert_encoding() ou iconv(). D’autre part, utilisez autant que possible les versions demi-chasse des caractères qui sont moins lourdes que leurs équivalents double chasse.
頑張ってください。
http://fc2.com/ja/ utf-8
http://www.rakuten.co.jp/ x-euc-jp
http://ameblo.jp/ UTF-8
http://www.livedoor.com/ utf-8
http://mixi.jp/ euc-jp
http://goo.ne.jp/ UTF-8
http://www.nicovideo.jp/ utf-8
http://www.nifty.com/ shift_jis
http://2ch.net/ shift_jis
http://www.biglobe.ne.jp/ Shift_JIS
Laisser un commentaire