Contribue à
https://github.com/marienfressinaud/FreshRSS/issues/351#issuecomment-31755012
Pour les flux qui ne supportent pas les requêtes conditionnelles.
Filtre les tags et commentaires gênants avant la signature (style
<lastBuildDate> qui change tout le temps sans que le contenu change,
<slash:comments>, ainsi que les commentaires XML qui détruisent le cache
comme <!-- généré en X secondes -->)
Il reste quelques flux à débogger dont le cache n'est pas encore
optimal. C'est pour cela qu'il reste quelques syslog(LOG_DEBUG, ...).
Au passage, évite que SimplePie fasse une double requête pour vérifier
le cache si le serveur est un peu lent.
Un jour, il faudra nettoyer les changements faits à SimplePie et leur
remonter les patchs les plus intéressants.
Modification du raccourci pour naviguer au premier article (Home au lieu de Shift+j)
Modification du raccourci pour naviguer au dernier article (End au lieu de Shift+k)
Ajout de modificateurs pour utiliser les touches de navigation dans d'autres contextes (Shift pour les flux, Ctrl pour les catégories)
Voir issue#256
Le nom de poche a été changé en wallabag suite à "l'affaire Pocket".
Le changement a été impacté partout même au niveau du fichier de conf. À
priori ce n'est pas très impactant puisque poche n'est introduit que
dans cette version et qu'il ne devrait pas y avoir "trop" de testeurs.
Au pire si l'adresse poche/wallabag disparaît lors d'une migration, il
suffit de la ressaisir, ce n'est pas critique :)
Voir #397
Ajout de la liste des 10 plus gros contributeurs
Ajout de règles CSS pour les thèmes Flat et Dark
Modification de l'affichage des camemberts (tri par nombre qui remplace le tri alphabétique)
Corrige https://github.com/marienfressinaud/FreshRSS/issues/365
Ajoute le nettoyage correct du HTML par SimplePie, ainsi que le décodage
des caractères HTML dans l'URL, et enfin un message dans le syslog pour
chaque article téléchargé
Testé vite fait avec MySQL 5.5 sous Windows, et les chaînes vides ''
utilisées jusqu'à présent dans le cas de booléens faux causaient une
erreur.
Vérifier s'il n'y a pas d'autres exemples ailleurs dans le code
* Affichage logo FreshRSS pendant la demande de nom d'utilisateur HTTP
* Meilleure page d'erreur si utilisateur HTTP non-configuré dans
FreshRSS + log
Je recommande donc de placer le .htaccess pour le contrôle d'accès dans
./FreshRSS/p/i/.htaccess et pas plus haut pour une meilleure mise en
cache et messages de connexion.
Minz ne prenait pas en charge OPcache (cache PHP) http://php.net/opcache
activé par défaut depuis PHP5.5.
Ce fut un peu dur d'isoler ce bug :-/
Il faut penser à appeler opcache_invalidate avant de ré-utiliser un
fichier par include().
Aussi, le mécanisme de lock() n'est plus approprié ni nécessaire.
Pour FreshRSS, évite l'utilisation de ModelArray car il ne restait que
quelques lignes d'utiles, et évite un héritage + appel de classe, ce qui
est toujours ça de gagné.
Implémente https://github.com/marienfressinaud/FreshRSS/issues/260
(évite les comparaisons de chaînes au profit des vrais booléens et
entiers)
Grosse simplification et réduction du code relatif à la configuration.
Supprime ConfigurationDAO.
Permet de simplifier considérablement configureController.
Évite de multiples copies des mêmes données en mémoire.
Évite de garder plusieurs versions de la configuration en mémoire
(auparavant : dans un tableau au niveau de ModelArray + au niveau de
FreshRSS_Configuration + en Session + des copies temporaires comme
ConfigurationDAO).
Ne stocke plus 'conf' en Session (n'était presque pas utilisé).
Évite de recharger plusieurs fois Translate inutilement.
Contribue à https://github.com/marienfressinaud/FreshRSS/issues/303
Utilisation de fonctions natives de PHP comme file_put_contents et
var_export
Évite de garder un descripteur de fichier ouvert tout le temps
Et ModelTxt n'est plus utilisé
Attention, si on supprime des articles qui sont encore dans les flux
RSS, ils risquent de réapparaitre en cas de date manquante ou erronée,
ou si l'utilisateur augmente la date d'expiration.
Ce bouton est plus strict que la purge automatique qui conserve toujours
au moins le même nombre d'articles que dans le flux RSS en cours + 10.
Permet de chercher en utilisant intitle: ou inurl: ou author: comme dans
certains moteurs de recherche. Pour l'instant, un seul de ces mots clefs
à la fois peut être spécifié en tout début de chaîne de recherche et
sera appliqué à l'ensemble du reste de la recherche.
NB: À ajouter à la documentation, wiki
Traite mieux les caractères spéciaux.
Permet par exemple une recherche sur des mots contenant des apostrophes,
ou le signe pourcentage, etc.
Il faudra toujours essayer d'améliorer la recherche en particulier
lorsque plusieurs mots sont fournis
Oups, mon précédent changement SQL avait cassé la recherche.
Patch rapide en attendant une ré-optimisation en particulier pour le cas
de recherche sur plusieurs mots
Tentative de reformulation de la requête principale pour améliorer les
performances.
Utilisation d'une sous-jointure qui retourne uniquement e.id.
Sur mon serveur avec 13000 articles, la requête de la page d'accueil
sans article non lu mettait 1.38s avant le patch, contre 0.08s après (en
désactivant bien sûr le cache SQL).
Il faudra re-tester et tenter d'autres optimisations (notamment sur les
index) avec un nombre d'articles plus important.
Avant :
SELECT SQL_NO_CACHE e.id, e.guid, e.title, e.author,
UNCOMPRESS(e.content_bin) AS content, e.link, e.date, e.is_read,
e.is_favorite, e.id_feed, e.tags FROM `freshrss_alex_entry` e INNER JOIN
`freshrss_alex_feed` f ON e.id_feed = f.id WHERE f.priority > 0 AND
(e.id >= 1371597014000000 OR e.is_favorite = 1 OR f.keep_history = 1)
ORDER BY e.id DESC LIMIT 33;
Après :
SELECT SQL_NO_CACHE e.id, e.guid, e.title, e.author,
UNCOMPRESS(e.content_bin) AS content, e.link, e.date, e.is_read,
e.is_favorite, e.id_feed, e.tags FROM `freshrss_alex_entry` e INNER JOIN
(SELECT e1.id FROM `freshrss_alex_entry` e1 INNER JOIN
`freshrss_alex_feed` f ON e1.id_feed = f.id WHERE f.priority > 0 AND
(e1.id >= 1371597014000000 OR e1.is_favorite = 1 OR f.keep_history = 1)
ORDER BY e1.id DESC LIMIT 33) e2 ON e2.id = e.id ORDER BY e.id DESC;