diff --git a/ecrire/inc_charsets.php b/ecrire/inc_charsets.php
index ed4e81789afe724bc3dbd1cfc08e1545e7aa2192..1e8213f0ac772a9c4a15646c08030649e67ea8d4 100644
--- a/ecrire/inc_charsets.php
+++ b/ecrire/inc_charsets.php
@@ -40,7 +40,7 @@ function load_charset ($charset = 'AUTO', $langue_site = 'AUTO') {
 	else if ($charset == 'windows-1251') $charset = 'cp1251';
 	else if ($charset == 'windows-1256') $charset = 'cp1256';
 
-	if (@file_exists($f = _DIR_RESTREINT.'charsets/'.$charset.'.php')) {
+	if ($f = find_in_path('charsets/'.$charset.'.php')) {
 		include($f);
 		return $charset;
 	} else {
diff --git a/ecrire/inc_layer.php b/ecrire/inc_layer.php
index 57751b02317b9e5ffa1dc23f5acad1b37723c570..a538ed62fe00e266d307e95b4d6f72470668a79a 100644
--- a/ecrire/inc_layer.php
+++ b/ecrire/inc_layer.php
@@ -120,24 +120,24 @@ function verif_butineur() {
 		eregi("Opera ([^\ ]*)", $browser_description, $match);
 		$browser_name = "Opera";
 		$browser_version = $match[1];
-		$browser_layer = (($browser_version < 7) ? '' :  http_script('', _DIR_INCLUDE . 'layer.js',''));
+		$browser_layer = (($browser_version < 7) ? '' :  http_script('', _DIR_RESTREINT . 'layer.js',''));
 		$browser_barre = ($browser_version >= 8.5); 
 	}
 	else if (eregi("msie", $browser_description)) {
 		eregi("MSIE ([^;]*)", $browser_description, $match);
 		$browser_name = "MSIE";
 		$browser_version = $match[1];
-		$browser_layer = (($browser_version < 5) ? '' :  http_script('', _DIR_INCLUDE . 'layer.js',''));
+		$browser_layer = (($browser_version < 5) ? '' :  http_script('', _DIR_RESTREINT . 'layer.js',''));
 		$browser_barre = ($browser_version >= 5.5);
 	}
 	else if (eregi("KHTML", $browser_description) &&
 		eregi("Safari/([^;]*)", $browser_description, $match)) {
 		$browser_name = "Safari";
 		$browser_version = $match[1];
-		$browser_layer = http_script('', _DIR_INCLUDE . 'layer.js','');
+		$browser_layer = http_script('', _DIR_RESTREINT . 'layer.js','');
 	}
 	else if (eregi("mozilla", $browser_name) AND $browser_version >= 5) {
-		$browser_layer = http_script('', _DIR_INCLUDE . 'layer.js','');
+		$browser_layer = http_script('', _DIR_RESTREINT . 'layer.js','');
 		// Numero de version pour Mozilla "authentique"
 		if (ereg("rv:([0-9]+\.[0-9]+)", $browser_description, $match))
 			$browser_rev = doubleval($match[1]);
diff --git a/inc-cache.php3 b/inc-cache.php3
index 199bbfa3e59f5fc0d69a8a8b01b174a040ad5252..18c6c273b521a145fc1825c6d1ace33812b32248 100644
--- a/inc-cache.php3
+++ b/inc-cache.php3
@@ -63,7 +63,7 @@ function generer_nom_fichier_cache($contexte, $fond) {
 // Securite : est sur que c'est un cache
 function retire_cache($cache) {
 
-	if (preg_match('|^' . _DIR_CACHE .
+	if (preg_match('|^' . preg_quote(_DIR_CACHE) .
 		"([0-9a-f]/)?([0-9]+/)?[^.][\-_\%0-9a-z]+\.[0-9a-f]+(\.gz)?$|i",
 		       $cache)) {
 		// supprimer le fichier (de facon propre)
@@ -140,8 +140,11 @@ function cache_valide_autodetermine($chemin_cache, $page, $date) {
 
 	if (!$page) return 1;
 
+var_dump($page['entetes']);
+echo " - $chemin_cache - ";
+
 	if (strlen($duree = $page['entetes']['X-Spip-Cache']))
-		return ($date + $duree > time()) ? 0 : $t;
+		return ($date + intval($duree) > time()) ? 0 : $t;
 
 	// squelette ancienne maniere, on se rabat sur le vieux modele
 	return cache_valide($chemin_cache, $contenu, $date);
@@ -218,12 +221,10 @@ function creer_cache(&$page, $chemin_cache, $duree) {
 	// Entrer dans la base les invalideurs calcules par le compilateur
 	// (et supprimer les anciens)
 
-  // arbitrage entre ancien et nouveau modele de delai:
-  // primaute a la duree de vie de la page donnee a l'interieur de la page 
-	if (preg_match('/max-age\s*=\s*(\d+)/', 
-		       $page['entetes']['Cache-Control'],
-		       $r)) 
-	  $duree = $r[1];
+	// arbitrage entre ancien et nouveau modele de delai:
+	// primaute a la duree de vie de la page donnee a l'interieur de la page 
+	if (strlen($t = $page['entetes']['X-Spip-Cache']))
+		$duree = intval($t);
 
 	include_ecrire('inc_invalideur');
 	maj_invalideurs($chemin_cache, $page['invalideurs'], $duree);