Commit Graph

434 Commits

Author SHA1 Message Date
Alexandre Alapetite
fdb2b7588e Actualize : évite d'ajouter les articles déjà connus
Dans la plupart des cas, évite d'ajouter les articles déjà présents dans
la base de données, en faisant une pré-requête (une par flux, pas une
par article).
Par exemple, si un flux RSS fournit 20 articles, alors la pré-requête
charge une liste d'exclusion de 20+2 identifiants d'articles.
Ce patch réduit considérablement le nombre de requêtes et la charge de
la base de données durant les mises à jour, et en particulier le trafic
réseau entre PHP et la base de données.
Les mises à jour sont du coup aussi plus rapides.
2013-11-05 18:37:41 +01:00
Alexandre Alapetite
fb0c0868a4 Orthographe "Il n’y a pas plus d’articles"
Par ailleurs, je trouve que l'expression n'est pas terrible avec le "pas
plus", mais je n'ai pas mieux pour l'instant
2013-11-04 23:49:19 +01:00
Alexandre Alapetite
a88963b827 Ajouts à Apache .htaccess
Ajout en particulier du support des .map (jQuery Source Map)
2013-11-04 23:34:38 +01:00
Alexandre Alapetite
a58e4203f6 Variable full_lazyload
Pour savoir s'il faut attendre le chargement async de
jquery.lazyload.min.js ou pas
2013-11-04 23:34:22 +01:00
Alexandre Alapetite
5e11093120 Détails : blancs
Suppression des blancs en fin de ligne
2013-11-04 23:34:07 +01:00
Alexandre Alapetite
4a999fb628 Améliorations chargement JS async
En particulier pour global_view.js.
Suppression d'une requête avortée dans Chrome.
2013-11-04 23:33:52 +01:00
Alexandre Alapetite
6fbb62a2fc Chargement asynchrone plus robuste
Fonctionne aussi si DOMContentLoaded est déjà consommé avant le
chargement de main.js, et permet d'attendre les autres scripts tels
jQuery si ceux-ci ne sont pas encore chargés.
2013-11-04 23:33:35 +01:00
Alexandre Alapetite
792f78e3d5 Faute de frappe dans le calcul de la date de dernière modification 2013-11-04 23:33:20 +01:00
Alexandre Alapetite
665d22be76 Mise à jour de la librairie http-conditional
Ajout d'un entête Expires qui ne devrait pas être nécessaire d'après la
spécification mais qui semble aider certains navigateurs
2013-11-04 23:33:04 +01:00
Alexandre Alapetite
123f8dd164 Encore du nettoyage CSS
Suppression des sélecteurs inutiles pour de meilleures performances
2013-11-04 23:32:47 +01:00
Alexandre Alapetite
adc9a958af Préchargement et requêtes conditionnelles HTTP/1.1
Grosse amélioration des performances en utilisant le cache HTTP :
- Implémentation de HTTP/1.1, c.a.d. If-Modified-Since, If-None-Match,
If-Unmodified-Since, If-Match... avec la librairie
http://alexandre.alapetite.fr/doc-alex/php-http-304/
- Support de HEAD (HTTP /1.0).
- Préchargement de la page suivante (avec link next prefetch) dans le
cas de pagination.
- Et nouvelle possibilité de navigation pour les navigateurs qui
supportent "next".
- La date de dernier changement est pour l'instant primitive et
correspond au dernier changement de la session PHP ou
Configuration.array.php ou application.log ou touch.txt.
- touch.txt est modifié a chaque requête UPDATE ou INSERT ou DELETE.
2013-11-04 23:32:22 +01:00
Alexandre Alapetite
231516f523 Grosse optimisation JavaScript
* Fusion de endless_mode.js dans main.js car endless_mode.js est
toujours chargé et assez petit.
* Suppression des changements de style en JavaScript lors du chargement
(genre boucle de .hide(), ou d'ajout de classe ".stick") et
implémentation en PHP + CSS à la place.
* Chargement JavaScript asynchrone (defer + async) pour de meilleurs
performances.
* Utilisation préférable des événements globaux plutôt que des
événements pour chaque élément avec jQuery.on(events, selector) pour un
chargement plus rapide et moins de mémoire utilisée.
* Optimisation manuelle du JavaScript (sélecteurs CSS plus performants,
méthodes jQuery plus appropriées, etc.).
* Désactivation de init_img() qui était coûteux, lancé à un moment où
les images ne sont de toute manière pas encore chargées, et qui
n'apporte rien car il y a déjà un img {max-width:100%} en CSS.
* JavaScript en mode strict.
* Enfin, passage du code JavaScript dans JSLint et du coup nombreuses
corrections (syntaxe, variables, méthodes dépréciées...).
* Devrait permettre de fermer
https://github.com/marienfressinaud/FreshRSS/issues/121
* Au passage, quelques simplifications CSS pour de meilleures
performances.
2013-11-04 23:31:36 +01:00
Alexandre Alapetite
b23d66ec36 Merge pull request #231 from Alkarex/patch-5
Filtrage des événements JavaScript
2013-11-04 14:17:56 -08:00
Alexandre Alapetite
6f26057095 Merge pull request #227 from Alkarex/patch-4
Hack temporaire en attendant la recherche côté base-de-données
2013-11-04 14:17:36 -08:00
Alexandre Alapetite
8852134d0a Merge pull request #226 from Alkarex/MenuForFeeds
Ajout liens vers Gestion des flux RSS
2013-11-04 14:17:23 -08:00
Alexandre Alapetite
fb07117b78 Merge pull request #224 from Alkarex/manualLazyload
LazyLoad manuel pour les articles repliés
2013-11-04 14:17:11 -08:00
Alexandre Alapetite
a4881b2a93 Merge pull request #218 from Alkarex/patch-2
Page Speed : Taille du logo
2013-11-04 14:17:00 -08:00
Alexandre Alapetite
f2c7b98cb5 Merge pull request #217 from Alkarex/patch-1
Page Speed : Compression explicite
2013-11-04 14:16:42 -08:00
Alexandre Alapetite
41aab4dac4 Merge pull request #216 from Alkarex/fixRelative
URL absolue pour token
2013-11-04 14:16:33 -08:00
Alexandre Alapetite
7cf5e8ef33 Merge pull request #215 from Alkarex/notificationsMain
Fusionne notification.js dans main.js
2013-11-04 14:16:14 -08:00
Alexandre Alapetite
aff58561e9 Merge pull request #214 from Alkarex/updateUnreads
Mise à jour automatique des nombres d'articles non lus et favoris
2013-11-04 14:15:59 -08:00
Alexandre Alapetite
cabacaff97 Merge pull request #220 from Alkarex/customItems
Options pour personnaliser les icônes de lecture
2013-11-04 14:10:14 -08:00
Marien Fressinaud
be659762cf Merge pull request #225 from Alkarex/jQuery2
jQuery 2.x
2013-11-04 14:03:28 -08:00
Alexandre Alapetite
8f7d9e12a0 Filtrage des événements JavaScript
Corrige https://github.com/marienfressinaud/FreshRSS/issues/230
2013-11-03 11:40:17 +01:00
Alexandre Alapetite
2906d8dd2e Hack temporaire en attendant la recherche côté base-de-données
Limite la recherche aux 20000 plus récents articles, en attendant https://github.com/marienfressinaud/FreshRSS/issues/204
2013-10-30 21:23:45 +01:00
Alexandre Alapetite
f2c83cbfc2 Ajout liens vers Gestion des flux RSS
Ajout de liens directs vers la Gestion des flux RSS.
Compense aussi la perte de liens non-JavaScript due à
https://github.com/marienfressinaud/FreshRSS/pull/179
2013-10-30 20:58:22 +01:00
Alexandre Alapetite
1a209f1e9b Ajoute le cas de la vue lecture 2013-10-30 11:06:38 +01:00
Alexandre Alapetite
ed50db463d jQuery 2.x
Il semble qu'il y aurait pas mal de changements à faire pour supporter
IE8 (qui ne supporte pas les sélecteurs CSS3 par exemple).
Vue l'audience probable de FreshRSS, il me semble raisonnable de
commencer à IE9, et dans ce cas jQuery 2.x est mieux (entre autres plus
léger) que la branche 1.x qui supporte IE6+
http://jquery.com/browser-support/
2013-10-29 22:32:06 +01:00
Alexandre Alapetite
84c03dda5f LazyLoad manuel pour les articles repliés
LazyLoad.js utilise énormément de CPU et ralentit considérablement le
défilement de page, en particulier lorsque le nombre d'articles
augmente.
Dans le cas des articles repliés, il n'y a en fait pas besoin du
mécanisme complexe de LazyLoad.js basé sur les événements scroll, car il
suffit de charger les images lors du dépliage es articles, et cela
allège énormément l'expérience.
2013-10-29 21:53:02 +01:00
Alexandre Alapetite
a689037825 Options pour personnaliser les icônes de lecture
Nouvelles options pour choisir d'afficher ou pas les icônes pour marquer
comme lu/non-lu, favoris, lien vers l'article, ainsi que les champs
partage, tags...
Légères simplifications CSS et PHP au passage.

(Note pour plus tard : Il serait peut-être souhaitable de simplifier le
mécanisme des options en PHP, par exemple en utilisant un tableau de
propriétés. Actuellement, il y a un attribut par option accompagné d'un
accesseur privé, un accesseur public, et idem dans le système de
chargement/écriture du fichier de configuration, ce qui fait beaucoup de
code PHP par option)
2013-10-27 22:13:58 +01:00
Alexandre Alapetite
1489a18a98 Page Speed : Taille du logo
Permet de fermer https://github.com/marienfressinaud/FreshRSS/issues/168
Alternativement (et peut-être mieux), mettre la référence au logo "icon-32.png" en CSS ainsi que ses dimensions.
2013-10-26 22:17:13 +02:00
Alexandre Alapetite
6135ec515f Page Speed : Compression explicite
Liste plus explicite des types à compresser (en particulier image/svg+xml qui n'est pas souvent dans les configurations de base)
2013-10-26 21:19:59 +02:00
Alexandre Alapetite
8bb25589ff URL absolue pour token
Corrige https://github.com/marienfressinaud/FreshRSS/issues/213
Abandonne le protocole relatif "//" et repasse à des "http://" ou
"https://" explicites
2013-10-26 20:49:23 +02:00
Alexandre Alapetite
5c68233985 Fusionne notification.js dans main.js
notification.js était tout petit et occasionnait une requête
supplémentaire et un événement JavaScript en plus.
Proposition de fusion dans le nouveau main.js statique.
2013-10-26 17:29:53 +02:00
Alexandre Alapetite
e7dd482979 Mise à jour automatique des nombres d'articles non lus et favoris
En JavaScript, sans requête au serveur, décrémente ou incrémente le
nombre d'articles non lus ou en favoris suite à une action de
l'utilisateur.
Utilise un nouvel attribut data-unread pour stocker le nombre d'articles
non-lus et du pur CSS pour afficher cette valeur.
Nouvel attribut data-priority (pour savoir s'il faut inclure le flux ou
pas dans les nombres d'articles non lus).
Légère simplification CSS au passage (d'autres optimisations des
performances CSS seraient souhaitables en évitant les règles contenant
trop de sélecteurs universels imbriqués genre ".categories .favorites
.btn" et en évitant les changements de style en JavaScript lors du
chargement - j'essayerai de faire une proposition dans un patch séparé).
Bug connu : une catégorie finissant par une espace suivi d'un nombre
entre parenthèses comme "Exemple (2)" cause actuellement un léger bug
d'affichage dans le <title> s'il y a 0 article non lu et que
l'utilisateur en marque un comme "non lu". Il faudra une modification
pour utiliser data-unread aussi pour le <title>
2013-10-26 17:21:11 +02:00
Marien Fressinaud
dd5273871a Merge branch 'AvoidNonCacheableJavaScript' of https://github.com/Alkarex/FreshRSS into Alkarex-AvoidNonCacheableJavaScript
Conflicts:
	app/views/javascript/main.phtml
2013-10-26 16:49:44 +02:00
Marien Fressinaud
298b5ecf20 Merge branch 'use_template' of https://github.com/Alkarex/FreshRSS into Alkarex-use_template 2013-10-26 16:45:14 +02:00
Marien Fressinaud
ce1101bf45 Merge branch 'patch-2' of https://github.com/Alkarex/FreshRSS into Alkarex-patch-2 2013-10-26 16:42:55 +02:00
Marien Fressinaud
cd46bd33e7 Merge branch 'htaccess' of https://github.com/Alkarex/FreshRSS into Alkarex-htaccess 2013-10-26 16:40:25 +02:00
Marien Fressinaud
94a887f321 Merge branch 'sqlOptimisation' of https://github.com/Alkarex/FreshRSS into Alkarex-sqlOptimisation 2013-10-26 16:37:02 +02:00
Marien Fressinaud
3ac2495f49 Merge branch 'dev' of github.com:marienfressinaud/FreshRSS into dev 2013-10-26 16:35:46 +02:00
Marien Fressinaud
8deb306610 Merge branch 'patch-1' of https://github.com/Alkarex/FreshRSS into Alkarex-patch-1 2013-10-26 16:28:19 +02:00
Marien Fressinaud
64b1bb37c2 Merge pull request #211 from Alkarex/patch-3
htmlspecialchars pour les logs
2013-10-24 02:43:34 -07:00
Alexandre Alapetite
d93642d0d2 htmlspecialchars pour les logs 2013-10-24 11:15:57 +02:00
Marien Fressinaud
d5f714146f Merge pull request #209 from Alkarex/patch-3
Ajoute URL dans message FeedException
2013-10-24 01:28:26 -07:00
Alexandre Alapetite
e6a28cdee2 Ajoute URL dans message FeedException
Ajoute l'adresse du flux dans la description de l'erreur lorsqu'une exception est générée.
2013-10-22 22:23:29 +02:00
Alexandre Alapetite
051666d59b Correction erreur variable existante 2013-10-20 11:37:19 +02:00
Alexandre Alapetite
1b83f93670 Ajoute au contenu les images déclarées en tant que 'enclosure'
Corrige https://github.com/marienfressinaud/FreshRSS/issues/205.
Uniquement pour les images.

Pourrait par exemple faire des miniatures pour les vidéos 
http://simplepie.org/wiki/tutorial/how_do_i_get_a_thumbnail_from_a_youtube_feed
2013-10-19 21:22:04 +02:00
Marien Fressinaud
d94d948706 Fix issue #189: Disparition de la dernière catégorie
La dernière catégorie n'était pas générée correctement si elle ne possédait
qu'un seul flux. Le bug venait de HelperCategorie::daoToCategoryPrepopulated
Je l'ai réécrite pour qu'elle soit un peu plus claire
2013-10-16 11:49:57 +02:00
Marien Fressinaud
46d9e0417a Fix issue #198: case sauter au voisin non lu marche plus
Le fait de décocher la case de l'option "sauter au prochain voisin non lu"
ne fonctionnait plus.
2013-10-16 10:51:09 +02:00