diff --git a/ecrire/inc/filtres.php b/ecrire/inc/filtres.php
index e2b1c63cb738ac8fa099a11af96113fccf1ed4b4..e24e47bb285bb4e6fce91a41bb8166d4c551c1ea 100644
--- a/ecrire/inc/filtres.php
+++ b/ecrire/inc/filtres.php
@@ -3677,10 +3677,10 @@ function encoder_contexte_ajax($c, $form = '', $emboite = null, $ajaxid = '') {
 	$cle = calculer_cle_action($form . $c);
 	$c = "$cle:$c";
 
-	// on ne stocke pas les contextes dans des fichiers caches
-	// par defaut, sauf si cette configuration a ete forcee
-	// OU que la longueur de l''argument generee est plus long
-	// que ce que telere Suhosin.
+	// on ne stocke pas les contextes dans des fichiers en cache
+	// par defaut, sauf si cette configuration a été forcée
+	// OU que la longueur de l’argument géneré est plus long
+	// que ce qui est toléré.
 	$cache_contextes_ajax = (defined('_CACHE_CONTEXTES_AJAX') and _CACHE_CONTEXTES_AJAX);
 	if (!$cache_contextes_ajax) {
 		$env = $c;
@@ -3694,9 +3694,20 @@ function encoder_contexte_ajax($c, $form = '', $emboite = null, $ajaxid = '') {
 		}
 		$env = _xor($env);
 		$env = base64_encode($env);
-		// tester Suhosin et la valeur maximale des variables en GET...
-		if ($max_len = @ini_get('suhosin.get.max_value_length')
-			and $max_len < ($len = strlen($env))
+		$len = strlen($env);
+		// Si l’url est trop longue pour le navigateur
+		$max_len = _CACHE_CONTEXTES_AJAX_SUR_LONGUEUR;
+		if ($len > $max_len) {
+			$cache_contextes_ajax = true;
+			spip_log("Contextes AJAX forces en fichiers !"
+				. " Cela arrive lorsque la valeur du contexte" 
+				. " depasse la longueur maximale autorisee ($max_len). Ici : $len."
+				, _LOG_AVERTISSEMENT);
+		}
+		// Sinon si Suhosin est actif et a une la valeur maximale des variables en GET...
+		elseif (
+			$max_len = @ini_get('suhosin.get.max_value_length')
+			and $max_len < $len
 		) {
 			$cache_contextes_ajax = true;
 			spip_log("Contextes AJAX forces en fichiers !"
@@ -3705,7 +3716,8 @@ function encoder_contexte_ajax($c, $form = '', $emboite = null, $ajaxid = '') {
 				. " ($max_len) dans 'suhosin.get.max_value_length'. Ici : $len."
 				. " Vous devriez modifier les parametres de Suhosin"
 				. " pour accepter au moins 1024 caracteres.", _LOG_AVERTISSEMENT);
-		}
+		} 
+
 	}
 
 	if ($cache_contextes_ajax) {
diff --git a/ecrire/inc_version.php b/ecrire/inc_version.php
index fa60c2e73f918aaa2f19a3f3f3cd85bf3d77f9d0..95e3126b7b93e0724973617d7137ae9a4bfaace9 100644
--- a/ecrire/inc_version.php
+++ b/ecrire/inc_version.php
@@ -468,6 +468,13 @@ if (!defined('_OUTILS_DEVELOPPEURS')) {
 	define('_OUTILS_DEVELOPPEURS', false);
 }
 
+if (!defined('_CACHE_CONTEXTES_AJAX_SUR_LONGUEUR')) {
+	/** 
+	 * Basculer les contextes ajax en fichier si la longueur d’url est trop grande 
+	 * @var int Nombre de caractères */
+	define('_CACHE_CONTEXTES_AJAX_SUR_LONGUEUR', 2000);
+}
+
 // charger systematiquement inc/autoriser dans l'espace restreint
 if (test_espace_prive()) {
 	include_spip('inc/autoriser');