J'ai vu un bug sur l'ajax hier ... enfin un bug c'est beaucoup dire,
je ne sais pas si c'est un bug réel car cela peut être évité quand
même
Sur un serveur Debian de base le patch suhosin est installé et limite
la valeur de chaque paramètre d'URL GET à 512 caractères apparemment :
"suhosin.get.max_value_length = 512"
Or si on est dans des inclusions avec pas mal de choses dans
l'environnement, on met une classe sur le bloc ajax serialisant +
base64 + pleins de trucs sur l'ensemble de l'environnement. C'est la
class de ce bloc qui est passé en url lors des liens ajax en
"var_ajax_env" et il se trouve que cela peut dépasser assez facilement
les 512 caractères...
Y'a t il une solution pour cela?
Il y a une solution pour les dévs qui est d'éviter de passer
l'ensemble du env à chaque fois aux inclusions ajax mais juste ce qui
est nécessaire... mais bon...
effectivement, la limitation des url GET avec Suhosin est un problème pour les urls AJAX.
Il y a un palliatif expérimental qui est le cache côté serveur des contextes ajax, et le remplacement par un md5 dans les urls.
La fonction s'active par
define('_CACHE_CONTEXTES_AJAX',true);
L'aspect experimental de cette feature tiens au fait qu'il n'y a pas de mécanisme de purge des contextes ajax cachés sur le disque,
ce qui peut poser un problème potentiel (mais théorique) de débordement de cache si jamais tes squelettes produisent une infinité de contextes ajax
(aidés par un bot qui les parcours tous).
La difficulté théorique qu'il faut gérer la synchro cache squelette/cache ajax : si on génère les cache ajax au calcul d'un squelette, il ne faut pas supprimer un cache ajax d'un squelette en cache, ou être capable de le reconstituer à la volée.
Mais disons qu'en l'état, ça doit marcher sans soucis dans la plupart des cas.