Optimisation des transferts de données sur les réseaux mobilesCet article traite des différentes techniques d'optimisation des transferts de données sur les réseaux mobiles. Le but est de permettre d'avoir un aperçu des différentes solutions possibles ainsi que de leurs avantages et leurs inconvénients. À noter que certaines des techniques présentées ci-dessous ne sont pas limitées aux réseaux mobiles et peuvent s'appliquer à tout type de transferts. But de l'optimisationOptimiser les transferts de données permet de réduire l'impact énergétique sur les périphériques mobiles (smartphone ou tablette tactile). Des transferts optimisés permettent :
Ceci permet en outre un gain d'énergie considérable mais aussi un gain financier de par le coût élevé des communications mobiles ainsi qu'une utilisation plus fluide du périphérique mobile. Techniques d'optimisation
Développement d'un site mobileDans le cadre des applications web, développer un site web dédié au mobile se révèle très bénéfique[1]. Une approche naïve serait d'effectuer une mise à l'échelle via un CSS, ainsi qu'éventuellement une remise en forme. Les sections ci-dessous, ainsi que le chapitre abordant la compression des données nous expliquent pourquoi cela n'est pas suffisant et quelles sont les bonnes pratiques à respecter. JavaScriptLa technologie JavaScript est coûteuse au niveau de l'utilisation du CPU[2]. Dans la mesure du possible, il est recommandé de ne l'utiliser qu'à juste titre[3]. Par exemple, pour attribuer un identifiant aux différents éléments d'une page web on peut :
Dans le cadre d'un développement mobile, la seconde approche sera préférable afin de minimiser les calculs effectués par le périphérique mobile. D'un point de vue transfert de données, une autre bonne pratique est de créer un fichier JavaScript propre à chaque page web. Celui-ci devant contenir uniquement les fonctions utiles. Ce point est à prendre en compte particulièrement lors de l'utilisation de librairies génériques telles que jQuery. Remarquons également que l'utilisation de requêtes JavaScript dynamiques empêche l'utilisation d'un cache de données. CSSTout comme pour le JavaScript, le traitement du CSS est couteux en CPU, il est donc conseillé de minimiser l'utilisation de règles CSS et de proposer une apparence simplifiée[3]. De plus, le support du CSS sur les navigateurs mobiles n'est pas aussi complet que sur les navigateurs de bureau. Pour optimiser le transfert de données, il est également recommandé de créer un fichier CSS propre à chaque page web. Celui-ci devant contenir uniquement les règles utiles. Compression des donnéesMinificationLa minification est une technique qui permet de réduire la taille des fichiers sources (JavaScript/CSS). Il existe plusieurs techniques de minification :
L'exécution du code aboutit à un résultat identique, les transferts sont allégés, mais le code devient difficilement lisible. La minification est également une technique d'offuscation du code. Traitement des imagesPour optimiser les transferts des images, on peut travailler sur deux paramètres : son format de codage et sa résolution. Il est également possible de transférer plusieurs images au travers d'une seule grâce aux Sprite CSS. Format d'encodageSuivant la plateforme mobile utilisée, un format d'image peut s'avérer plus performant qu'un autre[4].
Le format Bitmap (bmp) est le plus coûteux par le fait que c'est un format non compressé ; il n'a donc pas besoin d'être décodé avant d'être affiché[7]. Ce coût s'explique par l'absence de compression qui alourdit considérablement le volume des transferts de données. Le gain de ressources CPU n'est, de fait, pas suffisant pour compenser la perte de ressource radio. RedimensionnementIl existe deux stratégies concernant la gestion des images[6] :
La première solution consomme plus de ressources radio et CPU mais permet d'effectuer un zoom immédiat. La seconde solution permet d'optimiser l'utilisation des ressources, cependant le zoom ne peut plus être effectué de façon immédiate. L'utilisateur devra charger une version haute résolution de l'image avant de pouvoir effectuer un zoom. Il est donc recommandé de mélanger les deux solutions :
Sprite CSSLes Sprite CSS permettent de rassembler une multitude de petites images dans une grande image. L'ensemble des images est alors téléchargé en transférant un unique fichier, ce qui est moins couteux que de transférer plusieurs petits fichiers. Ceci permet de diminuer le RTT. La partie du Sprite CSS que l'on désire afficher est déterminée à l'aide de règles CSS. Cette technique de regroupement peut également être utilisée pour d'autres ressources telles que les fichiers JavaScript. Traitement des données audio et vidéoLorsqu'un périphérique mobile demande à accéder à un fichier audio ou vidéo, le serveur doit lui retourner un fichier adapté[8]. Pour un fichier vidéo, il sera adapté en fonction du format d'affichage du périphérique (nombre de pixels). Ceci permet de minimiser la quantité de données transférée et de diminuer l'utilisation du CPU en allégeant l'opération de décodage. Pour cela, le serveur peut :
La première solution permet de fournir un fichier parfaitement adapté au périphérique. Cependant, cela peut entrainer un usage intensif des ressources du serveur s'il reçoit de nombreuses requêtes simultanées. La seconde solution permet de fournir un fichier générique, plus ou moins adapté au périphérique. C'est cette solution qui a été adoptée par les sites de streaming tels que YouTube et DailyMotion. L'avantage est que le travail de transcodage est effectué une fois pour toutes, en contrepartie de l'espace de stockage supplémentaire est utilisé côté serveur. Le même principe est utilisé pour les fichiers audio : le serveur fournira un fichier adapté à la qualité du système audio du périphérique. Compression des entêtes IPLes entêtes des paquets IP ont une taille importante, de 40 à 60 octets selon les variantes (IPv4 ou IPv6) ; Des méthodes normalisées par l'IETF permettent de compresser fortement ces entêtes, par exemple le protocole ROHC (RFC 3095[9]) qui est adapté aux communications point-à-point via les réseaux mobiles. Ce protocole est notamment utilisé pour compresser la « voix sur IP » (VoLTE) dans les réseaux 4G. Mise en cacheLes caches permettent de conserver sur le périphérique des ressources obtenues et susceptibles d'être réutilisées. Ces ressources sont enregistrées lors de leur chargement afin d'éviter un nouveau chargement par la suite. Ce système est implémenté dans la majorité des navigateurs du marché. Les caches permettent également de diminuer les goulots d'étranglement des entrées/sorties en diminuant le RTT et en diminuant l'utilisation de bande passante. Le comportement du cache peut être contrôlé au travers de protocoles tels que le Cache-control dans HTTP. De plus, les ressources mises en cache peuvent être associées à un délai d'expiration[10]. Si le délai arrive à expiration, la ressource est supprimée du cache et chargée à nouveau lors de sa prochaine utilisation. Mise en cache prédictiveLa mise en cache prédictive consiste à mettre en cache les ressources qui seront prochainement utilisées par le client. Il existe différentes techniques de mise en cache prédictives :
Notons que les techniques de préchargement et de chargement spéculatif n'offrent aucune garantie d'optimisation ! Dans le meilleur des cas, la navigation s'effectuera de manière quasi instantanée. Dans le pire des cas, des transferts supplémentaires et inutiles auront eu lieu. Traitement distantLes calculs complexes sont très coûteux en temps CPU et entraîne donc une importante utilisation de la batterie. Il est possible de les déporter dans le Cloud suivant deux approches[13]. Web ProxyLe Web Proxy est une machine intermédiaire située entre le serveur distant et le client. Il intercepte le trafic en provenance du serveur, l'examine, le traite et le transmet au client. Les traitements appliqués peuvent être de nature diverse mais consistent généralement en l'application des autres techniques d'optimisation à la volée : compression des données, redimensionnement des images... Afin de ne pas produire l'effet inverse de celui désiré, et donc ralentir les transferts, le Web Proxy doit disposer d'une grande bande passante. Notons que le trafic crypté (SSL) ne pourra être traité. Certains navigateurs Web tels que Opera et SkyFire, intègrent nativement un Web Proxy. Serveur distantAu contraire du Web Proxy, le serveur distant n'agit pas en tant qu'intermédiaire. Le client charge l'ensemble du contenu et choisit d'envoyer au serveur distant ce qu'il veut sous-traiter. Ce modèle implique donc une forte augmentation des transferts de données. La technologie actuelle ne permet pas de compenser le surcoût, engendré par l'utilisation de la puce radio, par le gain de CPU. ProtocolesLe protocole standard pour le web est HTTP, cependant des améliorations existent pour en améliorer ses performances. SPDYSPDY est un protocole expérimental proposé par Google proposant plusieurs solutions pour accélérer le transfert via HTTP sans remplacer celui-ci. Les fonctionnalités de bases de SPDY sont les suivantes[14] :
Les fonctionnalités avancées sont :
Certaines études tendent à démontrer que SPDY n'améliore pas le protocole HTTP de manière significative[15]. HTTP Speed+MobilityHTTP Speed+Mobility (en) est un protocole proposé par Microsoft. Tout comme le SPDY, celui-ci tend à accélérer les transferts HTTP sans remplacer ce protocole. Contrairement à SPDY, HTTP Speed+Mobility tend également à améliorer les transferts vers les équipements mobiles[16]. Transferts sans réseauxDans le cas extrême où il n'est pas possible d'établir un réseau, il existe tout de même des moyens d'échanger des informations. Le Framework VisualComm[17] permet d'effectuer des transferts de données en utilisant un flux de Code QR. Les données sont transformées sous forme d'une suite de Code QR qui est ensuite numérisée par le périphérique mobile, à l'aide de la caméra, pour régénérer les données. Un mécanisme de correction d'erreur est inclus afin de compenser les pertes lors de la numérisation. Mesure de l'optimisationIl existe plusieurs techniques permettant de mesurer l'efficacité de l'optimisation[18] :
L'analyse de l'utilisation du réseau peut être élargie à une analyse des communications. Dans ce cas, on analysera non seulement les échanges effectués entre l'application et l'internet mais aussi[20] :
ConclusionSi on regarde l'évolution des périphériques mobiles, terminaux mobiles et smartphones, on constate que leur puissance de calcul, leur capacité de stockage et le volume des données échangées ont été démultipliés ces dernières années. Cependant, l'autonomie des smartphones reste un point critique, la technologie des batteries évolue lentement et l'optimisation de l'autonomie est principalement réalisée par des optimisations logicielles et matérielles (CPU/GPU à fréquence variable, écran à luminosité variable, etc). À moyen terme, l'optimisation des transferts de données et des ressources des périphériques mobiles reste donc indispensable. Références
Bibliographie
Voir aussi |