Améliorer l'internet pour les connexions lentes

Répondre
Partager Rechercher
Bonsoir
Vous arrive-t-il d'avoir des problèmes de lenteur et/ou de connexion ?
Ne pensez-vous pas qu'il y aurait des solutions qui permettraient de vous faciliter la vie ?
Le concept serait de stocker du cache en local qui permette de faciliter l'accès au contenu pour les connexions lentes/instables

Déjà, une idée évidente ce serait de garder en mémoire un template des pages. Par exemple, la page de ce forum que vous lisez en ce moment même, vous stockez en local toutes les images, toute la mise en forme, tout le texte qui ne change pas (typiquement "mon compte" "communauté" etc.., bref tout ce qui est inchangé entre deux pages.
Et fort de tout ça en local, le navigateur n'a qu'à demander le texte des posts pour les remplir. A la fin on peut imaginer une clé que le navigateur compare, au cas où le texte brut aurait changé, sauf qu'il change peu souvent donc dans la plupart des cas le temps de chargement des pages est immensément accéléré

Autre chose : garder en mémoire toutes les pages de l'historique. Juste avant de prendre l'avion, j'ouvre une page internet super avec un récit que je compte lire dans l'avion. Je verrouille mon téléphone au moment de m'asseoir, alors que la page est chargée. La page disparait. Je perds le réseau, impossible de la recharger. Absurde.

Google maps : pourquoi est-ce que cet idiot charge les bords des cartes en premier ? C'est bien le centre de la carte qui nous intéresse non ?

Pouvoir afficher ce qui est déjà chargé. Exemple typique, je vais sur une grosse page wikipédia. Ca charge, ça charge, et au bout d'une heure la page s'affiche d'un coup. Ce que je voulais moi, c'était juste l'info du cartouche (genre "jimmy hendrix est un chanteur né le 27 novembre 19..." et je veux juste l'info "42", mais je dois attendre que la page entière soit chargée avant de la voir ? Absurde

De manière générale, j'ai l'impression que tout le monde part du principe qu'en 2015 on a la fibre partout. Pourtant avec les connexions mobiles, les endroits reculés, les véhicules et les espaces confinés, nombreux sont les endroits où l'on manque de débit. Alors pourquoi est-ce que rien n'est fait en ce sens ?
Vous auriez d'autres idées à mettre en oeuvre ?
Citation :
Publié par kAzama<Off>
J'aurais tendance à dire que c'est le tracking généralisé qui te bouffe ta bande passante. Parce que JoL reste quand même un exemple de site plutot bien optimisé. T'as essayé de surfer avec des plugins type ghostery ou disconnect ?
Boarf. Jol te fait loader tout le html a chaque fois. Pour moi un site bien optimisé, une fois l'index chargé, le seul truc qu'il doit charger depuis le serveur, c'est du json. Et le layout html se genere coté client.
Citation :
Publié par Jay-BC
Il y a donc des solutions qui existent déjà implémentées quelque part ?

Il n'y a aucune solution un peu globale qui serait implémentée par un navigateur ?
Ouais : le header http expires, qui sert a dire au navigateur que ca sert a rien de refetch le content avant la date d'expiration.

par exemple, ton site affiche en homepage la derniere news postée. Pour cela, une fois que le javascript a généré le squelette du HTML, il va recuperer les infos sur https://ton-site/api/last-new

Si tu sais que tu ne postes pas plus d'une new par jour, tu mets un expire au lendemain, comme ca quand le browser ira taper sur l'API, il preferera se servir du cache.

Cote client, rien que je conaisse, mais oui, ca serait bien de pouvoir customiser la maniere dont le navigateur gere son cache. Avec un caching 'agressif' quand on a une mauvaise connexion (lente, roaming, etc.) qui oblige le navigateur a afficher la page en cache au lieu de la refetch sur le serveur.
Peut-etre via un proxy qui rajouterait le header expire, justement ? Une idée a creuser en tout cas.
Il n'y a pas d'autres idées que celles-ci encore ?
J'ai l'impression d'en trouver vachement dès que je perds une connexion stable

Mais à faire de mon côté ce serait impossible j'imagine Il va falloir attendre que les compagnies sortent de leur délire de design et autres idioties (S Health, c'est toi que je pointe)
Une solution relativement globale et implémentée dans les navigateurs est le cache HTTP. Si tu cherches "HTTP cache" sur Google, tu devrais trouver plein d'information.

Mais voilà un "petit" résumé :

Lorsque tu visites une page (et que le site est bien fait); les différentes ressources (HTML, CSS, images, ...) peuvent être mises en cache indépendamment. Le protocole HTTP donne plusieurs outils pour gérer le cache.
Le plus simple, lorsqu'une ressource est envoyée, le serveur dit au navigateur de la garder en cache pour un certain temps, durée pendant laquelle le navigateur n'ira pas retélécharger le fichier (et ne demandera même pas au serveur si une nouvelle version existe). C'est très efficace, mais a des effets de bords pas sympas : si la ressource vient à changer avant la fin de validité du cache, le navigateur utilisera toujours l'ancienne version.
Des outils plus élaborés permettent d'éviter ça, mais nécessitent un dialogue supplémentaire entre le client et le serveur. Tu mentionnes une clé de comparaison dans ton post initial. En HTTP, cela s'appelle l'ETag, et c'est exactement ce que tu suggères : lorsque le serveur envoie un fichier, il envoie avec un identifiant unique. Si tu recharges le fichier, le navigateur va faire une petite requête demandant uniquement cet ETag. Si ce nouvel ETag est identique à celui que le navigateur avait en cache de la requête précédente, alors il ne retéléchargera pas le fichier. Un des dangers des ETags est qu'ils peuvent être détournés pour tracer les utilisateurs (il "suffit" d'assigner des ETags spécifiques par utilisateur, et le serveur peut savoir exactement ce qu'ils font). Un autre problème est le calcul de ces ETags puisqu'il faut pouvoir assurer qu'une même ressource ne renverra pas deux fois le même ETag si le contenu change.
La dernière technique consiste à envoyer la date de dernière modification de la ressource en même temps que le fichier. Lorsque le navigateur demande la ressource, il envoie la date à laquelle il a mis l'image en cache au serveur, et si elle est plus récente que la dernière date de modification de la ressource, le serveur répond qu'il n'y a pas eu de modification et ne renvoie pas le fichier.
Ces deux dernières techniques sont plus difficiles à mettre en oeuvre que la première car le serveur doit être en mesure de calculer l'ETag ou la date de dernière modification, de façon à la fois fiable et rapide (si le calcul prend plus de temps que la génération et l'envoi de la ressource, il n'y a plus d'intérêt).

Une autre optimisation proposée par HTTP est de permettre l'envoi de ressources compressées (généralement en gzip) si le navigateur le supporte.

Je n'ai parlé là que du cache côté navigateur, mais il est bien entendu possible de partager ce cache entre plusieurs ordinateurs, mais il faut alors utiliser une application tierce appelée caching proxy, qui, comme son nom l'indique, vient se mettre entre les serveurs et les navigateurs et va se charger (entre autres choses) de la mise en cache des ressources pour tous les navigateurs utilisant ce proxy. En fait, la plupart des gros sites Web en utilisent de manière transparente pour l'utilisateur, mais il est également possible d'en installer sur son réseau local ou même directement sur son ordinateur pour rapprocher ce serveur de soi (et donc d'être moins affecté par les limites de bande-passante). Deux bien connus : Varnish (plutôt à réserver pour les fournisseurs de contenu) et Squid, un peu plus adapté pour un usage "client final", ainsi que Polipo, peut-être un peu moins connu mais semble-t-il plus léger et facile à configurer (je ne l'ai pas testé moi-même).

Le cache HTTP a quand même un gros problème, inhérent aux origines du Web : les pages Web sont très majoritairement générées et envoyées d'un bloc côté serveur. Par exemple sur JoL, tout le contenu textuel d'une page est généré et envoyé en une fois au client. Donc même si seulement une partie de la page change, elle est entièrement recalculée et envoyée au client. Une bonne solution évidente est de découper une page en blocs (bannière, contenu, menu, pied de page, ...), certains de ces blocs pouvant être réutilisés entre plusieurs pages. Cela peut se faire aussi bien côté serveur pour limiter la lourdeur des calculs (en utilisant par exemple la technologie Edge Side Includes, ESI), ou clients, pour en plus limiter la quantité de données échangées (en utilisant du Javascript qui va pouvoir dynamiquement remplacer des bouts de page : le navigateur ne demande que le strict minimum au serveur et se charge lui-même de mettre en forme au bon endroit les informations reçues). Les techniques utilisant du Javascript se répandent de plus en plus mais requièrent un remaniement lourd côté serveur, donc assez complexe à mettre en place sur de vieux sites. Elles nécessitent également (forcément) la présence de Javascript dans le navigateur, ce qui de nos jours n'est plus trop un problème, mais l'était beaucoup plus il n'y a pas si longtemps que ça.
Ce qui est beau (enfin, faut être un poil geek pour trouver ça beau ), c'est que ces techniques de découpage de page se marient parfaitement avec la mise en cache HTTP.

Si tu veux voir en live la mise en cache de ton navigateur, il te suffit d'ouvrir la console développeur (Ctrl+Shift+i dans firefox) puis d'aller dans son onglet "Réseau" et de charger une page. Tu verras la liste des ressources demandées, leurs délais d'envoi, ainsi que les informations de cache (code HTTP 304 signifie que le serveur n'a pas renvoyé la ressource car le navigateur a déjà une version à jour en cache). En cliquent sur une ressource dans la console, tu peux même voir les en-têtes concernant les ETags, dates de modification, durée de validité, ... envoyés par le client et le serveur.

Dernière modification par Ze Reaper ; 03/03/2015 à 01h25.
Aucune idée, j'ai naïvement tendance à penser que les navigateurs Android sont déjà bien optimisés niveau gestion et taille du cache, mais tu peux peut-être tester https://play.google.com/store/apps/d...xyserver&hl=fr ou http://www.androidpit.fr/application...bai.cacheproxy, voire même https://github.com/niutech/polipoid si tu te sens d'humeur guerrière (il faut compiler le truc soi-même )
Tu peux essayer de faire une copie d'internet sur clef USB.

Sinon malheureusement étant donné que la bande passante n'est généralement plus un soucis autant côté client que côté serveur, l'optimisation ne fait plus vraiment parti des priorités pour les sites internets sauf certaines applications critiques ou pour des sociétés dont c'est leur image de marque (comme google pour ne citer que lui).
Côté navigateur tu pourras pas vraiment mieux agir que ce qui est déjà fait actuellement en matière de cache. Tu peux pas tout mettre en cache, le navigateur se fie aux indications transmises par le serveur pour certains types de contenu car s'il ne le fait pas tu pourrais te retrouver avec du contenu dynamique en cache et ça serait problématique pour l'expérience utilisateur.

Autrement côté norme avec la finalisation des specs pour HTTP/2.0 on pourra peut-être voir du mieux d'ici 1-2ans même si j'y crois pas trop.
Avec entre autres la gestion des priorités pour le chargement des éléments de la page et le fait que les requêtes sont désormais multiplexées dans une connexion au lieu d'être envoyées de manière séquentielles.
Citation :
Publié par Lael
Tu peux essayer de faire une copie d'internet sur clef USB.

Sinon malheureusement étant donné que la bande passante n'est généralement plus un soucis autant côté client que côté serveur, l'optimisation ne fait plus vraiment parti des priorités pour les sites internets sauf certaines applications critiques ou pour des sociétés dont c'est leur image de marque (comme google pour ne citer que lui).
Côté navigateur tu pourras pas vraiment mieux agir que ce qui est déjà fait actuellement en matière de cache. Tu peux pas tout mettre en cache, le navigateur se fie aux indications transmises par le serveur pour certains types de contenu car s'il ne le fait pas tu pourrais te retrouver avec du contenu dynamique en cache et ça serait problématique pour l'expérience utilisateur.

Autrement côté norme avec la finalisation des specs pour HTTP/2.0 on pourra peut-être voir du mieux d'ici 1-2ans même si j'y crois pas trop.
Avec entre autres la gestion des priorités pour le chargement des éléments de la page et le fait que les requêtes sont désormais multiplexées dans une connexion au lieu d'être envoyées de manière séquentielles.
Faux
Une page internet ça pèse quoi ? 500 ko, 1 mo à tout péter?
Quand je télécharge ma page internet avec du texte (un e book gratuit sur un blog en gros) et qu'elle disparait même pas une minute plus tard tu vas pas me dire que c'était impossible de la sauvegarder quelque part

Je veux allouer 10 go de cache, je suis tout de même plus enclin à regarder les pages que j'ai déjà regardées plutôt que les pages du dark web.. Avec 10go de cache je n'aurais aucun problème de bande passante lente. Je ne m'ennuierais jamais dans mon avion sans réseau, il me suffirait de ressortir des pages de texte non lues dans mon historique.


Truc classique : je suis sur une page, je fais précédent par erreur (ou clic sur un lien par erreur) et la page précédente ou le lien ne charge pas. Je reviens en avant ou en arrière suivant le cas pour rester sur la page voulue. La page voulue tente de se recharger ! Inutilement !


Tous les forums divers à un instant t ça pèserait combien ?
Je sais pas. Mais je peux vous dire que le contenu nouveau par jour par rapport au contenu déjà existant c'est.. rien du tout en comparaison ! Donc copier sur une clé ça a bien du sens. Windgulu l'immortel a corrigé trois fautes d'orthographe depuis que j'ai téléchargé son post il y a deux semaines ? Rien à faire.
Un plan routier de Paris, il va changer énormément entre deux week ends ? Aucun souci !

Finalement, rien que l'exemple des cartes qui se chargent par le bord prouve bien que rien n'est fait pour prendre en compte ceux qui ne sont pas les plus chanceux de l'internet
Autre souci, sur mon PC cette fois.
Oui, ça existe une connexion fixe à problèmes en 2015

Quand je perds le wifi (résidence avec wifi ), les pages internet ne s'affichent plus, ça tourne ça tourne, ça ne marche pas, puis j'ai un dinosaure. Normal.
Par contre, ce qui est moins normal ,c'est que Chrome se met à planter quand il perd l'accès à l'internet !
C'est absurde non ?
Ca le fait chez vous aussi ?
Répondre

Connectés sur ce fil

 
1 connecté (0 membre et 1 invité) Afficher la liste détaillée des connectés