barbogogo / leedReader

LeedReader est un lecteur de flux RSS/ATOM pour Android et adapté à l'agrégateur de flux leed.
http://www.barbogogo.fr/projets/applications-leed/leedreader/
Other
17 stars 6 forks source link

[optimisation] Ne récupérer que les flux avec des items non lus #63

Closed kvnco closed 11 years ago

kvnco commented 11 years ago

Bonjour,

Une optimisation intéressante de la consommation du réseau serait, lorsque l'option correspondante est cochée : ne demander au serveur que les dossiers qui comportent au moins un item non lu. Cela peut alléger les appels, et à mon avis de façon assez impressionnante lors d'un téléchargement pour consultation hors ligne.

barbogogo commented 11 years ago

Bonjour, Je ne vois pas trop l'optimisation.

Aujourd'hui, lors du démarrage de l'application, trois requêtes sont réalisées :

Ensuite, lors de la navigation dans les répertoires, les 20 premiers articles non lus d'un flux sont récupérés lors de la sélection de ce flux (les articles des autres flux ne sont pas récupérés).

Du coup, que les dossiers aient ou non des articles non lus, la requête n'est faite que si le flux est sélectionné.

L'option "Masquer les répertoires vides" permet d'éviter la sélection et donc la requête pour un dossier sans messages non lus.

kvnco commented 11 years ago

Re bonjour,

Mon premier message a été écrit rapidement, je parlais de flux et non des dossiers (qui sont tout deux récupérés par getFolders). (j'ai corrigé le titre en ce sens)

L'intérêt n'est peut-être pas évident pour tous les usages, mais l'optimisation me paraît simple à faire (ajout d'un flag lors de l'appel à getFolders) et intéressante dans un cas comme le mien.

Je suis "abonné" à pas loin de 500 flux. Sur ceux-ci j'en ai généralement 1/3 qui comporte des items non lus (estimation à la louche, pour l'ordre de grandeur). L'appel à getFolders retourne dans mon cas une réponse de 65 Ko qui pourrait ainsi être réduite de manière importante par ce moyen. En outre, lors de la synchronisation pour le mode hors ligne, un appel est fait pour chacun de ces 500 flux, même si ceux-ci sont vide. Même avec une connexion wifi, celà prend plusieurs minutes. À cette étape, il est intéressant de pouvoir réduire le nombre d'appels d'autant.

Une autre solution à ce dernier point, si l'on ne souhaite pas modifier le getFolders est de ne faire l'appel que pour les flux non vides.

barbogogo commented 11 years ago

Re,

Ok, la modification ne concerne que la récupération des flux lorsque l'on passe en mode off line. Il est vrai qu'un temps important peut être gagné dans cette phase :smile:

Merci pour cette excellente idée !

barbogogo commented 11 years ago

Un message informant l'utilisateur que le flux n'a pas été téléchargé est à prévoir. Juste pour montrer que si il a été shunté c'est pour une bonne raison.

kvnco commented 11 years ago

Ce n'est pas une mauvaise idée, même si au final cette optimisation est transparente pour l'utilisateur donc il n'y aura pas plus besoin d'un message qu'il n'en faudrait un aujourd'hui. :)

barbogogo commented 11 years ago

ok, mais il faut tout de même affiché le flux à l'écran.

kvnco commented 11 years ago

OK je n'avais pas compris que l'on parlait d'afficher un message lors de la synchronisation pour le mode hors ligne. Dans ce cas, oui, un petit message d'information serait pas mal…

barbogogo commented 11 years ago

Hello, Je ne vois pas d'autres cas d'utilisation de cette fonctionnalité... ou je n'ai pas bien compris (?)

kvnco commented 11 years ago

Justement, je ne voyais pas trop où et comment afficher ce message… Nous sommes donc synchro. :)

J'ai fait un pull request sur Leed-API apportant les modifs serveurs nécessaires à ce développement.

barbogogo commented 11 years ago

Bonjour @kvnco,

Merci pour ta contribution, j'ai fait le pull :smile: J'ai également modifié le code pour ne récupérer que les flux dans lequel il y a au moins un article non lu (si l'option "Masquer un répertoire vide" est choisie dans les préférences).