diff --git a/inclure-ajaxload.php b/inclure-ajaxload.php
index 58bcc892832fe202b1b1afb9b89864f8a797ab04..ec3a36f9db21a325dcdd6a381e2846909c6dae74 100644
--- a/inclure-ajaxload.php
+++ b/inclure-ajaxload.php
@@ -2,6 +2,11 @@
 
 if (!defined("_ECRIRE_INC_VERSION")) return;
 
+// Par defaut, cache de 2 heures pour l'ajax statique
+// possibilité de forcer une duree avec le critere {ttl_ajaxload=60*60*24}
+if(!defined("_DUREE_CACHE_AJAXSTATIC")) define("_DUREE_CACHE_AJAXSTATIC", 7200);
+
+
 // Evolution de #INCLURE pour inclusions ajaxload
 // #INCLURE{fond=xxx,....ajax,ajaxload} le fait
 function balise_INCLURE($p) {
@@ -20,10 +25,6 @@ function recuperer_fond_ajax() {
 
 	$args[1]["fond"] = $args[0];
 
-	if (_request('var_no_ajax')
-	OR _request('var_mode') == 'inclure')
-		return call_user_func_array('recuperer_fond', $args);
-
 	$cle = md5(serialize($args));
 	$ajax = entites_html(encoder_contexte_ajax($args[1]));
 	
@@ -32,16 +33,54 @@ function recuperer_fond_ajax() {
 	$message = $args[1]['ajaxload'];
 	$searching = sinon($args[1]['ajaxsearching'],
 		"<img src='".find_in_path('images/searching.gif')."' alt='$alt' />");
-
 	// Le lien mène à l'action de pose du cookie no_js
 	$url = "spip.php?action=ia_nojs&amp;retour=".urlencode(parametre_url(self(),'no_js','oui'));
 
 	if (isset($args[2]['ajax']) AND $args[2]['ajax']=='1') 
 		$class_ajax = " ajaxbloc env-$ajax";
 
-	$ret =
-		"<div class='includeajax$class_ajax'><a href=\"$url\" rel=\"$ajax\">$searching</a></div>";
+	// Appliquer la methode: 
+	// - soit laisser les automatismes Ajax de SPIP,
+	// - soit sauvergarder "en dur" le resultat HTML
+	$methode = $args[1]["ajaxload"];
+	if ($methode == "html") {
+		
+		$fichier = sous_repertoire(_DIR_VAR, 'cache-ajaxload').$cle.".html";
+		
+		$ttl = _DUREE_CACHE_AJAXSTATIC;
+		if ($args[1]['ttl_ajaxload']) $ttl = valeur_numerique($args[1]['ttl_ajaxload']);
+		
+		// Test sur le fichier
+		if (!file_exists($fichier) || _request('var_mode') == "recalcul"
+				|| (file_exists($fichier) && date("U") - @filemtime($fichier) > $ttl)
+			){
+			//echo "RECALCULER";
+			$contenu = call_user_func_array('recuperer_fond', $args);
+			ecrire_fichier($fichier, $contenu);
+			// ecrire une version .gz pour content-negociation par apache, cf. [11539]
+			// ecrire_fichier("$fichier.gz",$contenu, true);
+
+		}
+		
+		if (_request('var_no_ajax')
+		OR _request('var_mode') == 'inclure')
+			return $contenu;
+
+		$ret =
+			"<div class='includestatic$class_ajax'><a href=\"$url\" rel=\"$fichier\">$searching</a></div>";
 		
+		
+		//print_r($contenu);
+	
+	} else {
+		if (_request('var_no_ajax')
+		OR _request('var_mode') == 'inclure')
+			return call_user_func_array('recuperer_fond', $args);
+	
+		$ret =
+			"<div class='includeajax$class_ajax'><a href=\"$url\" rel=\"$ajax\">$searching</a></div>";
+	}
+	
 	return $ret;
 }
 
@@ -55,6 +94,14 @@ function remettre_fond_ajax($matches) {
 	return $page;
 }
 
+function remettre_fond_ajax_static($matches) {
+	$url = $matches[3];
+	if (file_exists($url)) $page = join("", @file($url));
+	else $page = "";
+	
+	return $page;
+}
+
 function INCLUREAJAXLOAD_affichage_final($page) {
 
 	// Si le visiteur est un robot de moteur de recherche,
@@ -63,6 +110,7 @@ function INCLUREAJAXLOAD_affichage_final($page) {
 		include_spip("inc/filtres");
 		include_spip("public/assembler");
 		$page = preg_replace_callback(",(<div class='includeajax[^\']*'><a href=\"(.*)\" rel=\"(.*)\">.*</a></div>),msU", "remettre_fond_ajax", $page);
+		$page = preg_replace_callback(",(<div class='includestatic[^\']*'><a href=\"(.*)\" rel=\"(.*)\">.*</a></div>),msU", "remettre_fond_ajax_static", $page);
 	}
 
 	return $page;
diff --git a/javascript/inclure-ajaxload.js b/javascript/inclure-ajaxload.js
index bb62dc6544c92d983c866e0acea8638e3697fb3e..7c0c01b8b24aeb75e3a263c878b35bf93fd0a622 100644
--- a/javascript/inclure-ajaxload.js
+++ b/javascript/inclure-ajaxload.js
@@ -13,4 +13,17 @@ $(document).ready(function() {
 			});
 		}
 	});
+	$('.includestatic').each(function() {
+		var me = $(this);
+		var env = $('a', this).attr('rel');
+		if (env) {
+			$('a', this).attr('href','#');
+			$.ajax({
+				url: env,
+				type: "GET",
+				cache: true,
+				success: function(c) { me.html(c); }
+			});
+		}
+	});
 });
\ No newline at end of file
diff --git a/plugin.xml b/plugin.xml
index d2c2bf97653c61710ad1a22a666438d72aa36f36..b0bd6e27c536de4cd7202b76077f1193c1d945ef 100644
--- a/plugin.xml
+++ b/plugin.xml
@@ -1,18 +1,23 @@
 <plugin>
 	<nom>AjaxLoad pour #INCLURE</nom>
 	<auteur>
-	Fil &#169; 2009 - GNU/GPL
+	Fil &amp; ARNO* &#169; 2009 - GNU/GPL
 	</auteur>
 	<version>
-	0.65
+	0.7
 	</version>
 	<etat>
 	test
 	</etat>
 	<description>
-	Ajoute une option <code>{ajaxload}</code> &agrave; la balise <code>#INCLURE</code>
+	Ajoute une option <code>{ajaxload}</code> &agrave; la balise <code>#INCLURE</code>. 
+	La noisette n'est alors pas incluse, mais charg&eacute;e dynamiquement en Ajax au chargement de la page.
+
+	Autre m&eacute;thode: <code>{ajaxload=html}</code> fabrique une noisette statique (en HTML non dynamique) 
+	dans <code>/local/cache-ajaxload</code>, son appel se faisant ainsi hors SPIP. 
+	Le cache n'est donc plus g&eacute;r&eacute; par le <code>#CACHE</code> de SPIP; il est par d&eacute;faut de 2 heures, on peut le forcer
+	en ajoutant le crit&egrave;re <code>{ttl_ajaxload=60*60*24}</code>.
 
-	Ce qui permet de diff&eacute;rer le calcul du truc inclus sur un deuxi&egrave;me hit
 	</description>
 	<prefix>
 	INCLUREAJAXLOAD
@@ -25,6 +30,6 @@
 		<nom>insert_head</nom>
 	</pipeline>
 	<chemin dir='' />
-	<necessite id="SPIP" version="[2.0.0;]" />
+	<necessite id="SPIP" version="[2.1.0;]" />
 	<categorie>outil</categorie>
 </plugin>