diff --git a/ecrire/inc/distant.php b/ecrire/inc/distant.php
index 10650d167c63ffd36ad12a866900c4c6571ad6c5..c3c8eb8cbeb37d718062f93515ed7f3d76da6c5d 100644
--- a/ecrire/inc/distant.php
+++ b/ecrire/inc/distant.php
@@ -420,8 +420,18 @@ function fichier_copie_locale($source) {
 		if (file_exists(_DIR_RACINE  . $f))
 		  return $f;
 	}
+
 	// Ping  pour voir si son extension est connue et autorisee
-	$path_parts = recuperer_infos_distantes($source,0,false) ;
+	// avec mise en cache du resultat du ping
+
+	$cache = sous_repertoire(_DIR_CACHE,'rid').md5($source);
+	if (!@file_exists($cache)
+	OR !$path_parts = @unserialize(spip_file_get_contents($cache))
+	OR _request('var_mode') == 'recalcul'
+	) {
+		$path_parts = recuperer_infos_distantes($source,0,false) ;
+		ecrire_fichier($cache, serialize($path_parts));
+	}
 	$ext = $path_parts ? $path_parts['extension'] : '';
 	if ($ext AND sql_getfetsel("extension", "spip_types_documents", "extension=".sql_quote($ext))) {
 		return nom_fichier_copie_locale($source, $ext);