Rebonjour tout le monde...
J'ai attendu quelques moments, et j'ai fait quelques tests avec les versions
1.7.2prX, aucune d'entre elles ne solutionnent le problème de page blanche au
rechargement de la page.
Ce thread prouve que je ne suis pas encore bon pour porter une chemise blanche
avec des manches cousues... http://www.spip.net/threadspip2015-5854.html
Même la 1.7.2pr4 ne solutionne pas le problème.
Après avoir fouillé longuement dans le code de SPIP, je propose une solution.
Cette solution tient compte que si 10% des gens (j'exagère peut-être , mais
je sais que je ne suis pas le seul à avoir ce problème, plusieurs posts dans
les forums le montrent) ont des pages blanches à répétition, ils ne seront
pas tentés d'utiliser SPIP, ou en tout cas de laisser mozilla et consort.
Cette solution tient aussi compte du fait que les serveurs web sont
spécialisés pour tenir compte des requêtes HTTP et de déterminer eux mêmes le
type de réponse à déterminer à un si bas niveau , soit le 200 OK ou le 304
Not Modified.
Le problème provient vraiment des headers qui sont envoyés à Mozilla (le
problème se produit aussi avec FireFox, avec IE sous mac, etc) et d'une
combinaison avec apache (on dirait). Puisque le serveur web s'occupe déjà de
ne pas envoyer de données au client si ses données sont déjà dans le cache du
navigateur, pourquoi SPIP devrait-il s'en préoccuper ? (ça n'accélère pas,
puisque le serveur sait déjà que la page sera un 304).
C'est un problème difficilement acceptable pour une branche en production. Et
je vous rappelle que le bogue existe depuis le début de la 1.7
La solution (testée et fonctionnelle, n'allonge pas le temps de chargement,
génère un code 304, fait tout ce que c'est supposé faire) est de
désactiver/commenter/retirer les lignes 187 et 188 du fichier
inc-public-global.php3 (lignes en référence avec la version 1.97 du fichier
sur le CVS), soit ces lignes:
if ($lastmodified)
$headers_only |= http_last_modified($lastmodified, $lastmodified + $delais);
Je veux bien tester d'autres suggestions, sauf que je dispose de peu de temps
pour coder autre chose. En confiant la tâche au serveur de s'occuper du
http_last_modified, on ne fait faire à SPIP que son travail (en plus que SPIP
a déjà un excellent système de CACHE). Si ces lignes sont retirées de la
dernière 1.7.x , au moins on sera certain que le problème ne traînera pas
jusqu'à la prochaine version et qu'on pourra régler définitivement la
situation si vous décidez de continuer à gérer quand même les last_modified.
Merci